import React, {useEffect, useRef, useState} from 'react'; import {ScrollView, View} from 'react-native'; import {Button} from 'react-native-paper'; import {MARGIN} from './constants'; import MassiveInput from './MassiveInput'; import Set from './set'; import {getSets} from './set.service'; export default function SetForm({ save, set, workouts, }: { set: Set; save: (set: Set) => void; workouts?: string[]; }) { const [name, setName] = useState(set.name); const [reps, setReps] = useState(set.reps.toString()); const [weight, setWeight] = useState(set.weight.toString()); const [unit, setUnit] = useState(set.unit); const [uri, setUri] = useState(set.image); const [minutes, setMinutes] = useState(set.minutes?.toString()); const [seconds, setSeconds] = useState(set.seconds?.toString()); const [selection, setSelection] = useState({ start: 0, end: set.reps.toString().length, }); const weightRef = useRef(null); const repsRef = useRef(null); const unitRef = useRef(null); const minutesRef = useRef(null); const secondsRef = useRef(null); useEffect(() => { console.log('SetForm.useEffect:', {uri, name: set.name}); if (!uri) getSets({search: set.name, limit: 1, offset: 0}).then(([s]) => setUri(s?.image), ); }, [uri, set.name]); const handleSubmit = () => { if (!name) return; save({ name, reps: Number(reps), weight: Number(weight), id: set.id, unit, image: uri, minutes: Number(minutes ?? 3), seconds: Number(seconds ?? 30), sets: set.sets ?? 3, }); }; return ( <> repsRef.current?.focus()} /> weightRef.current?.focus()} selection={selection} onSelectionChange={e => setSelection(e.nativeEvent.selection)} autoFocus={!!name} blurOnSubmit={false} innerRef={repsRef} /> unitRef.current?.focus()} innerRef={weightRef} /> minutesRef.current?.focus()} innerRef={unitRef} /> {workouts && ( )} {!set.id && ( secondsRef.current?.focus()} /> )} ); }