import {format} from 'date-fns'; import React, {useContext, useEffect, useRef, 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, show, setShow, set, }: { onSave: () => void; show: boolean; setShow: (visible: boolean) => void; set?: Set; }) { const [name, setName] = useState(''); const [reps, setReps] = useState(''); const [weight, setWeight] = useState(''); const [unit, setUnit] = useState(''); const [created, setCreated] = useState(new Date(new Date().toUTCString())); const weightRef = useRef(null); const repsRef = useRef(null); const unitRef = useRef(null); const db = useContext(DatabaseContext); const refresh = async () => { if (!set) return setCreated(new Date(new Date().toUTCString())); setName(set.name); setReps(set.reps.toString()); setWeight(set.weight.toString()); setUnit(set.unit); setCreated(new Date(set.created)); }; useEffect(() => { refresh(); }, [set]); const save = async () => { if (!name || !reps || !weight) return; if (!set?.id) await db.executeSql( `INSERT INTO sets(name, reps, weight, created, unit) VALUES (?,?,?,?,?)`, [name, reps, weight, new Date().toISOString(), unit || 'kg'], ); else await db.executeSql( `UPDATE sets SET name = ?, reps = ?, weight = ?, unit = ? WHERE id = ?`, [name, reps, weight, unit, set.id], ); setShow(false); onSave(); }; return ( setShow(false)}> {set?.id ? `Edit "${name}"` : 'Add a set'} repsRef.current?.focus()} autoCorrect={false} /> weightRef.current?.focus()} /> {format(created, 'PPPP p')} ); } const styles = StyleSheet.create({ text: { marginBottom: 10, }, title: { fontSize: 20, marginBottom: 10, }, });