import {useFocusEffect} from '@react-navigation/native'; import {NativeStackScreenProps} from '@react-navigation/native-stack'; import React, {useEffect, useState} from 'react'; import {FlatList, StyleSheet, View} from 'react-native'; import {List, Searchbar, TextInput} from 'react-native-paper'; import {RootStackParamList} from './App'; import {getDb} from './db'; import Exercise from './exercise'; export default function Exercises() { const [exercises, setExercises] = useState([]); const [search, setSearch] = useState(''); const [refreshing, setRefresing] = useState(false); const refresh = async () => { const db = await getDb(); const [result] = await db.executeSql( `SELECT name, reps, unit, MAX(weight) AS weight FROM sets WHERE name LIKE ? GROUP BY name;`, [`%${search}%`], ); if (!result) return setExercises([]); setExercises(result.rows.raw()); }; useFocusEffect(() => { refresh(); }); useEffect(() => { refresh(); }, [search]); const renderItem = ({item}: {item: Exercise}) => ( ); return ( { setRefresing(true); await refresh(); setRefresing(false); }} renderItem={renderItem} data={exercises} /> ); } const styles = StyleSheet.create({ container: { padding: 10, }, });