diff --git a/src/components/MeasurementForm.tsx b/src/components/MeasurementForm.tsx index bdf21d0..c4ac02f 100644 --- a/src/components/MeasurementForm.tsx +++ b/src/components/MeasurementForm.tsx @@ -45,6 +45,8 @@ export default function MeasurementForm({ onSubmit, initialValues }: Props) { return init }) + + const weight = parseFloat(values.weight) || 0 const bodyFatPct = parseFloat(values.bodyFatPercentage) || 0 const musclePct = parseFloat(values.musclePercentage) || 0 diff --git a/src/screens/NewMeasurementScreen.tsx b/src/screens/NewMeasurementScreen.tsx index bd6fd56..c35b850 100644 --- a/src/screens/NewMeasurementScreen.tsx +++ b/src/screens/NewMeasurementScreen.tsx @@ -1,5 +1,6 @@ -import React, { useEffect, useState } from 'react' -import { Alert } from 'react-native' +import React, { useCallback, useState } from 'react' +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' @@ -11,23 +12,20 @@ type Props = { export default function NewMeasurementScreen({ navigation }: Props) { const [latest, setLatest] = useState | undefined>(undefined) - useEffect(() => { - const load = async () => { - await initDatabase() - const m = await getLatestMeasurement() - if (m) { - setLatest({ - weight: m.weight, - bmi: m.bmi, - bodyFatPercentage: m.bodyFatPercentage, - musclePercentage: m.musclePercentage, - visceralFat: m.visceralFat, - bmr: m.bmr, - }) + useFocusEffect( + useCallback(() => { + let cancelled = false + const load = async () => { + await initDatabase() + const m = await getLatestMeasurement() + if (!cancelled) { + setLatest(m || {}) + } } - } - load() - }, []) + load() + return () => { cancelled = true } + }, []) + ) const handleSubmit = async (m: Measurement) => { await initDatabase() @@ -37,5 +35,18 @@ export default function NewMeasurementScreen({ navigation }: Props) { ]) } - return + if (latest === undefined) { + return ( + + Laden... + + ) + } + + return ( + | undefined} + /> + ) }