From 95681c0b3d176724ddc4fc54379e8e9ca1da0471 Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Mon, 31 Jul 2023 15:54:32 +1200 Subject: [PATCH] Save plan before starting it Also after saving it makes more sense to just navigate to PlanList instead of calling navigation.goBack(). This way we can make sure we have up-to-date data. The old way would typically lead to us seeing stale data. E.g. 1. Tap on a plan 2. Tap on edit 3. Change details of the plan 4. Press save 5. See old plan Now when we save we instead see the original list of plans. --- EditPlan.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/EditPlan.tsx b/EditPlan.tsx index 43ca8d8..7190a13 100644 --- a/EditPlan.tsx +++ b/EditPlan.tsx @@ -46,8 +46,7 @@ export default function EditPlan() { const newWorkouts = workouts.filter((workout) => workout).join(',') const newDays = days.filter((day) => day).join(',') await planRepo.save({ days: newDays, workouts: newWorkouts, id: plan.id }) - navigation.goBack() - }, [days, workouts, plan, navigation]) + }, [days, workouts, plan]) const toggleWorkout = useCallback( (on: boolean, name: string) => { @@ -79,13 +78,15 @@ export default function EditPlan() { {typeof plan.id === 'number' && ( { + await save() + const newPlan = await planRepo.findOne({ where: { id: plan.id } }) let first = await setRepo.findOne({ where: { name: workouts[0] }, order: { created: 'desc' }, }) if (!first) first = { ...defaultSet, name: workouts[0] } delete first.id - navigation.navigate('StartPlan', { plan: params.plan, first }) + navigation.navigate('StartPlan', { plan: newPlan, first }) }} icon='play-arrow' /> @@ -126,7 +127,10 @@ export default function EditPlan() { style={styles.button} mode='outlined' icon='save' - onPress={save} + onPress={async () => { + await save() + navigation.navigate('PlanList') + }} > Save