import {format} from 'date-fns'; import React, {useContext, useEffect, useState} from 'react'; import {StyleSheet, Text} from 'react-native'; import {Button, Dialog, Portal, TextInput} from 'react-native-paper'; import {DatabaseContext} from './App'; import Set from './set'; export default function EditSet({ onSave, set, setSet, }: { onSave: () => void; 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?.id) await db.executeSql( `INSERT INTO sets(name, reps, weight, created, unit) VALUES (?,?,?,?,?)`, [ newSet.name, newSet.reps, newSet.weight, new Date().toISOString(), newSet.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], ); setSet(undefined); onSave(); }; return ( setSet(undefined)}> {set?.id ? `Edit "${newSet.name}"` : 'Add a set'} setNewSet({...newSet, name})} autoCorrect={false} /> setNewSet({...newSet, reps})} /> setNewSet({...newSet, weight})} onSubmitEditing={save} /> setNewSet({...newSet, unit})} onSubmitEditing={save} /> {format(newSet.created, 'PPPP p')} ); } const styles = StyleSheet.create({ text: { marginBottom: 10, }, title: { fontSize: 20, marginBottom: 10, }, });