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 {getPlans} from './db'; import DrawerMenu from './DrawerMenu'; import MassiveFab from './MassiveFab'; import {Plan} from './plan'; import PlanItem from './PlanItem'; import {PlanPageParams} from './PlanPage'; export default function PlanList() { const [search, setSearch] = useState(''); const [plans, setPlans] = useState([]); const [refreshing, setRefresing] = useState(false); const navigation = useNavigation>(); const refresh = useCallback(async () => { getPlans(search).then(setPlans); }, [search]); useFocusEffect( useCallback(() => { refresh(); navigation.getParent()?.setOptions({ headerRight: () => , }); }, [refresh, navigation]), ); useEffect(() => { refresh(); }, [search, refresh]); const renderItem = useCallback( ({item}: {item: Plan}) => ( ), [refresh], ); return ( set.id?.toString() || ''} refreshing={refreshing} onRefresh={() => { setRefresing(true); refresh().finally(() => setRefresing(false)); }} ListEmptyComponent={ } /> navigation.navigate('EditPlan', { plan: {days: '', workouts: '', id: 0}, }) } /> ); } const styles = StyleSheet.create({ container: { flexGrow: 1, padding: 10, paddingBottom: '10%', }, progress: { marginTop: 10, }, });