From 3d591f4618539d5880abaa3c00cc542a0b1e093c Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Fri, 28 Oct 2022 18:41:17 +1300 Subject: [PATCH] Prevent searching twice on homepage first load --- SetList.tsx | 57 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/SetList.tsx b/SetList.tsx index 47bc02b..f55e0b4 100644 --- a/SetList.tsx +++ b/SetList.tsx @@ -3,7 +3,7 @@ import { useFocusEffect, useNavigation, } from '@react-navigation/native'; -import {useCallback, useEffect, useState} from 'react'; +import {useCallback, useState} from 'react'; import {FlatList} from 'react-native'; import {List} from 'react-native-paper'; import DrawerHeader from './DrawerHeader'; @@ -25,37 +25,36 @@ export default function SetList() { const {settings} = useSettings(); const navigation = useNavigation>(); - const refresh = useCallback(async () => { - const todaysSet = await getToday(); - if (todaysSet) setSet({...todaysSet}); - const newSets = await getSets({ - search: `%${search}%`, - limit, - offset: 0, - format: settings.date || '%Y-%m-%d %H:%M', - }); - console.log(`${SetList.name}.refresh:`, {first: newSets[0]}); - if (newSets.length === 0) return setSets([]); - setSets(newSets); - setOffset(0); - setEnd(false); - }, [search, settings.date]); + const refresh = useCallback( + async (term: string) => { + const todaysSet = await getToday(); + if (todaysSet) setSet({...todaysSet}); + const newSets = await getSets({ + search: `%${term}%`, + limit, + offset: 0, + format: settings.date || '%Y-%m-%d %H:%M', + }); + console.log(`${SetList.name}.refresh:`, {first: newSets[0]}); + if (newSets.length === 0) return setSets([]); + setSets(newSets); + setOffset(0); + setEnd(false); + }, + [settings.date], + ); useFocusEffect( useCallback(() => { - refresh(); - }, [refresh]), + refresh(search); + }, [refresh, search]), ); - useEffect(() => { - refresh(); - }, [search, refresh]); - const renderItem = useCallback( ({item}: {item: Set}) => ( - + refresh(search)} /> ), - [refresh], + [refresh, search], ); const next = useCallback(async () => { @@ -82,10 +81,18 @@ export default function SetList() { }); }, [navigation, set]); + const handleSearch = useCallback( + (value: string) => { + setSearch(value); + refresh(value); + }, + [refresh], + ); + return ( <> - + {sets?.length === 0 ? (