fix: add pull-to-refresh to HistoryScreen

This commit is contained in:
Eddy de Vink 2026-06-27 23:22:35 +02:00
commit d150dbf7b7

View file

@ -1,5 +1,5 @@
import React, { useCallback, useState } from 'react' import React, { useCallback, useState } from 'react'
import { View, FlatList, StyleSheet, Text } from 'react-native' import { View, FlatList, StyleSheet, Text, RefreshControl } from 'react-native'
import { useFocusEffect } from '@react-navigation/native' import { useFocusEffect } from '@react-navigation/native'
import { initDatabase, getAllMeasurements } from '../database/db' import { initDatabase, getAllMeasurements } from '../database/db'
import { Measurement } from '../types' import { Measurement } from '../types'
@ -7,18 +7,26 @@ import MeasurementRow from '../components/MeasurementRow'
export default function HistoryScreen() { export default function HistoryScreen() {
const [measurements, setMeasurements] = useState<Measurement[]>([]) const [measurements, setMeasurements] = useState<Measurement[]>([])
const [refreshing, setRefreshing] = useState(false)
const load = useCallback(async () => {
await initDatabase()
const all = await getAllMeasurements()
setMeasurements(all)
}, [])
useFocusEffect( useFocusEffect(
useCallback(() => { useCallback(() => {
const load = async () => {
await initDatabase()
const all = await getAllMeasurements()
setMeasurements(all)
}
load() load()
}, []) }, [load])
) )
const onRefresh = useCallback(async () => {
setRefreshing(true)
await load()
setRefreshing(false)
}, [load])
return ( return (
<View style={styles.container}> <View style={styles.container}>
<Text style={styles.count}>{measurements.length} metingen</Text> <Text style={styles.count}>{measurements.length} metingen</Text>
@ -28,6 +36,9 @@ export default function HistoryScreen() {
renderItem={({ item }) => <MeasurementRow measurement={item} />} renderItem={({ item }) => <MeasurementRow measurement={item} />}
contentContainerStyle={measurements.length === 0 ? styles.empty : undefined} contentContainerStyle={measurements.length === 0 ? styles.empty : undefined}
ListEmptyComponent={<Text style={styles.emptyText}>Nog geen metingen</Text>} ListEmptyComponent={<Text style={styles.emptyText}>Nog geen metingen</Text>}
refreshControl={
<RefreshControl refreshing={refreshing} onRefresh={onRefresh} />
}
/> />
</View> </View>
) )