From 4e5cbb088e20fc568d9b961685968ee8d1bdb02b Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Wed, 10 Mar 2021 17:22:16 -0500 Subject: renamed param, finished initial routing --- src/routes/main/MainStackNavigator.tsx | 5 ++++- src/routes/main/MainStackScreen.tsx | 10 +++++++++- .../SuggestedPeopleOnboardingStackNavigator.tsx | 10 +++++----- .../SuggestedPeopleOnboardingStackScreen.tsx | 3 ++- 4 files changed, 20 insertions(+), 8 deletions(-) (limited to 'src/routes') diff --git a/src/routes/main/MainStackNavigator.tsx b/src/routes/main/MainStackNavigator.tsx index 10b8ec3d..69234c5f 100644 --- a/src/routes/main/MainStackNavigator.tsx +++ b/src/routes/main/MainStackNavigator.tsx @@ -75,7 +75,10 @@ export type MainStackParams = { screenType: ScreenType; }; UpdateSPPicture: { - goTo: string; + editing: boolean; + }; + BadgeSelection: { + editing: boolean; }; MutualBadgeHolders: { badge_id: string; diff --git a/src/routes/main/MainStackScreen.tsx b/src/routes/main/MainStackScreen.tsx index 91f41fe4..068748b1 100644 --- a/src/routes/main/MainStackScreen.tsx +++ b/src/routes/main/MainStackScreen.tsx @@ -230,7 +230,15 @@ const MainStackScreen: React.FC = ({route}) => { + (); +export const SuggestedPeopleOnboardingStack = createStackNavigator(); diff --git a/src/routes/suggestedPeopleOnboarding/SuggestedPeopleOnboardingStackScreen.tsx b/src/routes/suggestedPeopleOnboarding/SuggestedPeopleOnboardingStackScreen.tsx index d1a6e5e1..a02e8373 100644 --- a/src/routes/suggestedPeopleOnboarding/SuggestedPeopleOnboardingStackScreen.tsx +++ b/src/routes/suggestedPeopleOnboarding/SuggestedPeopleOnboardingStackScreen.tsx @@ -26,7 +26,7 @@ const SuggestedPeopleOnboardingStackScreen: React.FC = () => { { Date: Thu, 11 Mar 2021 08:15:08 -0800 Subject: Added selectedBadges route prop --- src/routes/main/MainStackNavigator.tsx | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/routes') diff --git a/src/routes/main/MainStackNavigator.tsx b/src/routes/main/MainStackNavigator.tsx index 69234c5f..22819824 100644 --- a/src/routes/main/MainStackNavigator.tsx +++ b/src/routes/main/MainStackNavigator.tsx @@ -8,6 +8,7 @@ import { MomentType, ScreenType, SearchCategoryType, + UniversityBadge, UserType, } from '../../types'; @@ -79,6 +80,7 @@ export type MainStackParams = { }; BadgeSelection: { editing: boolean; + selectedBadges: UniversityBadge[]; }; MutualBadgeHolders: { badge_id: string; -- cgit v1.2.3-70-g09d2 From f399478fb2fe460ead185b0da7769faed8a8c515 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 12 Mar 2021 08:42:46 -0800 Subject: done --- src/components/profile/ProfileMoreInfoDrawer.tsx | 6 ++- src/routes/main/MainStackNavigator.tsx | 3 +- src/screens/badge/BadgeSelection.tsx | 47 ++++++++-------------- .../SuggestedPeopleUploadPictureScreen.tsx | 43 +++++++++++++++++--- 4 files changed, 61 insertions(+), 38 deletions(-) (limited to 'src/routes') diff --git a/src/components/profile/ProfileMoreInfoDrawer.tsx b/src/components/profile/ProfileMoreInfoDrawer.tsx index 90f5da48..d8f91abe 100644 --- a/src/components/profile/ProfileMoreInfoDrawer.tsx +++ b/src/components/profile/ProfileMoreInfoDrawer.tsx @@ -42,7 +42,11 @@ const ProfileMoreInfoDrawer: React.FC = (props) => { if (suggested_people_linked === 0) { Alert.alert(ERROR_ATTEMPT_EDIT_SP); } else { - navigation.push('UpdateSPPicture'); + // Sending undefined for updatedSelectedBadges to mark that there was no update yet + navigation.push('UpdateSPPicture', { + editing: true, + updatedSelectedBadges: undefined, + }); setIsOpen(false); } }; diff --git a/src/routes/main/MainStackNavigator.tsx b/src/routes/main/MainStackNavigator.tsx index 22819824..6992f83f 100644 --- a/src/routes/main/MainStackNavigator.tsx +++ b/src/routes/main/MainStackNavigator.tsx @@ -77,10 +77,11 @@ export type MainStackParams = { }; UpdateSPPicture: { editing: boolean; + updatedSelectedBadges: string[] | undefined; }; BadgeSelection: { editing: boolean; - selectedBadges: UniversityBadge[]; + prevSelectedBadges: string[]; }; MutualBadgeHolders: { badge_id: string; diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index ba2e6af4..a67206c4 100644 --- a/src/screens/badge/BadgeSelection.tsx +++ b/src/screens/badge/BadgeSelection.tsx @@ -1,5 +1,4 @@ import {RouteProp} from '@react-navigation/core'; -import {StackNavigationProp} from '@react-navigation/stack'; import React, {useEffect, useState} from 'react'; import {Alert, SafeAreaView, StatusBar, StyleSheet, View} from 'react-native'; import {Text} from 'react-native-animatable'; @@ -12,33 +11,32 @@ import {BACKGROUND_GRADIENT_MAP} from '../../constants'; import {BADGE_DATA} from '../../constants/badges'; import {ERROR_BADGES_EXCEED_LIMIT} from '../../constants/strings'; import {suggestedPeopleBadgesFinished} from '../../store/actions'; -import {BackgroundGradientType, UniversityBadge} from '../../types'; +import {BackgroundGradientType} from '../../types'; import {SCREEN_HEIGHT, StatusBarHeight} from '../../utils'; import BadgeList from './BadgeList'; import BadgeScreenHeader from './BadgeScreenHeader'; +import {useNavigation} from '@react-navigation/native'; /** * Home Screen for displaying Tagg Badge Selections **/ -type BadgeSelectionParamList = { - BadgeList: any[]; -}; - -type BadgeSelectionScreenNavigationProp = StackNavigationProp< - BadgeSelectionParamList, - 'BadgeList' ->; - type BadgeSelectionRouteProp = RouteProp; type BadgeSelectionProps = { - navigation: BadgeSelectionScreenNavigationProp; - route?: BadgeSelectionRouteProp; + route: BadgeSelectionRouteProp; }; -const BadgeSelection: React.FC = ({navigation, route}) => { +const BadgeSelection: React.FC = ({route}) => { + const prevSelectedBadges = route.params.prevSelectedBadges; + const [selectedBadges, setSelectedBadges] = useState([]); const dispatch = useDispatch(); + const navigation = useNavigation(); + + useEffect(() => { + setSelectedBadges(prevSelectedBadges); + }, [prevSelectedBadges]); + navigation.setOptions({ headerRight: () => ( = ({navigation, route}) => { onPress={async () => { if (route?.params.editing) { updateBadgesService(selectedBadges); - navigation.goBack(); + navigation.navigate('UpdateSPPicture', { + editing: true, + updatedSelectedBadges: selectedBadges, + }); } else { if (selectedBadges.length !== 0) { const success = await addBadgesService(selectedBadges); @@ -67,22 +68,6 @@ const BadgeSelection: React.FC = ({navigation, route}) => { ), }); - const [selectedBadges, setSelectedBadges] = useState([]); - - // Get list of badges from the backend and display here - useEffect(() => { - const extractBadgeNames = (badges: UniversityBadge[]) => { - let extractedBadgeNames: string[] = []; - badges.forEach((badge) => { - extractedBadgeNames.push(badge.name); - }); - setSelectedBadges(extractedBadgeNames); - }; - if (route && route.params.selectedBadges) { - extractBadgeNames(route.params.selectedBadges); - } - }, []); - const selectKey = (key: string) => { if (selectedBadges.includes(key)) { const selectedBadgesArray = [...selectedBadges]; diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index c5a4ce61..edab2865 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -1,4 +1,4 @@ -import {useNavigation} from '@react-navigation/native'; +import {RouteProp, useNavigation} from '@react-navigation/native'; import React, {useEffect, useState} from 'react'; import { Alert, @@ -26,12 +26,27 @@ import {uploadedSuggestedPeoplePhoto} from '../../store/actions'; import {RootState} from '../../store/rootReducer'; import {normalize, SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils'; import FrontArrow from '../../assets/icons/front-arrow.svg'; +import {MainStackParams} from 'src/routes'; -const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { - const {editing} = route.params; +type SuggestedPeopleUploadPictureScreenRouteProp = RouteProp< + MainStackParams, + 'UpdateSPPicture' +>; + +type SuggestedPeopleUploadPictureScreenProps = { + route: SuggestedPeopleUploadPictureScreenRouteProp; +}; + +const SuggestedPeopleUploadPictureScreen: React.FC = ({ + route, +}) => { + const {editing, updatedSelectedBadges} = route.params; const [image, setImage] = useState(undefined); const [oldImage, setOldImage] = useState(undefined); const [selectedBadges, setSelectedBadges] = useState([]); + const [extractedSelectedBadges, setExtractedSelectedBadges] = useState< + string[] + >([]); const [loading, setLoading] = useState(false); const dispatch = useDispatch(); const navigation = useNavigation(); @@ -46,7 +61,6 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { setImage(response.suggested_people_url); setSelectedBadges(response.badges); setOldImage(response.suggested_people_url); - console.log('Current Image: ', response.suggested_people_url); } }; // if we're in edit SP, attempt to load current sp image @@ -55,6 +69,25 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { } }, []); + // Get list of badges from the backend and display here + useEffect(() => { + const extractBadgeNames = () => { + let extractedBadgeNames: string[] = updatedSelectedBadges + ? updatedSelectedBadges + : []; + // Receive undefined if you're coming from any screen + if (!updatedSelectedBadges) { + selectedBadges.forEach((badge) => { + if (!extractedBadgeNames.includes(badge.name)) { + extractedBadgeNames.push(badge.name); + } + }); + } + setExtractedSelectedBadges(extractedBadgeNames); + }; + extractBadgeNames(); + }, [selectedBadges, updatedSelectedBadges]); + const openImagePicker = () => { ImagePicker.openPicker({ smartAlbums: [ @@ -155,7 +188,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { { navigation.push('BadgeSelection', { - selectedBadges, + prevSelectedBadges: extractedSelectedBadges, }); }}> -- cgit v1.2.3-70-g09d2 From 2c97108964e5a8fc89f3a9839ea13103e86b340b Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 12 Mar 2021 10:32:31 -0800 Subject: making call on badge selection to get badges --- src/routes/main/MainStackNavigator.tsx | 1 - src/screens/badge/BadgeSelection.tsx | 28 +++++++++++++++---- .../SuggestedPeopleUploadPictureScreen.tsx | 31 ++-------------------- 3 files changed, 25 insertions(+), 35 deletions(-) (limited to 'src/routes') diff --git a/src/routes/main/MainStackNavigator.tsx b/src/routes/main/MainStackNavigator.tsx index 6992f83f..fea375f6 100644 --- a/src/routes/main/MainStackNavigator.tsx +++ b/src/routes/main/MainStackNavigator.tsx @@ -81,7 +81,6 @@ export type MainStackParams = { }; BadgeSelection: { editing: boolean; - prevSelectedBadges: string[]; }; MutualBadgeHolders: { badge_id: string; diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index a67206c4..755bb581 100644 --- a/src/screens/badge/BadgeSelection.tsx +++ b/src/screens/badge/BadgeSelection.tsx @@ -4,9 +4,13 @@ import {Alert, SafeAreaView, StatusBar, StyleSheet, View} from 'react-native'; import {Text} from 'react-native-animatable'; import {TouchableOpacity} from 'react-native-gesture-handler'; import LinearGradient from 'react-native-linear-gradient'; -import {useDispatch} from 'react-redux'; +import {useDispatch, useSelector} from 'react-redux'; import {MainStackParams} from '../../routes'; -import {addBadgesService, updateBadgesService} from '../../services'; +import { + addBadgesService, + getSuggestedPeopleProfile, + updateBadgesService, +} from '../../services'; import {BACKGROUND_GRADIENT_MAP} from '../../constants'; import {BADGE_DATA} from '../../constants/badges'; import {ERROR_BADGES_EXCEED_LIMIT} from '../../constants/strings'; @@ -16,6 +20,7 @@ import {SCREEN_HEIGHT, StatusBarHeight} from '../../utils'; import BadgeList from './BadgeList'; import BadgeScreenHeader from './BadgeScreenHeader'; import {useNavigation} from '@react-navigation/native'; +import {RootState} from '../../store/rootReducer'; /** * Home Screen for displaying Tagg Badge Selections @@ -28,14 +33,27 @@ type BadgeSelectionProps = { }; const BadgeSelection: React.FC = ({route}) => { - const prevSelectedBadges = route.params.prevSelectedBadges; + const {userId: loggedInUserId} = useSelector( + (state: RootState) => state.user.user, + ); const [selectedBadges, setSelectedBadges] = useState([]); const dispatch = useDispatch(); const navigation = useNavigation(); useEffect(() => { - setSelectedBadges(prevSelectedBadges); - }, [prevSelectedBadges]); + const loadData = async () => { + const response = await getSuggestedPeopleProfile(loggedInUserId); + if (response) { + const data = response.badges; + let extractedBadgeNames: string[] = []; + data.forEach((badge) => { + extractedBadgeNames.push(badge.name); + }); + setSelectedBadges(extractedBadgeNames); + } + }; + loadData(); + }, []); navigation.setOptions({ headerRight: () => ( diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index edab2865..5a9e23da 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -13,7 +13,6 @@ import {TouchableOpacity} from 'react-native-gesture-handler'; import ImagePicker from 'react-native-image-crop-picker'; import {SafeAreaView} from 'react-native-safe-area-context'; import {useDispatch, useSelector} from 'react-redux'; -import {UniversityBadge} from '../../types'; import {TaggSquareButton, UniversityIcon} from '../../components'; import TaggLoadingIndicator from '../../components/common/TaggLoadingIndicator'; import {SP_HEIGHT, SP_WIDTH} from '../../constants'; @@ -40,13 +39,9 @@ type SuggestedPeopleUploadPictureScreenProps = { const SuggestedPeopleUploadPictureScreen: React.FC = ({ route, }) => { - const {editing, updatedSelectedBadges} = route.params; + const {editing} = route.params; const [image, setImage] = useState(undefined); const [oldImage, setOldImage] = useState(undefined); - const [selectedBadges, setSelectedBadges] = useState([]); - const [extractedSelectedBadges, setExtractedSelectedBadges] = useState< - string[] - >([]); const [loading, setLoading] = useState(false); const dispatch = useDispatch(); const navigation = useNavigation(); @@ -59,7 +54,6 @@ const SuggestedPeopleUploadPictureScreen: React.FC { - const extractBadgeNames = () => { - let extractedBadgeNames: string[] = updatedSelectedBadges - ? updatedSelectedBadges - : []; - // Receive undefined if you're coming from any screen - if (!updatedSelectedBadges) { - selectedBadges.forEach((badge) => { - if (!extractedBadgeNames.includes(badge.name)) { - extractedBadgeNames.push(badge.name); - } - }); - } - setExtractedSelectedBadges(extractedBadgeNames); - }; - extractBadgeNames(); - }, [selectedBadges, updatedSelectedBadges]); - const openImagePicker = () => { ImagePicker.openPicker({ smartAlbums: [ @@ -187,9 +162,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC { - navigation.push('BadgeSelection', { - prevSelectedBadges: extractedSelectedBadges, - }); + navigation.push('BadgeSelection'); }}> -- cgit v1.2.3-70-g09d2 From b34da6e2d3f78a3d846665ded5d5a0c508873c6c Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 12 Mar 2021 11:11:10 -0800 Subject: comments, removed unused code --- src/components/profile/ProfileMoreInfoDrawer.tsx | 1 - src/routes/main/MainStackNavigator.tsx | 1 - src/screens/badge/BadgeSelection.tsx | 2 +- .../suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx | 1 + 4 files changed, 2 insertions(+), 3 deletions(-) (limited to 'src/routes') diff --git a/src/components/profile/ProfileMoreInfoDrawer.tsx b/src/components/profile/ProfileMoreInfoDrawer.tsx index d8f91abe..2fec5cca 100644 --- a/src/components/profile/ProfileMoreInfoDrawer.tsx +++ b/src/components/profile/ProfileMoreInfoDrawer.tsx @@ -45,7 +45,6 @@ const ProfileMoreInfoDrawer: React.FC = (props) => { // Sending undefined for updatedSelectedBadges to mark that there was no update yet navigation.push('UpdateSPPicture', { editing: true, - updatedSelectedBadges: undefined, }); setIsOpen(false); } diff --git a/src/routes/main/MainStackNavigator.tsx b/src/routes/main/MainStackNavigator.tsx index fea375f6..c60c8602 100644 --- a/src/routes/main/MainStackNavigator.tsx +++ b/src/routes/main/MainStackNavigator.tsx @@ -77,7 +77,6 @@ export type MainStackParams = { }; UpdateSPPicture: { editing: boolean; - updatedSelectedBadges: string[] | undefined; }; BadgeSelection: { editing: boolean; diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index 755bb581..e8a060ee 100644 --- a/src/screens/badge/BadgeSelection.tsx +++ b/src/screens/badge/BadgeSelection.tsx @@ -40,6 +40,7 @@ const BadgeSelection: React.FC = ({route}) => { const dispatch = useDispatch(); const navigation = useNavigation(); + // Loading badges data and extracting into a string [] useEffect(() => { const loadData = async () => { const response = await getSuggestedPeopleProfile(loggedInUserId); @@ -64,7 +65,6 @@ const BadgeSelection: React.FC = ({route}) => { updateBadgesService(selectedBadges); navigation.navigate('UpdateSPPicture', { editing: true, - updatedSelectedBadges: selectedBadges, }); } else { if (selectedBadges.length !== 0) { diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index 74034287..0c34e90c 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -87,6 +87,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC { + // Uploading image only if initially loaded image is not the same as the image being uploaded if (image && oldImage !== image) { setLoading(true); const success = await sendSuggestedPeoplePhoto(image); -- cgit v1.2.3-70-g09d2 From 797e0b9153e2155c045c4083f42dbae5a591cfef Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Fri, 12 Mar 2021 17:39:32 -0500 Subject: fixed merge issues --- src/routes/main/MainStackNavigator.tsx | 1 - src/routes/main/MainStackScreen.tsx | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'src/routes') diff --git a/src/routes/main/MainStackNavigator.tsx b/src/routes/main/MainStackNavigator.tsx index 252ece3b..f7404f27 100644 --- a/src/routes/main/MainStackNavigator.tsx +++ b/src/routes/main/MainStackNavigator.tsx @@ -8,7 +8,6 @@ import { MomentType, ScreenType, SearchCategoryType, - UniversityBadge, UserType, } from '../../types'; diff --git a/src/routes/main/MainStackScreen.tsx b/src/routes/main/MainStackScreen.tsx index 0a75dd22..95d45d32 100644 --- a/src/routes/main/MainStackScreen.tsx +++ b/src/routes/main/MainStackScreen.tsx @@ -7,6 +7,7 @@ import {normalize} from 'react-native-elements'; import BackIcon from '../../assets/icons/back-arrow.svg'; import { AnimatedTutorial, + BadgeSelection, CaptionScreen, CategorySelection, CreateCustomCategory, -- cgit v1.2.3-70-g09d2