import {RouteProp, useNavigation, useRoute} from '@react-navigation/native' import {useCallback} from 'react' import {NativeModules, View} from 'react-native' import {PADDING} from './constants' import {getNow, setRepo} from './db' import GymSet from './gym-set' import {HomePageParams} from './home-page-params' import {useSnackbar} from './MassiveSnack' import SetForm from './SetForm' import StackHeader from './StackHeader' import {useSettings} from './use-settings' export default function EditSet() { const {params} = useRoute>() const {set} = params const navigation = useNavigation() const {toast} = useSnackbar() const {settings} = useSettings() const startTimer = useCallback( async (name: string) => { if (!settings.alarm) return const {minutes, seconds} = await setRepo.findOne({where: {name}}) const milliseconds = (minutes ?? 3) * 60 * 1000 + (seconds ?? 0) * 1000 NativeModules.AlarmModule.timer( milliseconds, !!settings.vibrate, settings.sound, !!settings.noSound, ) }, [settings], ) const add = useCallback( async (value: GymSet) => { startTimer(value.name) const [{now}] = await getNow() value.created = now value.hidden = false console.log(`${EditSet.name}.add`, {set: value}) const result = await setRepo.save(value) console.log({result}) if (!settings.notify) return if ( value.weight > set.weight || (value.reps > set.reps && value.weight === set.weight) ) toast("Great work King! That's a new record.", 3000) }, [startTimer, set, toast, settings], ) const save = useCallback( async (value: GymSet) => { if (typeof set.id === 'number') await setRepo.save(value) else await add(value) navigation.goBack() }, [add, set.id, navigation], ) return ( <> ) }