From a8e68b553795007970abd559ea8c3bc270760b86 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Sat, 20 Feb 2021 11:15:09 -0800 Subject: done --- src/screens/suggestedPeople/AnimatedTutorial.tsx | 29 +++++++++++------------- 1 file changed, 13 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/screens/suggestedPeople/AnimatedTutorial.tsx b/src/screens/suggestedPeople/AnimatedTutorial.tsx index bf34ba6e..f7d62cee 100644 --- a/src/screens/suggestedPeople/AnimatedTutorial.tsx +++ b/src/screens/suggestedPeople/AnimatedTutorial.tsx @@ -3,8 +3,8 @@ import React from 'react'; import {StyleSheet, Text, View} from 'react-native'; import {Image} from 'react-native-animatable'; import {SafeAreaView} from 'react-native-safe-area-context'; +import GestureRecognizer from 'react-native-swipe-gestures'; import {useDispatch, useSelector} from 'react-redux'; -import CloseIcon from '../../assets/ionicons/close-outline.svg'; import {suggestedPeopleAnimatedTutorialFinished} from '../../store/actions/user'; import {RootState} from '../../store/rootReducer'; import {isIPhoneX, SCREEN_WIDTH} from '../../utils'; @@ -20,22 +20,19 @@ const AnimatedTutorial: React.FC = () => { }; return ( - - - - {'Swipe up to discover more people!'} + + + + + {'Swipe up to discover more people!'} + + + - - + ); }; -- cgit v1.2.3-70-g09d2 From e192536c76bb5bed1e670e2e07d38b88e0717c73 Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Tue, 23 Feb 2021 15:22:19 -0500 Subject: fixed people state inconsistencies --- .../suggestedPeople/SuggestedPeopleScreen.tsx | 42 ++++++++++++---------- src/services/MomentCategoryService.ts | 1 - src/services/UserProfileService.ts | 2 -- 3 files changed, 23 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx index 195604a3..0a0d352b 100644 --- a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx +++ b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx @@ -1,6 +1,6 @@ import AsyncStorage from '@react-native-community/async-storage'; import {useFocusEffect, useNavigation} from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; +import React, {useCallback, useEffect, useRef, useState} from 'react'; import { FlatList, ListRenderItemInfo, @@ -29,6 +29,7 @@ import { import { fetchUserX, getUserAsProfilePreviewType, + handleOpenSocialUrlOnBrowser, normalize, SCREEN_HEIGHT, SCREEN_WIDTH, @@ -55,14 +56,24 @@ const SuggestedPeopleScreen: React.FC = () => { const [people, setPeople] = useState([]); const [page, setPage] = useState(0); const [refreshing, setRefreshing] = useState(false); + const [shouldResetData, setShouldResetData] = useState(false); const [hideStatusBar, setHideStatusBar] = useState(false); // loads data and append it to users based on current page useEffect(() => { - // console.log('current page', page); - loadMore(false); + loadMore(); }, [page]); + useEffect(() => { + if (shouldResetData) { + if (page !== 0) { + setPage(0); + } else { + loadMore(); + } + } + }, [shouldResetData]); + useFocusEffect(() => { const appendSelf = async () => { AsyncStorage.getItem('suggested_people_url').then((image) => { @@ -83,34 +94,30 @@ const SuggestedPeopleScreen: React.FC = () => { }; if (suggested_people_linked < 2) { if (people.length > 1 && people[0].user.id !== loggedInUserId) { + console.log('appending self'); appendSelf(); } } }); - const loadMore = async (resetData: boolean) => { + const loadMore = async () => { const loadNextPage = async () => await getSuggestedPeople( SP_PAGE_SIZE, - resetData ? 0 : page * SP_PAGE_SIZE, + shouldResetData ? 0 : page * SP_PAGE_SIZE, ); loadNextPage().then((newUsers) => { loadUserDataToStore(newUsers.map((ppl) => ppl.user)); - let newPeople = []; - if (resetData) { - newPeople = newUsers; - setPage(0); - } else { - newPeople = people.concat(newUsers); - } - setPeople(newPeople); + setPeople(shouldResetData ? newUsers : people.concat(newUsers)); + setShouldResetData(false); }); }; const loadUserDataToStore = async (users: ProfilePreviewType[]) => { const loadUserData = async (user: ProfilePreviewType) => { if (!userXInStore(state, screenType, user.id)) { + console.log(user.username, 'not in store, loading to store'); await fetchUserX( dispatch, {userId: user.id, username: user.username}, @@ -120,10 +127,11 @@ const SuggestedPeopleScreen: React.FC = () => { }; await Promise.all(users.map((user) => loadUserData(user))); }; - const resetPage = () => { + + const onRefresh = () => { const reset = async () => { await dispatch(resetScreenType(screenType)); - loadMore(true); + setShouldResetData(true); }; setRefreshing(true); reset().then(() => { @@ -131,10 +139,6 @@ const SuggestedPeopleScreen: React.FC = () => { }); }; - const onRefresh = useCallback(() => { - resetPage(); - }, []); - useFocusEffect( useCallback(() => { const navigateToAnimatedTutorial = () => { diff --git a/src/services/MomentCategoryService.ts b/src/services/MomentCategoryService.ts index bb2c5542..edd13ad0 100644 --- a/src/services/MomentCategoryService.ts +++ b/src/services/MomentCategoryService.ts @@ -19,7 +19,6 @@ export const loadMomentCategories: ( const data = await response.json(); categories = data.categories; } else { - console.log('Could not load categories!'); return []; } } catch (err) { diff --git a/src/services/UserProfileService.ts b/src/services/UserProfileService.ts index fff35370..bfc4933f 100644 --- a/src/services/UserProfileService.ts +++ b/src/services/UserProfileService.ts @@ -145,8 +145,6 @@ export const loadSocialPosts: ( accountData.handle = body.handle; accountData.posts = body.posts; accountData.profile_pic = body.profile_pic; - } else { - throw 'Unable to fetch posts data from ' + socialType; } } catch (error) { console.log(error); -- cgit v1.2.3-70-g09d2 From a5e38a2ab22e2cb6f13ecac3caaf1f48dbeafee7 Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Tue, 23 Feb 2021 15:23:59 -0500 Subject: organized imports --- src/screens/suggestedPeople/SuggestedPeopleScreen.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx index 0a0d352b..c735c894 100644 --- a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx +++ b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx @@ -1,6 +1,6 @@ import AsyncStorage from '@react-native-community/async-storage'; import {useFocusEffect, useNavigation} from '@react-navigation/native'; -import React, {useCallback, useEffect, useRef, useState} from 'react'; +import React, {useCallback, useEffect, useState} from 'react'; import { FlatList, ListRenderItemInfo, @@ -29,7 +29,6 @@ import { import { fetchUserX, getUserAsProfilePreviewType, - handleOpenSocialUrlOnBrowser, normalize, SCREEN_HEIGHT, SCREEN_WIDTH, -- cgit v1.2.3-70-g09d2 From 941594566dbb6547f8fca2c107aa86dd6cf609a0 Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Tue, 23 Feb 2021 15:24:53 -0500 Subject: removed logs --- src/screens/suggestedPeople/SuggestedPeopleScreen.tsx | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx index c735c894..301e9d97 100644 --- a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx +++ b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx @@ -116,7 +116,6 @@ const SuggestedPeopleScreen: React.FC = () => { const loadUserDataToStore = async (users: ProfilePreviewType[]) => { const loadUserData = async (user: ProfilePreviewType) => { if (!userXInStore(state, screenType, user.id)) { - console.log(user.username, 'not in store, loading to store'); await fetchUserX( dispatch, {userId: user.id, username: user.username}, -- cgit v1.2.3-70-g09d2 From 3978bd82db12a4606ebb9a60c15352fb14ee0055 Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Tue, 23 Feb 2021 16:21:40 -0500 Subject: added sp image to store for profile preview, using React.memo to prevent UI updates --- .../suggestedPeople/SuggestedPeopleScreen.tsx | 131 ++++++++++----------- .../SuggestedPeopleUploadPictureScreen.tsx | 4 +- src/store/actions/user.ts | 16 ++- src/store/initialStates.ts | 1 + src/store/reducers/userReducer.ts | 5 + 5 files changed, 78 insertions(+), 79 deletions(-) (limited to 'src') diff --git a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx index 301e9d97..cec76d00 100644 --- a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx +++ b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx @@ -1,6 +1,5 @@ -import AsyncStorage from '@react-native-community/async-storage'; import {useFocusEffect, useNavigation} from '@react-navigation/native'; -import React, {useCallback, useEffect, useState} from 'react'; +import React, {memo, useCallback, useEffect, useState} from 'react'; import { FlatList, ListRenderItemInfo, @@ -52,6 +51,7 @@ const SuggestedPeopleScreen: React.FC = () => { const {userId: loggedInUserId} = useSelector( (state: RootState) => state.user.user, ); + const {suggestedPeopleImage} = useSelector((state: RootState) => state.user); const [people, setPeople] = useState([]); const [page, setPage] = useState(0); const [refreshing, setRefreshing] = useState(false); @@ -73,31 +73,24 @@ const SuggestedPeopleScreen: React.FC = () => { } }, [shouldResetData]); - useFocusEffect(() => { + useEffect(() => { const appendSelf = async () => { - AsyncStorage.getItem('suggested_people_url').then((image) => { - console.log('image path: ', image); - const self = { - user: getUserAsProfilePreviewType( - state.user.user, - state.user.profile, - ), - mutual_friends: [], - badges: [], - social_links: [], - suggested_people_url: image ? image : '', - }; - people.unshift(self); - setPeople(people); - }); + const self = { + user: getUserAsProfilePreviewType(state.user.user, state.user.profile), + mutual_friends: [], + badges: [], + social_links: [], + suggested_people_url: suggestedPeopleImage, + }; + people.unshift(self); + setPeople(people); }; if (suggested_people_linked < 2) { if (people.length > 1 && people[0].user.id !== loggedInUserId) { - console.log('appending self'); appendSelf(); } } - }); + }, [suggestedPeopleImage]); const loadMore = async () => { const loadNextPage = async () => @@ -156,40 +149,37 @@ const SuggestedPeopleScreen: React.FC = () => { // [], // ); - const SPBody = ({ - item, - }: { - item: ListRenderItemInfo; - }) => { - const data = item.item; - const firstItem = item.index === 0; - return ( - <> -