From e417897bb74e29bb5e1e94a5dc6a10cf006b4a49 Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Fri, 8 Jul 2022 20:29:31 +1200 Subject: [PATCH] Reduce amount of state in EditSet --- EditSet.tsx | 53 +++++++++++++++++++--------------------------------- HomePage.tsx | 2 +- set.ts | 10 +++++----- 3 files changed, 25 insertions(+), 40 deletions(-) diff --git a/EditSet.tsx b/EditSet.tsx index eaa69b4c..c6890950 100644 --- a/EditSet.tsx +++ b/EditSet.tsx @@ -1,5 +1,5 @@ import {format} from 'date-fns'; -import React, {useContext, useEffect, useState} from 'react'; +import React, {useContext} from 'react'; import {StyleSheet, Text} from 'react-native'; import {Button, Dialog, Portal, TextInput} from 'react-native-paper'; import {DatabaseContext} from './App'; @@ -14,42 +14,25 @@ export default function EditSet({ set?: Set; setSet: (set?: Set) => void; }) { - const [newSet, setNewSet] = useState({ - name: '', - reps: '', - weight: '', - unit: '', - created: new Date(), - }); const db = useContext(DatabaseContext); - useEffect(() => { - if (set) - setNewSet({ - ...set, - reps: set.reps.toString(), - weight: set.weight.toString(), - created: new Date(set.created), - }); - }, [set]); - const save = async () => { - if (!newSet.name || !newSet.reps || !newSet.weight) return; + if (!set?.name || !set?.reps || !set?.weight) return; if (!set?.id) await db.executeSql( `INSERT INTO sets(name, reps, weight, created, unit) VALUES (?,?,?,?,?)`, [ - newSet.name, - newSet.reps, - newSet.weight, + set.name, + set.reps, + set.weight, new Date().toISOString(), - newSet.unit || 'kg', + set.unit || 'kg', ], ); else await db.executeSql( `UPDATE sets SET name = ?, reps = ?, weight = ?, unit = ? WHERE id = ?`, - [newSet.name, newSet.reps, newSet.weight, newSet.unit, set.id], + [set.name, set.reps, set.weight, set.unit, set.id], ); setSet(undefined); onSave(); @@ -59,40 +42,42 @@ export default function EditSet({ setSet(undefined)}> - {set?.id ? `Edit "${newSet.name}"` : 'Add a set'} + {set?.id ? `Edit "${set.name}"` : 'Add a set'} setNewSet({...newSet, name})} + value={set?.name} + onChangeText={name => setSet({...set, name})} autoCorrect={false} /> setNewSet({...newSet, reps})} + value={set?.reps?.toString() || ''} + onChangeText={reps => setSet({...set, reps})} /> setNewSet({...newSet, weight})} + value={set?.weight?.toString() || ''} + onChangeText={weight => setSet({...set, weight})} onSubmitEditing={save} /> setNewSet({...newSet, unit})} + value={set?.unit} + onChangeText={unit => setSet({...set, unit})} onSubmitEditing={save} /> - {format(newSet.created, 'PPPP p')} + + {format(new Date(set?.created || 0), 'PPPP p')} +