From e8cba5e9f324ad1f808ee3fdfb25b91763c478a8 Mon Sep 17 00:00:00 2001 From: Ivan Chen Date: Wed, 24 Feb 2021 17:13:33 -0500 Subject: hide statusbar logic and useMemo for background image --- .../suggestedPeople/SuggestedPeopleScreen.tsx | 31 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx index 6cf792ef..c25ec01a 100644 --- a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx +++ b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx @@ -1,5 +1,12 @@ import {useFocusEffect, useNavigation} from '@react-navigation/native'; -import React, {memo, Fragment, useCallback, useEffect, useState} from 'react'; +import React, { + memo, + Fragment, + useCallback, + useEffect, + useState, + useMemo, +} from 'react'; import { FlatList, ListRenderItemInfo, @@ -8,6 +15,7 @@ import { StyleSheet, Text, View, + ViewToken, } from 'react-native'; import {Image} from 'react-native-animatable'; import {TouchableOpacity} from 'react-native-gesture-handler'; @@ -61,6 +69,7 @@ const SuggestedPeopleScreen: React.FC = () => { 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(() => { @@ -215,19 +224,32 @@ const SuggestedPeopleScreen: React.FC = () => { } }; + const onViewableItemsChanged = useCallback( + ({viewableItems}: {viewableItems: ViewToken[]}) => { + setHideStatusBar(viewableItems[0].index !== 0); + }, + [], + ); + const SPBody = memo( ({item}: {item: ListRenderItemInfo}) => { const data = item.item; const firstItem = item.index === 0; - return ( - <> - + const backgroundImage = useMemo( + () => ( + ), + [data.suggested_people_url], + ); + return ( + <> +