From b4a4639f2ed05c02b9061d9febddf8339bc1fe26 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 21 May 2021 17:25:01 -0700 Subject: Refactor footer component, Add key --- src/components/moments/TagFriendsFoooter.tsx | 132 +++++++++++++++++++++++++++ src/components/moments/index.ts | 1 + 2 files changed, 133 insertions(+) create mode 100644 src/components/moments/TagFriendsFoooter.tsx (limited to 'src/components') diff --git a/src/components/moments/TagFriendsFoooter.tsx b/src/components/moments/TagFriendsFoooter.tsx new file mode 100644 index 00000000..6b8fc62a --- /dev/null +++ b/src/components/moments/TagFriendsFoooter.tsx @@ -0,0 +1,132 @@ +import {useNavigation} from '@react-navigation/native'; +import React, {Dispatch, SetStateAction} from 'react'; +import {Image, StyleSheet, Text, TouchableOpacity, View} from 'react-native'; +import {ProfilePreview} from '..'; +import {ProfilePreviewType, ScreenType} from '../../types'; +import {normalize} from '../../utils/layouts'; + +interface TagFriendsFooterProps { + taggedUsers: ProfilePreviewType[]; + setTaggedUsers: Dispatch>; +} +const TagFriendsFooter: React.FC = ({ + taggedUsers, + setTaggedUsers, +}) => { + const navigation = useNavigation(); + + const handleRemoveTag = (user: ProfilePreviewType) => { + const filteredSelection = taggedUsers.filter((item) => user.id !== item.id); + setTaggedUsers(filteredSelection); + }; + + const TaggMoreButton = () => ( + + navigation.navigate('TagSelectionScreen', { + selectedUsers: taggedUsers, + }) + } + style={{ + flexDirection: 'column', + alignItems: 'center', + }}> + + {'Tagg More'} + + ); + + const TaggedUser = (user: ProfilePreviewType) => ( + + handleRemoveTag(user)}> + + + + + ); + + /* + * Title/Button depending on the number of users inside taggedUsers list + * If taggUsers is empty, title acts as a button + * Else, gets disabled and TaggMore button appears + */ + const TagFriendsTitle = () => ( + + navigation.navigate('TagSelectionScreen', { + selectedUsers: taggedUsers, + }) + }> + + Tag Friends + + ); + + return ( + <> + + + {taggedUsers.map((user) => ( + + ))} + {taggedUsers.length !== 0 && } + + + ); +}; + +const styles = StyleSheet.create({ + tagIcon: {width: 20, height: 20, marginRight: '3%'}, + tagFriendsTitle: { + color: 'white', + fontSize: normalize(12), + lineHeight: normalize(16.71), + letterSpacing: normalize(0.3), + fontWeight: '600', + }, + tagFriendsContainer: { + flexDirection: 'row', + marginTop: '3%', + flexWrap: 'wrap', + justifyContent: 'flex-start', + }, + taggMoreLabel: { + fontWeight: '500', + fontSize: normalize(9), + lineHeight: normalize(10), + letterSpacing: normalize(0.2), + color: 'white', + textAlign: 'center', + marginVertical: '5%', + }, + closeIconContainer: { + width: 20, + height: 20, + right: -20, + zIndex: 1, + }, +}); + +export default TagFriendsFooter; diff --git a/src/components/moments/index.ts b/src/components/moments/index.ts index 89fd689c..6af29bc5 100644 --- a/src/components/moments/index.ts +++ b/src/components/moments/index.ts @@ -3,3 +3,4 @@ export {default as CaptionScreenHeader} from './CaptionScreenHeader'; export {default as MomentPostHeader} from './MomentPostHeader'; export {default as MomentPostContent} from './MomentPostContent'; export {default as Moment} from './Moment'; +export {default as TagFriendsFooter} from './TagFriendsFoooter'; -- cgit v1.2.3-70-g09d2