From 3a585b1bee36168fb2f33ae889bc5f207f25f793 Mon Sep 17 00:00:00 2001 From: George Rusu Date: Tue, 18 May 2021 14:13:40 -0700 Subject: add draggable component for tagging --- src/assets/images/tagg-rectangle.png | Bin 0 -> 521 bytes src/assets/images/tagg-tip.png | Bin 0 -> 233 bytes src/assets/images/tagg-x-button.png | Bin 0 -> 549 bytes src/components/taggs/TaggDraggable.tsx | 144 +++++++++++++++++++++++++++++++++ src/types/types.ts | 1 + 5 files changed, 145 insertions(+) create mode 100644 src/assets/images/tagg-rectangle.png create mode 100644 src/assets/images/tagg-tip.png create mode 100644 src/assets/images/tagg-x-button.png create mode 100644 src/components/taggs/TaggDraggable.tsx (limited to 'src') diff --git a/src/assets/images/tagg-rectangle.png b/src/assets/images/tagg-rectangle.png new file mode 100644 index 00000000..24bfd67e Binary files /dev/null and b/src/assets/images/tagg-rectangle.png differ diff --git a/src/assets/images/tagg-tip.png b/src/assets/images/tagg-tip.png new file mode 100644 index 00000000..eb3c5bad Binary files /dev/null and b/src/assets/images/tagg-tip.png differ diff --git a/src/assets/images/tagg-x-button.png b/src/assets/images/tagg-x-button.png new file mode 100644 index 00000000..5ce3846d Binary files /dev/null and b/src/assets/images/tagg-x-button.png differ diff --git a/src/components/taggs/TaggDraggable.tsx b/src/components/taggs/TaggDraggable.tsx new file mode 100644 index 00000000..0990d924 --- /dev/null +++ b/src/components/taggs/TaggDraggable.tsx @@ -0,0 +1,144 @@ +import {useNavigation} from '@react-navigation/native'; +import React, {useState} from 'react'; +import {Image, StyleSheet, Text, TouchableOpacity, View} from 'react-native'; +import Draggable from 'react-native-draggable'; +import {ScreenType} from 'src/types'; +import {normalize, SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils'; +import TaggAvatar from '../profile/TaggAvatar'; + +interface TaggDraggableProps { + draggable?: boolean; + minX: number; + minY: number; + maxX: number; + maxY: number; + taggedUser: string; + redirect: boolean; + deleteFromList: Function; +} + +const TaggDraggable: React.FC = (props) => { + const [xCoord, setXcoord] = useState(SCREEN_HEIGHT / 2); + const [yCoord, setYcoord] = useState(SCREEN_WIDTH / 2); + const navigation = useNavigation(); + const { + draggable, + minX, + minY, + maxX, + maxY, + taggedUser, + redirect, + deleteFromList, + } = props; + let uriTip = require('../../assets/images/tagg-tip.png'); + let uriX = require('../../assets/images/tagg-x-button.png'); + + // + + /** + * This function returns x,y pairing for each tagg. + */ + const getCoords = () => { + return [xCoord, yCoord]; + }; + const renderTagg = () => { + + {/* user profile pic */} + + + {/* @username */} + + {taggedUser} + + {/* x button */} + + deleteFromList()}> + + + + ; + }; + if (redirect) { + if (draggable) { + return ( + + { + setXcoord(gestureState.moveX); + setYcoord(gestureState.moveY); + }}> + + + {taggedUser} + + deleteFromList()}> + + + + + + {taggedUser} + + deleteFromList()}> + + + + + ); + } else { + renderTagg; + } + } else { + } +}; + +const styles = StyleSheet.create({ + container: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + height: normalize(42), + marginBottom: '5%', + }, + bodyContainer: { + flexDirection: 'column', + height: normalize(42), + justifyContent: 'space-around', + }, + inviteButton: { + backgroundColor: 'transparent', + }, + imageRectangle: { + width: '100%', + height: '100%', + backgroundColor: 'black', + borderWidth: 2, + borderRadius: 2, + }, + imageTip: { + backgroundColor: 'black', + }, + imageX: { + width: '100%', + height: '100%', + }, +}); + +export default TaggDraggable; diff --git a/src/types/types.ts b/src/types/types.ts index e9975529..5aae9a6d 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -150,6 +150,7 @@ export enum ScreenType { Notifications, SuggestedPeople, Chat, + Tagging, } /** -- cgit v1.2.3-70-g09d2