import { NavigationProp, useFocusEffect, useNavigation, } from '@react-navigation/native'; import React, {useCallback, useEffect, useState} from 'react'; import {FlatList, StyleSheet, View} from 'react-native'; import {List, Searchbar} from 'react-native-paper'; import {BestPageParams} from './BestPage'; import {getBestReps, getBestWeights} from './db'; import Set from './set'; export default function BestList() { const [bests, setBests] = useState([]); const [search, setSearch] = useState(''); const [refreshing, setRefresing] = useState(false); const navigation = useNavigation>(); const refresh = useCallback(async () => { const weights = await getBestWeights(search); let newBest: Set[] = []; for (const set of weights) newBest.push(...(await getBestReps(search, set.weight))); setBests(newBest); }, [search]); useFocusEffect( useCallback(() => { refresh(); navigation.getParent()?.setOptions({ headerRight: () => null, }); }, [refresh, navigation]), ); useEffect(() => { refresh(); }, [search, refresh]); const renderItem = ({item}: {item: Set}) => ( navigation.navigate('ViewBest', {best: item})} /> ); return ( } refreshing={refreshing} onRefresh={async () => { setRefresing(true); await refresh(); setRefresing(false); }} renderItem={renderItem} data={bests} /> ); } const styles = StyleSheet.create({ container: { padding: 10, flexGrow: 1, paddingBottom: '10%', }, });