import {format} from 'date-fns'; import React, {useContext} 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({ onUpdate, onCreate, set, setSet, }: { onUpdate: () => void; onCreate: () => void; set?: Set; setSet: (set?: Set) => void; }) { const db = useContext(DatabaseContext); const update = async () => { console.log(`${EditSet.name}.${update.name}`, {set}); await db.executeSql( `INSERT INTO sets(name, reps, weight, created, unit) VALUES (?,?,?,?,?)`, [ set?.name, set?.reps, set?.weight, new Date().toISOString(), set?.unit || 'kg', ], ); onUpdate(); }; const create = async () => { console.log(`${EditSet.name}.${create.name}`, {set}); await db.executeSql( `UPDATE sets SET name = ?, reps = ?, weight = ?, unit = ? WHERE id = ?`, [set?.name, set?.reps, set?.weight, set?.unit, set?.id], ); onCreate(); }; const save = async () => { if (!set?.name || set?.reps === undefined || set?.weight === undefined) return; if (set?.id) await update(); else await create(); setSet(undefined); }; return ( setSet(undefined)}> {set?.id ? `Edit "${set.name}"` : 'Add a set'} setSet({...set, name})} autoCorrect={false} /> setSet({...set, reps})} /> setSet({...set, weight})} onSubmitEditing={save} /> setSet({...set, unit})} onSubmitEditing={save} /> {format( set?.created ? new Date(set.created) : new Date(), 'PPPP p', )} ); } const styles = StyleSheet.create({ text: { marginBottom: 10, }, });