From a544272fdead4a351f9750180587c6d4e7e1cecc Mon Sep 17 00:00:00 2001 From: Leon Jiang <35908040+leonyjiang@users.noreply.github.com> Date: Mon, 15 Mar 2021 18:54:10 -0400 Subject: Update query to get randomized ordering --- src/screens/suggestedPeople/SuggestedPeopleScreen.tsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/screens') diff --git a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx index 61adc171..651d858c 100644 --- a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx +++ b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx @@ -8,7 +8,6 @@ import { ViewToken, } from 'react-native'; -import Animated from 'react-native-reanimated'; import {useDispatch, useSelector, useStore} from 'react-redux'; import {TabsGradient, TaggLoadingIndicator, Background} from '../../components'; import {SP_PAGE_SIZE} from '../../constants'; @@ -39,7 +38,6 @@ import SPBody from './SPBody'; */ const SuggestedPeopleScreen: React.FC = () => { - const y = Animated.useValue(0); const navigation = useNavigation(); const state: RootState = useStore().getState(); const dispatch = useDispatch(); @@ -65,6 +63,11 @@ const SuggestedPeopleScreen: React.FC = () => { people.length ? setLoading(false) : setLoading(true); }, [people]); + /* + * The randomly-generated seed used by the API to order the suggested people. + */ + const randomizationSeed = Math.random(); + const stausBarRef = useRef(hideStatusBar); // loads data and append it to users based on current page @@ -106,6 +109,7 @@ const SuggestedPeopleScreen: React.FC = () => { await getSuggestedPeople( SP_PAGE_SIZE, shouldResetData ? 0 : page * SP_PAGE_SIZE, + randomizationSeed, ); loadNextPage().then((newUsers) => { @@ -131,9 +135,11 @@ const SuggestedPeopleScreen: React.FC = () => { await Promise.all(users.map((user) => loadUserData(user))); }; + // TODO: only reload data, don't reset screen type, which causes the entire + // screen to re-render and makes for bad UX const onRefresh = () => { const reset = async () => { - await dispatch(resetScreenType(screenType)); + dispatch(resetScreenType(screenType)); setShouldResetData(true); }; setRefreshing(true); -- cgit v1.2.3-70-g09d2 From 1cbf67aa7b754a21eccd5e32a25c3b01b2339640 Mon Sep 17 00:00:00 2001 From: Leon Jiang <35908040+leonyjiang@users.noreply.github.com> Date: Tue, 16 Mar 2021 14:24:27 -0400 Subject: Fix bug causing seed generation on each render --- src/screens/suggestedPeople/SuggestedPeopleScreen.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/screens') diff --git a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx index 651d858c..4094b0a3 100644 --- a/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx +++ b/src/screens/suggestedPeople/SuggestedPeopleScreen.tsx @@ -66,7 +66,9 @@ const SuggestedPeopleScreen: React.FC = () => { /* * The randomly-generated seed used by the API to order the suggested people. */ - const randomizationSeed = Math.random(); + const [randomizationSeed, setRandomizationSeed] = useState( + Math.random(), + ); const stausBarRef = useRef(hideStatusBar); @@ -146,6 +148,7 @@ const SuggestedPeopleScreen: React.FC = () => { reset().then(() => { setRefreshing(false); }); + setRandomizationSeed(Math.random()); }; useFocusEffect( -- cgit v1.2.3-70-g09d2