Prevent searching twice on homepage first load
This commit is contained in:
parent
e6dcd4a47e
commit
3d591f4618
57
SetList.tsx
57
SetList.tsx
|
@ -3,7 +3,7 @@ import {
|
||||||
useFocusEffect,
|
useFocusEffect,
|
||||||
useNavigation,
|
useNavigation,
|
||||||
} from '@react-navigation/native';
|
} from '@react-navigation/native';
|
||||||
import {useCallback, useEffect, useState} from 'react';
|
import {useCallback, useState} from 'react';
|
||||||
import {FlatList} from 'react-native';
|
import {FlatList} from 'react-native';
|
||||||
import {List} from 'react-native-paper';
|
import {List} from 'react-native-paper';
|
||||||
import DrawerHeader from './DrawerHeader';
|
import DrawerHeader from './DrawerHeader';
|
||||||
|
@ -25,37 +25,36 @@ export default function SetList() {
|
||||||
const {settings} = useSettings();
|
const {settings} = useSettings();
|
||||||
const navigation = useNavigation<NavigationProp<HomePageParams>>();
|
const navigation = useNavigation<NavigationProp<HomePageParams>>();
|
||||||
|
|
||||||
const refresh = useCallback(async () => {
|
const refresh = useCallback(
|
||||||
const todaysSet = await getToday();
|
async (term: string) => {
|
||||||
if (todaysSet) setSet({...todaysSet});
|
const todaysSet = await getToday();
|
||||||
const newSets = await getSets({
|
if (todaysSet) setSet({...todaysSet});
|
||||||
search: `%${search}%`,
|
const newSets = await getSets({
|
||||||
limit,
|
search: `%${term}%`,
|
||||||
offset: 0,
|
limit,
|
||||||
format: settings.date || '%Y-%m-%d %H:%M',
|
offset: 0,
|
||||||
});
|
format: settings.date || '%Y-%m-%d %H:%M',
|
||||||
console.log(`${SetList.name}.refresh:`, {first: newSets[0]});
|
});
|
||||||
if (newSets.length === 0) return setSets([]);
|
console.log(`${SetList.name}.refresh:`, {first: newSets[0]});
|
||||||
setSets(newSets);
|
if (newSets.length === 0) return setSets([]);
|
||||||
setOffset(0);
|
setSets(newSets);
|
||||||
setEnd(false);
|
setOffset(0);
|
||||||
}, [search, settings.date]);
|
setEnd(false);
|
||||||
|
},
|
||||||
|
[settings.date],
|
||||||
|
);
|
||||||
|
|
||||||
useFocusEffect(
|
useFocusEffect(
|
||||||
useCallback(() => {
|
useCallback(() => {
|
||||||
refresh();
|
refresh(search);
|
||||||
}, [refresh]),
|
}, [refresh, search]),
|
||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
refresh();
|
|
||||||
}, [search, refresh]);
|
|
||||||
|
|
||||||
const renderItem = useCallback(
|
const renderItem = useCallback(
|
||||||
({item}: {item: Set}) => (
|
({item}: {item: Set}) => (
|
||||||
<SetItem item={item} key={item.id} onRemove={refresh} />
|
<SetItem item={item} key={item.id} onRemove={() => refresh(search)} />
|
||||||
),
|
),
|
||||||
[refresh],
|
[refresh, search],
|
||||||
);
|
);
|
||||||
|
|
||||||
const next = useCallback(async () => {
|
const next = useCallback(async () => {
|
||||||
|
@ -82,10 +81,18 @@ export default function SetList() {
|
||||||
});
|
});
|
||||||
}, [navigation, set]);
|
}, [navigation, set]);
|
||||||
|
|
||||||
|
const handleSearch = useCallback(
|
||||||
|
(value: string) => {
|
||||||
|
setSearch(value);
|
||||||
|
refresh(value);
|
||||||
|
},
|
||||||
|
[refresh],
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<DrawerHeader name="Home" />
|
<DrawerHeader name="Home" />
|
||||||
<Page onAdd={onAdd} search={search} setSearch={setSearch}>
|
<Page onAdd={onAdd} search={search} setSearch={handleSearch}>
|
||||||
{sets?.length === 0 ? (
|
{sets?.length === 0 ? (
|
||||||
<List.Item
|
<List.Item
|
||||||
title="No sets yet"
|
title="No sets yet"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user