import { RouteProp, useFocusEffect, useNavigation, useRoute, } from '@react-navigation/native'; import React, {useCallback, useContext, useState} from 'react'; import {ScrollView} from 'react-native'; import {Button, IconButton} from 'react-native-paper'; import {set} from 'react-native-reanimated'; import {DatabaseContext} from './App'; import MassiveInput from './MassiveInput'; import {WorkoutsPageParams} from './WorkoutsPage'; export default function EditWorkout() { const [name, setName] = useState(''); const {params} = useRoute>(); const db = useContext(DatabaseContext); const navigation = useNavigation(); useFocusEffect( useCallback(() => { navigation.getParent()?.setOptions({ headerLeft: () => ( navigation.goBack()} /> ), headerRight: null, title: params.value.name ? 'Edit workout' : 'New workout', }); }, [navigation, params.value.name]), ); const update = useCallback(async () => { console.log(`${EditWorkout.name}.update`, set); await db.executeSql(`UPDATE sets SET name = ? WHERE name = ?`, [ name, params.value.name, ]); await db.executeSql( `UPDATE plans SET workouts = REPLACE(workouts, ?, ?) WHERE workouts LIKE ?`, [params.value.name, name, `%${params.value.name}%`], ); navigation.goBack(); }, [db, navigation, params.value.name, name]); const add = useCallback(async () => { const insert = ` INSERT INTO sets(name, reps, weight, created, unit, hidden) VALUES (?,0,0,strftime('%Y-%m-%dT%H:%M:%S', 'now', 'localtime'),'kg',true) `; await db.executeSql(insert, [name]); navigation.goBack(); }, [db, navigation, name]); const save = useCallback(async () => { if (params.value.name) return update(); return add(); }, [update, add, params.value.name]); return ( {params.value.name ? ( <> ) : ( )} ); }