feat: detect duplicate measurement dates, ask to overwrite

This commit is contained in:
Eddy de Vink 2026-06-28 00:39:56 +02:00
commit 1f43918e84

View file

@ -3,7 +3,7 @@ import { View, Text, Alert } from 'react-native'
import { useFocusEffect } from '@react-navigation/native'
import MeasurementForm from '../components/MeasurementForm'
import { Measurement } from '../types'
import { initDatabase, insertMeasurement, getLatestMeasurement } from '../database/db'
import { initDatabase, insertMeasurement, getLatestMeasurement, getMeasurementByDate, upsertMeasurement } from '../database/db'
type Props = {
navigation: any
@ -29,7 +29,32 @@ export default function NewMeasurementScreen({ navigation }: Props) {
const handleSubmit = async (m: Measurement) => {
await initDatabase()
await insertMeasurement(m)
const existing = await getMeasurementByDate(m.measuredAt)
if (existing) {
Alert.alert(
'Dubbele datum',
`Er bestaat al een meting van ${new Date(m.measuredAt).toLocaleDateString('nl-NL')}. Overschrijven?`,
[
{ text: 'Annuleren', style: 'cancel' },
{
text: 'Overschrijven',
style: 'destructive',
onPress: () => doSave(m, existing.id),
},
]
)
return
}
doSave(m)
}
const doSave = async (m: Measurement, existingId?: string) => {
if (existingId) {
m.id = existingId
await upsertMeasurement(m)
} else {
await insertMeasurement(m)
}
try {
const { syncAll } = await import('../sync/syncService')
await syncAll()