From 3993175a466d4273373591a765bfc2f6a6e89ef4 Mon Sep 17 00:00:00 2001 From: ankit-thanekar007 Date: Tue, 20 Apr 2021 15:23:32 -0700 Subject: TMA-794, On press view and popup styling and partial functionality --- src/components/common/BadgeDetailView.tsx | 231 ++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) create mode 100644 src/components/common/BadgeDetailView.tsx (limited to 'src/components/common') diff --git a/src/components/common/BadgeDetailView.tsx b/src/components/common/BadgeDetailView.tsx new file mode 100644 index 00000000..1dc50c32 --- /dev/null +++ b/src/components/common/BadgeDetailView.tsx @@ -0,0 +1,231 @@ +import {useNavigation} from '@react-navigation/core'; +import React, {useState} from 'react'; +import {FlatList, Image, Modal, StyleSheet, Text, View} from 'react-native'; +import {TouchableOpacity} from 'react-native-gesture-handler'; +import LinearGradient from 'react-native-linear-gradient'; +import {BADGE_GRADIENT_FIRST} from '../../constants'; +import CloseIcon from '../../assets/ionicons/close-outline.svg'; +import {UniversityBadge, UniversityType} from '../../types'; +import {getUniversityBadge, normalize} from '../../utils'; +import {removeBadgesService} from '../../services'; +import {useSelector} from 'react-redux'; +import {RootState} from '../../store/rootreducer'; + +interface BadgeDetailModalProps { + isEditable: boolean; + setBadgeViewVisible: Function; + selectedBadges: UniversityBadge[]; + name?: string; + userId: string; +} + +const BadgeDetailView: React.FC = ({ + name, + isEditable = true, + setBadgeViewVisible, + selectedBadges, +}) => { + const navigation = useNavigation(); + const [removableBadges, setRemovableBadges] = useState([]); + + const { + user: {userId = ''}, + } = useSelector((state: RootState) => state.user); + + const removeBadgeCell = async () => { + await removeBadgesService(removableBadges, userId); + }; + + const badgeEditCell = ({item: {id, name, badgeImage}}) => { + return ( + { + setBadgeViewVisible(false); + navigation.navigate('MutualBadgeHolders', { + badge_id: id, + badge_title: name, + badge_img: badgeImage, + }); + }}> + + + + + {isEditable && ( + { + selectedBadges = selectedBadges.filter((b) => b.id === id); + const obj = {id, name}; + removableBadges.push(obj); + removeBadgeCell(); + }}> + + + )} + + + {name} + + + ); + }; + + const addButton = () => { + return ( + { + setBadgeViewVisible(false); + navigation.navigate('BadgeSelection', {editing: true}); + }} + style={styles.addButtonStyles}> + Add Badges + + ); + }; + + const modalHeader = () => { + const heading = isEditable ? 'Edit your badges!' : name; + const subheading = isEditable + ? 'Add or delete your badges' + : 'View badges to discover groups!'; + return ( + + {heading} + {subheading} + + ); + }; + + return ( + + + + + setBadgeViewVisible(false)}> + + + + + + + {modalHeader()} + + item.id.toString()} + /> + + {isEditable && addButton()} + + + + ); +}; + +const styles = StyleSheet.create({ + badgeCellContainerStyles: { + alignItems: 'center', + justifyContent: 'center', + paddingVertical: 10, + }, + badgeCellImageContainerStyles: { + flexDirection: 'row', + marginLeft: 25, + }, + badgeCellImageNoEditContainerStyles: { + flexDirection: 'row', + marginHorizontal: 25, + }, + badgeCellImageStyles: { + borderRadius: 50, + }, + badgeCellTextStyles: { + fontWeight: '600', + fontSize: normalize(12), + lineHeight: normalize(16), + textAlign: 'center', + }, + addButtonStyles: { + height: 40, + borderRadius: 5, + marginBottom: 45, + width: '40%', + marginTop: 14, + alignItems: 'center', + justifyContent: 'center', + alignSelf: 'center', + backgroundColor: '#698DD3', + }, + addButtonTextStyles: {color: 'white'}, + modalHeadingStyles: { + fontWeight: '600', + fontSize: normalize(17), + lineHeight: normalize(20.29), + textAlign: 'center', + }, + modalSubheadingStyles: { + fontWeight: '600', + fontSize: normalize(11), + lineHeight: normalize(15), + textAlign: 'center', + color: '#828282', + }, + modalUpperContainerStyles: { + flexDirection: 'row', + alignItems: 'flex-start', + }, + modalImageContainerStyles: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + modalImageStyles: {left: -15, top: -30}, + modalListStyles: { + alignSelf: 'center', + marginVertical: 35, + }, + viewWrapper: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + backgroundColor: 'rgba(0, 0, 0, 0.2)', + }, + modalView: { + width: '95%', + backgroundColor: '#fff', + borderRadius: 7, + }, +}); + +export default BadgeDetailView; -- cgit v1.2.3-70-g09d2