diff options
author | Ivan Chen <ivan@thetaggid.com> | 2021-02-20 14:04:54 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-20 14:04:54 -0500 |
commit | 5315bc891451c3905c5413bcf74e03d1769533d1 (patch) | |
tree | 79d7e7017159a639fe3d821c085d53e280b99efe /src | |
parent | 366f95e874c4d301880b743be150442fe20099a3 (diff) | |
parent | 973c1043f7fbc4200710727ab0b96c87370f4a60 (diff) |
Merge pull request #256 from shravyaramesh/profile-preview
Sp profile preview
Diffstat (limited to 'src')
-rw-r--r-- | src/components/taggs/TaggsBar.tsx | 1 | ||||
-rw-r--r-- | src/screens/suggestedPeople/SuggestedPeopleScreen.tsx | 70 | ||||
-rw-r--r-- | src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx | 2 |
3 files changed, 64 insertions, 9 deletions
diff --git a/src/components/taggs/TaggsBar.tsx b/src/components/taggs/TaggsBar.tsx index 641677e3..05ee18bb 100644 --- a/src/components/taggs/TaggsBar.tsx +++ b/src/components/taggs/TaggsBar.tsx @@ -153,6 +153,7 @@ const styles = StyleSheet.create({ marginBottom: 25, }, container: { + backgroundColor: 'white', shadowColor: '#000', shadowRadius: 10, shadowOffset: {width: 0, height: 2}, diff --git a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx index 89528a92..195604a3 100644 --- a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx +++ b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx @@ -1,3 +1,4 @@ +import AsyncStorage from '@react-native-community/async-storage'; import {useFocusEffect, useNavigation} from '@react-navigation/native'; import React, {useCallback, useEffect, useState} from 'react'; import { @@ -10,6 +11,7 @@ import { View, } from 'react-native'; import {Image} from 'react-native-animatable'; +import {TouchableOpacity} from 'react-native-gesture-handler'; import Animated from 'react-native-reanimated'; import {useDispatch, useSelector, useStore} from 'react-redux'; import {TabsGradient, TaggsBar} from '../../components'; @@ -24,7 +26,13 @@ import { ScreenType, SuggestedPeopleDataType, } from '../../types'; -import {fetchUserX, normalize, SCREEN_HEIGHT, SCREEN_WIDTH} from '../../utils'; +import { + fetchUserX, + getUserAsProfilePreviewType, + normalize, + SCREEN_HEIGHT, + SCREEN_WIDTH, +} from '../../utils'; import {userXInStore} from './../../utils/'; /** @@ -41,6 +49,9 @@ const SuggestedPeopleScreen: React.FC = () => { const {suggested_people_linked} = useSelector( (state: RootState) => state.user.profile, ) ?? {suggested_people_linked: -1}; + const {userId: loggedInUserId} = useSelector( + (state: RootState) => state.user.user, + ); const [people, setPeople] = useState<SuggestedPeopleDataType[]>([]); const [page, setPage] = useState(0); const [refreshing, setRefreshing] = useState(false); @@ -52,16 +63,48 @@ const SuggestedPeopleScreen: React.FC = () => { loadMore(false); }, [page]); - const loadMore = (resetData: boolean) => { + useFocusEffect(() => { + 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); + }); + }; + if (suggested_people_linked < 2) { + if (people.length > 1 && people[0].user.id !== loggedInUserId) { + appendSelf(); + } + } + }); + + const loadMore = async (resetData: boolean) => { const loadNextPage = async () => - await getSuggestedPeople(SP_PAGE_SIZE, page * SP_PAGE_SIZE); + await getSuggestedPeople( + SP_PAGE_SIZE, + resetData ? 0 : page * SP_PAGE_SIZE, + ); + loadNextPage().then((newUsers) => { + loadUserDataToStore(newUsers.map((ppl) => ppl.user)); + let newPeople = []; if (resetData) { - setPeople([]); + newPeople = newUsers; setPage(0); + } else { + newPeople = people.concat(newUsers); } - loadUserDataToStore(newUsers.map((ppl) => ppl.user)); - setPeople(people.concat(newUsers)); + setPeople(newPeople); }); }; @@ -132,10 +175,17 @@ const SuggestedPeopleScreen: React.FC = () => { <View style={styles.body}> <View style={styles.marginManager}> <View style={styles.addUserContainer}> - <View style={styles.nameInfoContainer}> + <TouchableOpacity + onPress={() => { + navigation.push('Profile', { + userXId: data.user.id, + screenType, + }); + }} + style={styles.nameInfoContainer}> <Text style={styles.firstName}>{data.user.first_name}</Text> <Text style={styles.username}>@{data.user.username}</Text> - </View> + </TouchableOpacity> {/* TODO: Finish me ?! */} {/* <TouchableOpacity activeOpacity={0.5} @@ -149,7 +199,9 @@ const SuggestedPeopleScreen: React.FC = () => { </View> <TaggsBar y={y} - userXId={data.user.id} + userXId={ + data.user.id === loggedInUserId ? undefined : data.user.id + } profileBodyHeight={0} screenType={screenType} whiteRing={true} diff --git a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx index b49761a0..5b678969 100644 --- a/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx +++ b/src/screens/suggestedPeopleOnboarding/SuggestedPeopleUploadPictureScreen.tsx @@ -1,5 +1,6 @@ import {useNavigation} from '@react-navigation/native'; import React, {useEffect, useState} from 'react'; +import AsyncStorage from '@react-native-community/async-storage'; import { Alert, Image, @@ -76,6 +77,7 @@ const SuggestedPeopleUploadPictureScreen: React.FC = ({route}) => { const success = await sendSuggestedPeoplePhoto(image); if (success) { dispatch(uploadedSuggestedPeoplePhoto()); + await AsyncStorage.setItem('suggested_people_url', image); } else { Alert.alert(ERROR_UPLOAD); } |