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 ( - <> -