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 ++- .../SuggestedPeopleUploadPictureScreen.tsx | 24 ++++++++++++++++------ 5 files changed, 38 insertions(+), 14 deletions(-) (limited to 'src') 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 = () => { { { - const {goTo} = route.params; + const {editing} = route.params; const [image, setImage] = useState(undefined); const [loading, setLoading] = useState(false); const dispatch = useDispatch(); @@ -42,7 +42,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { } }; // if we're in edit SP, attempt to load current sp image - if (goTo === 'Profile') { + if (editing) { loadData(); } }, []); @@ -76,7 +76,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { const success = await sendSuggestedPeoplePhoto(image); if (success) { dispatch(uploadedSuggestedPeoplePhoto(image)); - if (goTo !== 'Profile') { + if (!editing) { navigation.push('BadgeSelection'); } } else { @@ -86,7 +86,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { setLoading(false); // Navigated back to Profile if user is editing their Suggested People Picture - if (goTo === 'Profile') { + if (editing) { navigation.goBack(); setTimeout(() => { Alert.alert(SUCCESS_PIC_UPLOAD); @@ -99,9 +99,13 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { {loading && } - PHOTO + {editing ? 'Edit Suggested' : 'PHOTO'} {image ? ( - Tap again to choose another photo + + {editing + ? 'Tap to upload new photo' + : 'Tap again to choose another photo'} + ) : ( Upload a photo, this is what other users will see @@ -132,6 +136,14 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { )} + {editing && ( + { + navigation.push('BadgeSelection'); + }}> + edit badges ---> + + )} {image && ( Date: Thu, 11 Mar 2021 08:14:30 -0800 Subject: minor syntax --- src/components/suggestedPeople/BadgesDropdown.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/components/suggestedPeople/BadgesDropdown.tsx b/src/components/suggestedPeople/BadgesDropdown.tsx index 70c70e47..76e8e46f 100644 --- a/src/components/suggestedPeople/BadgesDropdown.tsx +++ b/src/components/suggestedPeople/BadgesDropdown.tsx @@ -71,7 +71,7 @@ const BadgesDropdown: React.FC = ({ { - const updatedBadges = !displayBadges + const updatedBadges = !displayBadges; setDisplayBadges(updatedBadges); if (updatedBadges) { animate(); -- cgit v1.2.3-70-g09d2 From 8918be8b82167f83762b4783bd877b6087a568fc Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 11 Mar 2021 08:14:43 -0800 Subject: Added new endpoint --- src/constants/api.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/constants/api.ts b/src/constants/api.ts index 127ef432..dd3d6e15 100644 --- a/src/constants/api.ts +++ b/src/constants/api.ts @@ -33,12 +33,13 @@ export const DISCOVER_ENDPOINT: string = API_URL + 'discover/'; export const SEARCH_BUTTONS_ENDPOPINT: string = DISCOVER_ENDPOINT + 'search_buttons/'; export const WAITLIST_USER_ENDPOINT: string = API_URL + 'waitlist-user/'; export const COMMENT_THREAD_ENDPOINT: string = API_URL + 'reply/'; -export const ADD_USER_BADGES: string = API_URL + 'suggested_people/add_badges/'; // Suggested People export const SP_USERS_ENDPOINT: string = API_URL + 'suggested_people/'; -export const SP_UPDATE_PICTURE_ENDPOINT: string = API_URL + 'suggested_people/update_picture/'; +export const SP_UPDATE_PICTURE_ENDPOINT: string = SP_USERS_ENDPOINT + 'update_picture/'; export const SP_MUTUAL_BADGE_HOLDERS_ENDPOINT: string = SP_USERS_ENDPOINT + 'get_mutual_badge_holders/'; +export const ADD_USER_BADGES: string = SP_USERS_ENDPOINT + 'add_badges/'; +export const UPDATE_USER_BADGES: string = SP_USERS_ENDPOINT + 'update_badges/'; // Register as FCM device export const FCM_ENDPOINT: string = API_URL + 'fcm/'; -- cgit v1.2.3-70-g09d2 From 562bc6507b29fd52d41eeca31a69f75125cfc7d9 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh 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') 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 016b0464be83227a7d38d44d01c2878378ba5e50 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 11 Mar 2021 08:18:45 -0800 Subject: Added service and changed border color --- src/screens/badge/BadgeItem.tsx | 55 +++++++++----- src/screens/badge/BadgeSelection.tsx | 86 ++++++++++++++++++---- .../SuggestedPeopleUploadPictureScreen.tsx | 12 ++- 3 files changed, 118 insertions(+), 35 deletions(-) (limited to 'src') diff --git a/src/screens/badge/BadgeItem.tsx b/src/screens/badge/BadgeItem.tsx index adf74026..3141e662 100644 --- a/src/screens/badge/BadgeItem.tsx +++ b/src/screens/badge/BadgeItem.tsx @@ -2,7 +2,11 @@ import React from 'react'; import {View, Text, StyleSheet, Image, ImageSourcePropType} from 'react-native'; import {SCREEN_WIDTH, normalize} from '../../utils'; import LinearGradient from 'react-native-linear-gradient'; -import {BADGE_GRADIENT_FIRST, BADGE_GRADIENT_REST} from '../../constants'; +import { + BACKGROUND_GRADIENT_MAP, + BADGE_GRADIENT_FIRST, + BADGE_GRADIENT_REST, +} from '../../constants'; import {TouchableOpacity} from 'react-native-gesture-handler'; interface BadgeItemProps { @@ -21,32 +25,45 @@ const BadgeItem: React.FC = ({ onSelection, }) => { return ( - onSelection(title)}> - - - - - {title} + + onSelection(title)} + style={{alignSelf: 'center', marginTop: 3}}> + + + + + {title} + - - - + + + ); }; const styles = StyleSheet.create({ + border: { + width: SCREEN_WIDTH / 3 - 20 + 6, + height: 146, + marginLeft: 10, + marginBottom: 12, + borderRadius: 8, + }, item: { width: SCREEN_WIDTH / 3 - 20, height: 140, - marginLeft: 15, - marginBottom: 12, borderRadius: 8, }, detailContainer: { diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index f1cd000c..7088821a 100644 --- a/src/screens/badge/BadgeSelection.tsx +++ b/src/screens/badge/BadgeSelection.tsx @@ -1,4 +1,5 @@ import AsyncStorage from '@react-native-community/async-storage'; +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'; @@ -6,14 +7,19 @@ 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 {ADD_USER_BADGES, BACKGROUND_GRADIENT_MAP} from '../../constants'; +import {MainStackParams} from 'src/routes'; +import { + ADD_USER_BADGES, + BACKGROUND_GRADIENT_MAP, + UPDATE_USER_BADGES, +} from '../../constants'; import {BADGE_DATA} from '../../constants/badges'; import { ERROR_BADGES_EXCEED_LIMIT, ERROR_UPLOAD_BADGES, } from '../../constants/strings'; import {suggestedPeopleBadgesFinished} from '../../store/actions'; -import {BackgroundGradientType} from '../../types'; +import {BackgroundGradientType, UniversityBadge} from '../../types'; import {SCREEN_HEIGHT, StatusBarHeight} from '../../utils'; import BadgeList from './BadgeList'; import BadgeScreenHeader from './BadgeScreenHeader'; @@ -31,29 +37,54 @@ type BadgeSelectionScreenNavigationProp = StackNavigationProp< 'BadgeList' >; +type BadgeSelectionRouteProp = RouteProp; + type BadgeSelectionProps = { navigation: BadgeSelectionScreenNavigationProp; + route?: BadgeSelectionRouteProp; }; -const BadgeSelection: React.FC = ({navigation}) => { - const [canSubmit, setCanSubmit] = useState(false); +const BadgeSelection: React.FC = ({navigation, route}) => { + const dispatch = useDispatch(); navigation.setOptions({ headerRight: () => ( { - if (canSubmit) { - uploadUserSelection(); + onPress={async () => { + if (route?.params.editing) { + updateBadgesService(); + navigation.goBack(); } else { - dispatch(suggestedPeopleBadgesFinished()); + if (selectedBadges.length !== 0) { + uploadUserSelection(); + } else { + dispatch(suggestedPeopleBadgesFinished()); + } } }}> - {canSubmit ? 'Done' : 'Skip'} + + {selectedBadges.length !== 0 ? 'Done' : 'Skip'} + ), }); 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]; @@ -63,14 +94,14 @@ const BadgeSelection: React.FC = ({navigation}) => { } setSelectedBadges(selectedBadgesArray); } else { - const selectedBadgesArray = [...selectedBadges, key]; - setSelectedBadges(selectedBadgesArray); + if (selectedBadges.length < 5) { + const selectedBadgesArray = [...selectedBadges, key]; + setSelectedBadges(selectedBadgesArray); + } else { + Alert.alert(ERROR_BADGES_EXCEED_LIMIT); + } } }; - const dispatch = useDispatch(); - useEffect(() => { - setCanSubmit(selectedBadges.length !== 0); - }, [selectedBadges]); const uploadUserSelection = async () => { try { @@ -96,6 +127,31 @@ const BadgeSelection: React.FC = ({navigation}) => { } }; + const updateBadgesService = async () => { + try { + const token = await AsyncStorage.getItem('token'); + const form = new FormData(); + console.log('selectedBadges: ', selectedBadges); + form.append('badges', JSON.stringify(selectedBadges)); + const response = await fetch(UPDATE_USER_BADGES, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: 'Token ' + token, + }, + body: form, + }); + if (response.status === 400) { + Alert.alert(ERROR_BADGES_EXCEED_LIMIT); + return; + } + console.log('response: ', response); + } catch (error) { + console.log(error); + Alert.alert(ERROR_UPLOAD_BADGES); + } + }; + return ( { const {editing} = route.params; const [image, setImage] = useState(undefined); + const [selectedBadges, setSelectedBadges] = useState([]); const [loading, setLoading] = useState(false); const dispatch = useDispatch(); const navigation = useNavigation(); @@ -39,6 +41,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { const response = await getSuggestedPeopleProfile(loggedInUserId); if (response) { setImage(response.suggested_people_url); + setSelectedBadges(response.badges); } }; // if we're in edit SP, attempt to load current sp image @@ -139,7 +142,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { {editing && ( { - navigation.push('BadgeSelection'); + navigation.push('BadgeSelection', {selectedBadges}); }}> edit badges ---> @@ -206,5 +209,12 @@ const styles = StyleSheet.create({ marginTop: '30%', marginBottom: '10%', }, + rightButtonContainer: {marginRight: 24}, + rightButton: { + color: '#FFFFFF', + fontWeight: 'bold', + fontSize: 15, + lineHeight: 18, + }, }); export default SuggestedPeopleUploadPictureScreen; -- cgit v1.2.3-70-g09d2 From c17bd1e936409d32dd272fb13856e8b7eb98d2dc Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 11 Mar 2021 08:55:30 -0800 Subject: basic styling for edit badges button --- src/components/common/TaggSquareButton.tsx | 11 +++-- .../SuggestedPeopleUploadPictureScreen.tsx | 49 ++++++++++++++++++---- 2 files changed, 49 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/components/common/TaggSquareButton.tsx b/src/components/common/TaggSquareButton.tsx index 817a2690..1a1c33b3 100644 --- a/src/components/common/TaggSquareButton.tsx +++ b/src/components/common/TaggSquareButton.tsx @@ -9,14 +9,17 @@ import { ViewStyle, } from 'react-native'; import LinearGradient from 'react-native-linear-gradient'; -import {BACKGROUND_GRADIENT_MAP, TAGG_PURPLE} from '../../constants'; +import { + BACKGROUND_GRADIENT_MAP, + TAGG_LIGHT_BLUE, + TAGG_PURPLE, +} from '../../constants'; import {normalize, SCREEN_WIDTH} from '../../utils'; - interface TaggSquareButtonProps extends ViewProps { onPress: (event: GestureResponderEvent) => void; title: string; buttonStyle: 'normal' | 'large' | 'gradient'; - buttonColor: 'purple' | 'white'; + buttonColor: 'purple' | 'white' | 'blue'; labelColor: 'white' | 'blue'; style?: ViewStyle; labelStyle?: TextStyle; @@ -27,6 +30,8 @@ const TaggSquareButton: React.FC = (props) => { switch (props.buttonColor) { case 'purple': return {backgroundColor: TAGG_PURPLE}; + case 'blue': + return {backgroundColor: TAGG_LIGHT_BLUE}; case 'white': default: return {backgroundColor: 'white'}; diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index 6c298efb..eb8494f4 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -6,6 +6,7 @@ import { ImageBackground, StatusBar, StyleSheet, + View, } from 'react-native'; import {Text} from 'react-native-animatable'; import {TouchableOpacity} from 'react-native-gesture-handler'; @@ -13,7 +14,7 @@ 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} from '../../components'; +import {TaggSquareButton, UniversityIcon} from '../../components'; import TaggLoadingIndicator from '../../components/common/TaggLoadingIndicator'; import {SP_HEIGHT, SP_WIDTH} from '../../constants'; import {ERROR_UPLOAD, SUCCESS_PIC_UPLOAD} from '../../constants/strings'; @@ -24,6 +25,7 @@ import { import {uploadedSuggestedPeoplePhoto} from '../../store/actions'; import {RootState} from '../../store/rootReducer'; import {normalize, SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils'; +import BackArrow from '../../assets/icons/back-arrow.svg'; const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { const {editing} = route.params; @@ -140,19 +142,28 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { )} {editing && ( - { - navigation.push('BadgeSelection', {selectedBadges}); - }}> - edit badges ---> - + + + + Edit Badges + + { + navigation.push('BadgeSelection', {selectedBadges}); + }}> + + + )} {image && ( Date: Thu, 11 Mar 2021 08:58:04 -0800 Subject: removed useless console log --- src/components/search/SearchCategories.tsx | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/components/search/SearchCategories.tsx b/src/components/search/SearchCategories.tsx index c3c4c518..f016a806 100644 --- a/src/components/search/SearchCategories.tsx +++ b/src/components/search/SearchCategories.tsx @@ -13,7 +13,6 @@ const SearchCategories: React.FC = () => { useEffect(() => { const loadButtons = async () => { const localButtons = await getButtons(); - console.log('localButtons: ', localButtons); await setButtons(localButtons); }; loadButtons(); -- cgit v1.2.3-70-g09d2 From c74285c0f53efc1c4d0794d2f7f563b45e1eb700 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 11 Mar 2021 09:18:16 -0800 Subject: refactoring --- src/constants/api.ts | 4 +- src/screens/badge/BadgeSelection.tsx | 71 +++++----------------------------- src/screens/suggestedPeople/SPBody.tsx | 2 +- src/services/SuggestedPeopleService.ts | 57 ++++++++++++++++++++++++++- 4 files changed, 68 insertions(+), 66 deletions(-) (limited to 'src') diff --git a/src/constants/api.ts b/src/constants/api.ts index dd3d6e15..34ef9a1c 100644 --- a/src/constants/api.ts +++ b/src/constants/api.ts @@ -38,8 +38,8 @@ export const COMMENT_THREAD_ENDPOINT: string = API_URL + 'reply/'; export const SP_USERS_ENDPOINT: string = API_URL + 'suggested_people/'; export const SP_UPDATE_PICTURE_ENDPOINT: string = SP_USERS_ENDPOINT + 'update_picture/'; export const SP_MUTUAL_BADGE_HOLDERS_ENDPOINT: string = SP_USERS_ENDPOINT + 'get_mutual_badge_holders/'; -export const ADD_USER_BADGES: string = SP_USERS_ENDPOINT + 'add_badges/'; -export const UPDATE_USER_BADGES: string = SP_USERS_ENDPOINT + 'update_badges/'; +export const ADD_BADGES_ENDPOINT: string = SP_USERS_ENDPOINT + 'add_badges/'; +export const UPDATE_BADGES_ENDPOINT: string = SP_USERS_ENDPOINT + 'update_badges/'; // Register as FCM device export const FCM_ENDPOINT: string = API_URL + 'fcm/'; diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index 7088821a..ed3f199d 100644 --- a/src/screens/badge/BadgeSelection.tsx +++ b/src/screens/badge/BadgeSelection.tsx @@ -1,4 +1,3 @@ -import AsyncStorage from '@react-native-community/async-storage'; import {RouteProp} from '@react-navigation/core'; import {StackNavigationProp} from '@react-navigation/stack'; import React, {useEffect, useState} from 'react'; @@ -7,17 +6,11 @@ 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 {MainStackParams} from 'src/routes'; -import { - ADD_USER_BADGES, - BACKGROUND_GRADIENT_MAP, - UPDATE_USER_BADGES, -} from '../../constants'; +import {MainStackParams} from '../../routes'; +import {addBadgesService, updateBadgesService} from '../../services'; +import {BACKGROUND_GRADIENT_MAP} from '../../constants'; import {BADGE_DATA} from '../../constants/badges'; -import { - ERROR_BADGES_EXCEED_LIMIT, - ERROR_UPLOAD_BADGES, -} from '../../constants/strings'; +import {ERROR_BADGES_EXCEED_LIMIT} from '../../constants/strings'; import {suggestedPeopleBadgesFinished} from '../../store/actions'; import {BackgroundGradientType, UniversityBadge} from '../../types'; import {SCREEN_HEIGHT, StatusBarHeight} from '../../utils'; @@ -52,11 +45,14 @@ const BadgeSelection: React.FC = ({navigation, route}) => { style={styles.rightButtonContainer} onPress={async () => { if (route?.params.editing) { - updateBadgesService(); + updateBadgesService(selectedBadges); navigation.goBack(); } else { if (selectedBadges.length !== 0) { - uploadUserSelection(); + const success = await addBadgesService(selectedBadges); + if (success) { + dispatch(suggestedPeopleBadgesFinished()); + } } else { dispatch(suggestedPeopleBadgesFinished()); } @@ -103,55 +99,6 @@ const BadgeSelection: React.FC = ({navigation, route}) => { } }; - const uploadUserSelection = async () => { - try { - const token = await AsyncStorage.getItem('token'); - const form = new FormData(); - form.append('badges', JSON.stringify(selectedBadges)); - const response = await fetch(ADD_USER_BADGES, { - method: 'POST', - headers: { - 'Content-Type': 'multipart/form-data', - Authorization: 'Token ' + token, - }, - body: form, - }); - if (response.status === 400) { - Alert.alert(ERROR_BADGES_EXCEED_LIMIT); - return; - } - dispatch(suggestedPeopleBadgesFinished()); - } catch (error) { - console.log(error); - Alert.alert(ERROR_UPLOAD_BADGES); - } - }; - - const updateBadgesService = async () => { - try { - const token = await AsyncStorage.getItem('token'); - const form = new FormData(); - console.log('selectedBadges: ', selectedBadges); - form.append('badges', JSON.stringify(selectedBadges)); - const response = await fetch(UPDATE_USER_BADGES, { - method: 'POST', - headers: { - 'Content-Type': 'multipart/form-data', - Authorization: 'Token ' + token, - }, - body: form, - }); - if (response.status === 400) { - Alert.alert(ERROR_BADGES_EXCEED_LIMIT); - return; - } - console.log('response: ', response); - } catch (error) { - console.log(error); - Alert.alert(ERROR_UPLOAD_BADGES); - } - }; - return ( = ({ let array = []; useEffect(() => { const findBadgeIcons = (badge: UniversityBadge) => { - DATA.forEach((item) => { + DATA?.forEach((item) => { if (item.title === badge.category) { item.data.forEach((object) => { if (object.badgeName === badge.name) { diff --git a/src/services/SuggestedPeopleService.ts b/src/services/SuggestedPeopleService.ts index d0032458..7b0131d8 100644 --- a/src/services/SuggestedPeopleService.ts +++ b/src/services/SuggestedPeopleService.ts @@ -1,11 +1,18 @@ import AsyncStorage from '@react-native-community/async-storage'; import { + ERROR_BADGES_EXCEED_LIMIT, + ERROR_UPLOAD_BADGES, +} from '../constants/strings'; +import { + ADD_BADGES_ENDPOINT, EDIT_PROFILE_ENDPOINT, SP_MUTUAL_BADGE_HOLDERS_ENDPOINT, SP_UPDATE_PICTURE_ENDPOINT, SP_USERS_ENDPOINT, -} from '../constants'; + UPDATE_BADGES_ENDPOINT, +} from '../constants/api'; import {ProfilePreviewType, SuggestedPeopleDataType} from '../types'; +import { Alert } from 'react-native'; export const sendSuggestedPeopleLinked = async ( userId: string, @@ -119,3 +126,51 @@ export const getMutualBadgeHolders = async () => { return undefined; } }; + +export const addBadgesService = async (selectedBadges: string[]) => { + try { + const token = await AsyncStorage.getItem('token'); + const form = new FormData(); + form.append('badges', JSON.stringify(selectedBadges)); + const response = await fetch(ADD_BADGES_ENDPOINT, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: 'Token ' + token, + }, + body: form, + }); + if (response.status === 400) { + Alert.alert(ERROR_BADGES_EXCEED_LIMIT); + return false; + } + return true; + } catch (error) { + console.log(error); + Alert.alert(ERROR_UPLOAD_BADGES); + return false; + } +}; + +export const updateBadgesService = async (selectedBadges: string[]) => { + try { + const token = await AsyncStorage.getItem('token'); + const form = new FormData(); + form.append('badges', JSON.stringify(selectedBadges)); + const response = await fetch(UPDATE_BADGES_ENDPOINT, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + Authorization: 'Token ' + token, + }, + body: form, + }); + if (response.status === 400) { + Alert.alert(ERROR_BADGES_EXCEED_LIMIT); + return; + } + } catch (error) { + console.log(error); + Alert.alert(ERROR_UPLOAD_BADGES); + } +}; -- cgit v1.2.3-70-g09d2 From 803b7a7bcb173d6a263c9d43fec41e5cddfe98f4 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Thu, 11 Mar 2021 13:36:34 -0800 Subject: done; except: update state on previous screen; --- src/assets/icons/front-arrow.svg | 1 + src/constants/strings.ts | 1 + src/screens/badge/BadgeSelection.tsx | 4 ++- .../SuggestedPeopleUploadPictureScreen.tsx | 32 ++++++++++++---------- src/services/SuggestedPeopleService.ts | 5 ++++ 5 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 src/assets/icons/front-arrow.svg (limited to 'src') diff --git a/src/assets/icons/front-arrow.svg b/src/assets/icons/front-arrow.svg new file mode 100644 index 00000000..7beeb83e --- /dev/null +++ b/src/assets/icons/front-arrow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/constants/strings.ts b/src/constants/strings.ts index 93da6e59..3c2100f4 100644 --- a/src/constants/strings.ts +++ b/src/constants/strings.ts @@ -57,6 +57,7 @@ export const SUCCESS_CATEGORY_DELETE = 'Category successfully deleted, but its m export const SUCCESS_INVITATION_CODE = 'Perfect! You entered a valid invitation code, you are now able to login and explore Tagg!'; export const SUCCESS_LINK = (str: string) => `Successfully linked ${str} 🎉`; export const SUCCESS_PIC_UPLOAD = 'Beautiful, the picture was uploaded successfully!'; +export const SUCCESS_BADGES_UPDATE = 'Badges updated successfully!' export const SUCCESS_PWD_RESET = 'Your password was reset successfully!'; export const SUCCESS_VERIFICATION_CODE_SENT = 'New verification code sent! Check your phone messages for your code'; export const UP_TO_DATE = 'Up-to-Date!'; diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index ed3f199d..ba2e6af4 100644 --- a/src/screens/badge/BadgeSelection.tsx +++ b/src/screens/badge/BadgeSelection.tsx @@ -59,7 +59,9 @@ const BadgeSelection: React.FC = ({navigation, route}) => { } }}> - {selectedBadges.length !== 0 ? 'Done' : 'Skip'} + {selectedBadges.length !== 0 || route?.params.editing + ? 'Done' + : 'Skip'} ), diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index eb8494f4..c5a4ce61 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -25,11 +25,12 @@ import { import {uploadedSuggestedPeoplePhoto} from '../../store/actions'; import {RootState} from '../../store/rootReducer'; import {normalize, SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils'; -import BackArrow from '../../assets/icons/back-arrow.svg'; +import FrontArrow from '../../assets/icons/front-arrow.svg'; const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { const {editing} = route.params; const [image, setImage] = useState(undefined); + const [oldImage, setOldImage] = useState(undefined); const [selectedBadges, setSelectedBadges] = useState([]); const [loading, setLoading] = useState(false); const dispatch = useDispatch(); @@ -44,6 +45,8 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { if (response) { 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 @@ -76,8 +79,8 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { }; const uploadImage = async () => { - setLoading(true); - if (image) { + if (image && oldImage !== image) { + setLoading(true); const success = await sendSuggestedPeoplePhoto(image); if (success) { dispatch(uploadedSuggestedPeoplePhoto(image)); @@ -87,16 +90,15 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { } else { Alert.alert(ERROR_UPLOAD); } + setLoading(false); + // Navigated back to Profile if user is editing their Suggested People Picture + if (editing) { + setTimeout(() => { + Alert.alert(SUCCESS_PIC_UPLOAD); + }, 500); + } } - setLoading(false); - - // Navigated back to Profile if user is editing their Suggested People Picture - if (editing) { - navigation.goBack(); - setTimeout(() => { - Alert.alert(SUCCESS_PIC_UPLOAD); - }, 500); - } + navigation.goBack(); }; return ( @@ -152,9 +154,11 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { { - navigation.push('BadgeSelection', {selectedBadges}); + navigation.push('BadgeSelection', { + selectedBadges, + }); }}> - + )} diff --git a/src/services/SuggestedPeopleService.ts b/src/services/SuggestedPeopleService.ts index 7b0131d8..a65b91ef 100644 --- a/src/services/SuggestedPeopleService.ts +++ b/src/services/SuggestedPeopleService.ts @@ -2,6 +2,7 @@ import AsyncStorage from '@react-native-community/async-storage'; import { ERROR_BADGES_EXCEED_LIMIT, ERROR_UPLOAD_BADGES, + SUCCESS_BADGES_UPDATE, } from '../constants/strings'; import { ADD_BADGES_ENDPOINT, @@ -169,6 +170,10 @@ export const updateBadgesService = async (selectedBadges: string[]) => { Alert.alert(ERROR_BADGES_EXCEED_LIMIT); return; } + if (response.status === 200) { + Alert.alert(SUCCESS_BADGES_UPDATE); + return; + } } catch (error) { console.log(error); Alert.alert(ERROR_UPLOAD_BADGES); -- 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') 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') 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 20e4f9e5411bea400212737a7f3967052a3fe165 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 12 Mar 2021 10:57:38 -0800 Subject: remove some unwanted console log --- src/screens/onboarding/Login.tsx | 1 - src/screens/onboarding/OnboardingStepTwo.tsx | 2 -- src/services/WaitlistUserService.tsx | 1 - 3 files changed, 4 deletions(-) (limited to 'src') diff --git a/src/screens/onboarding/Login.tsx b/src/screens/onboarding/Login.tsx index 2ca4172b..cfa39dbd 100644 --- a/src/screens/onboarding/Login.tsx +++ b/src/screens/onboarding/Login.tsx @@ -165,7 +165,6 @@ const Login: React.FC = ({navigation}: LoginProps) => { userLogin(dispatch, {userId: data.UserID, username}); fcmService.sendFcmTokenToServer(); } catch (err) { - console.log(data); Alert.alert(ERROR_INVALID_LOGIN); } } else if (statusCode === 200 && !data.isOnboarded) { diff --git a/src/screens/onboarding/OnboardingStepTwo.tsx b/src/screens/onboarding/OnboardingStepTwo.tsx index de869c99..93342c3f 100644 --- a/src/screens/onboarding/OnboardingStepTwo.tsx +++ b/src/screens/onboarding/OnboardingStepTwo.tsx @@ -173,12 +173,10 @@ const OnboardingStepTwo: React.FC = ({ Alert.alert(ERROR_REGISTRATION(Object.values(data))); break; default: - console.log('fooo'); Alert.alert(ERROR_SOMETHING_WENT_WRONG_REFRESH); break; } } else { - console.log('barrr'); Alert.alert(ERROR_SOMETHING_WENT_WRONG_REFRESH); } } else { diff --git a/src/services/WaitlistUserService.tsx b/src/services/WaitlistUserService.tsx index 516affe3..f50b7f39 100644 --- a/src/services/WaitlistUserService.tsx +++ b/src/services/WaitlistUserService.tsx @@ -7,7 +7,6 @@ export const adduserToWaitlist: ( last_name: string, ) => Promise = async (phone_number, first_name, last_name) => { try { - console.log(phone_number, first_name, last_name); const response = await fetch(WAITLIST_USER_ENDPOINT, { method: 'POST', headers: { -- cgit v1.2.3-70-g09d2 From 441ad321ebbc9354101f4b547197603ced63a15c Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 12 Mar 2021 11:06:53 -0800 Subject: style --- .../SuggestedPeopleUploadPictureScreen.tsx | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index 5a9e23da..74034287 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -114,7 +114,9 @@ const SuggestedPeopleUploadPictureScreen: React.FC} - {editing ? 'Edit Suggested' : 'PHOTO'} + + {editing ? 'Edit Suggested' : 'PHOTO'} + {image ? ( {editing @@ -191,20 +193,28 @@ const styles = StyleSheet.create({ backgroundColor: '#878787', alignItems: 'center', }, - title: { + titlePHOTO: { marginTop: '5%', fontSize: normalize(25), lineHeight: normalize(30), fontWeight: '600', color: 'white', }, + titleEditSuggested: { + marginTop: '5%', + fontSize: normalize(19), + lineHeight: normalize(22.7), + letterSpacing: normalize(0.1), + fontWeight: '600', + color: 'white', + }, body: { fontSize: normalize(15), lineHeight: normalize(18), textAlign: 'center', fontWeight: '600', color: 'white', - marginTop: '5%', + marginTop: '2%', width: SCREEN_WIDTH * 0.7, }, buttonLabel: { @@ -243,7 +253,8 @@ const styles = StyleSheet.create({ width: SCREEN_WIDTH * 0.6, justifyContent: 'space-between', alignItems: 'center', - marginBottom: 10, + marginBottom: '4%', + marginTop: '0.8%', }, editBadgesSubContainer: {flexDirection: 'row', alignItems: 'center'}, editBadgesText: { -- 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') 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 ab961d9ecabed368e66ab15a24578bb98e696889 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 12 Mar 2021 11:35:39 -0800 Subject: loading badges data only if editing --- src/screens/badge/BadgeSelection.tsx | 11 ++++++----- .../SuggestedPeopleUploadPictureScreen.tsx | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/screens/badge/BadgeSelection.tsx b/src/screens/badge/BadgeSelection.tsx index e8a060ee..cbd7dd88 100644 --- a/src/screens/badge/BadgeSelection.tsx +++ b/src/screens/badge/BadgeSelection.tsx @@ -33,6 +33,7 @@ type BadgeSelectionProps = { }; const BadgeSelection: React.FC = ({route}) => { + const {editing} = route.params; const {userId: loggedInUserId} = useSelector( (state: RootState) => state.user.user, ); @@ -53,7 +54,9 @@ const BadgeSelection: React.FC = ({route}) => { setSelectedBadges(extractedBadgeNames); } }; - loadData(); + if (editing) { + loadData(); + } }, []); navigation.setOptions({ @@ -61,7 +64,7 @@ const BadgeSelection: React.FC = ({route}) => { { - if (route?.params.editing) { + if (editing) { updateBadgesService(selectedBadges); navigation.navigate('UpdateSPPicture', { editing: true, @@ -78,9 +81,7 @@ const BadgeSelection: React.FC = ({route}) => { } }}> - {selectedBadges.length !== 0 || route?.params.editing - ? 'Done' - : 'Skip'} + {selectedBadges.length !== 0 || editing ? 'Done' : 'Skip'} ), diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index 0c34e90c..cb0a6417 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -94,7 +94,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC { - navigation.push('BadgeSelection'); + navigation.push('BadgeSelection', {editing: false}); }}> -- cgit v1.2.3-70-g09d2 From f30da7d3fcaeca448776aa1dc235d84027f5b47a Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 12 Mar 2021 11:46:47 -0800 Subject: editing made true --- .../suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index cb0a6417..a13ee3cb 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -165,7 +165,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC { - navigation.push('BadgeSelection', {editing: false}); + navigation.push('BadgeSelection', {editing: true}); }}> -- cgit v1.2.3-70-g09d2 From bbad09d88dacb8f91904e9865b02a2584a87da97 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Fri, 12 Mar 2021 11:49:23 -0800 Subject: tappable --- .../SuggestedPeopleUploadPictureScreen.tsx | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index a13ee3cb..dd97cb6b 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -155,21 +155,21 @@ const SuggestedPeopleUploadPictureScreen: React.FC )} {editing && ( - - - - Edit Badges - - { - navigation.push('BadgeSelection', {editing: true}); - }}> + { + navigation.push('BadgeSelection', {editing: true}); + }}> + + + + Edit Badges + - - + + )} {image && ( Date: Fri, 12 Mar 2021 12:13:08 -0800 Subject: error message apt --- src/constants/strings.ts | 3 ++- .../SuggestedPeopleUploadPictureScreen.tsx | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/constants/strings.ts b/src/constants/strings.ts index 3c2100f4..f289cfc1 100644 --- a/src/constants/strings.ts +++ b/src/constants/strings.ts @@ -43,10 +43,11 @@ export const ERROR_TWILIO_SERVER_ERROR = 'mhm, looks like that is an invalid pho export const ERROR_UNABLE_TO_FIND_PROFILE = 'We were unable to find this profile. Please check username and try again'; export const ERROR_UNABLE_TO_VIEW_PROFILE = 'Unable to view this profile'; export const ERROR_UPLOAD = 'An error occurred while uploading. Please try again!'; -export const ERROR_UPLOAD_BADGES = 'Unable to upload your badges. Please retry'; +export const ERROR_UPLOAD_BADGES = 'Unable to upload your badges. Please retry!'; export const ERROR_BADGES_EXCEED_LIMIT = 'You can\'t have more than 5 badges!'; export const ERROR_UPLOAD_LARGE_PROFILE_PIC = "Can't have the first image seen on the profile be blank, please upload a large picture"; export const ERROR_UPLOAD_MOMENT = 'Unable to upload moment. Please retry'; +export const ERROR_UPLOAD_SP_PHOTO = 'Unable to update suggested people photo. Please retry!'; export const ERROR_UPLOAD_SMALL_PROFILE_PIC = "Can't have a profile without a pic to represent you, please upload a small profile picture"; export const ERROR_VERIFICATION_FAILED_SHORT = 'Verification failed 😓'; export const MARKED_AS_MSG = (str: string) => `Marked as ${str}`; diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index dd97cb6b..4b7250ce 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -16,7 +16,11 @@ import {useDispatch, useSelector} from 'react-redux'; import {TaggSquareButton, UniversityIcon} from '../../components'; import TaggLoadingIndicator from '../../components/common/TaggLoadingIndicator'; import {SP_HEIGHT, SP_WIDTH} from '../../constants'; -import {ERROR_UPLOAD, SUCCESS_PIC_UPLOAD} from '../../constants/strings'; +import { + ERROR_UPLOAD, + ERROR_UPLOAD_SP_PHOTO, + SUCCESS_PIC_UPLOAD, +} from '../../constants/strings'; import { getSuggestedPeopleProfile, sendSuggestedPeoplePhoto, @@ -103,7 +107,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC { - Alert.alert(SUCCESS_PIC_UPLOAD); + Alert.alert(success ? SUCCESS_PIC_UPLOAD : ERROR_UPLOAD_SP_PHOTO); }, 500); } } -- 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') 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 From 6a73d40548fd207cb2481157b8bbe47ef02354aa Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Fri, 12 Mar 2021 17:43:41 -0500 Subject: potential fix --- .../SuggestedPeopleUploadPictureScreen.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index 4b7250ce..87e22d9e 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -13,6 +13,8 @@ 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 {MainStackParams} from 'src/routes'; +import FrontArrow from '../../assets/icons/front-arrow.svg'; import {TaggSquareButton, UniversityIcon} from '../../components'; import TaggLoadingIndicator from '../../components/common/TaggLoadingIndicator'; import {SP_HEIGHT, SP_WIDTH} from '../../constants'; @@ -28,8 +30,6 @@ import { 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'; type SuggestedPeopleUploadPictureScreenRouteProp = RouteProp< MainStackParams, @@ -136,7 +136,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC