From 8988e584ae5f304db84e1da12b4e794f5d39f086 Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Thu, 9 Nov 2023 18:52:50 +1300 Subject: [PATCH] Rename workout -> exercise A workout would typically refer to a list of exercises. --- AppDrawer.tsx | 12 ++--- AppStack.tsx | 12 ++--- EditWorkout.tsx => EditExercise.tsx | 20 ++++----- EditWorkouts.tsx => EditExercises.tsx | 17 +++---- EditPlan.tsx | 52 +++++++++++----------- WorkoutItem.tsx => ExerciseItem.tsx | 8 ++-- WorkoutList.tsx => ExerciseList.tsx | 64 +++++++++++++-------------- ExercisesPage.tsx | 34 ++++++++++++++ PlanItem.tsx | 10 ++--- PlanList.tsx | 6 +-- SettingsPage.tsx | 6 +-- StartPlan.tsx | 28 ++++++------ WorkoutsPage.tsx | 34 -------------- data-source.ts | 2 + drawer-param-list.ts | 2 +- migrations/1699508495726-exercises.ts | 10 +++++ plan.ts | 2 +- 17 files changed, 166 insertions(+), 153 deletions(-) rename EditWorkout.tsx => EditExercise.tsx (92%) rename EditWorkouts.tsx => EditExercises.tsx (92%) rename WorkoutItem.tsx => ExerciseItem.tsx (88%) rename WorkoutList.tsx => ExerciseList.tsx (71%) create mode 100644 ExercisesPage.tsx delete mode 100644 WorkoutsPage.tsx create mode 100644 migrations/1699508495726-exercises.ts diff --git a/AppDrawer.tsx b/AppDrawer.tsx index 399dc3a..610e3f6 100644 --- a/AppDrawer.tsx +++ b/AppDrawer.tsx @@ -7,7 +7,7 @@ import SetList from "./SetList"; import SettingsPage from "./SettingsPage"; import TimerPage from "./TimerPage"; import WeightList from "./WeightList"; -import WorkoutList from "./WorkoutList"; +import ExerciseList from "./ExerciseList"; import { DrawerParams } from "./drawer-param-list"; import useDark from "./use-dark"; @@ -29,6 +29,11 @@ export default function AppDrawer() { component={SetList} options={{ drawerIcon: () => }} /> + }} + /> , }} /> - }} - /> - - + + ); diff --git a/EditWorkout.tsx b/EditExercise.tsx similarity index 92% rename from EditWorkout.tsx rename to EditExercise.tsx index 9f94a72..7e8da18 100644 --- a/EditWorkout.tsx +++ b/EditExercise.tsx @@ -22,8 +22,8 @@ import { toast } from "./toast"; import { DrawerParams } from "./drawer-param-list"; import { StackParams } from "./AppStack"; -export default function EditWorkout() { - const { params } = useRoute>(); +export default function EditExercise() { + const { params } = useRoute>(); const [removeImage, setRemoveImage] = useState(false); const [showRemove, setShowRemove] = useState(false); const [name, setName] = useState(params.gymSet.name); @@ -50,7 +50,7 @@ export default function EditWorkout() { ); const update = async () => { - const newWorkout = { + const newExercise = { name: name || params.gymSet.name, sets: Number(sets), minutes: +minutes, @@ -58,14 +58,14 @@ export default function EditWorkout() { steps, image: removeImage ? "" : uri, } as GymSet; - await setRepo.update({ name: params.gymSet.name }, newWorkout); + await setRepo.update({ name: params.gymSet.name }, newExercise); await planRepo.query( `UPDATE plans - SET workouts = REPLACE(workouts, $1, $2) - WHERE workouts LIKE $3`, + SET exercises = REPLACE(exercises, $1, $2) + WHERE exercises LIKE $3`, [params.gymSet.name, name, `%${params.gymSet.name}%`] ); - navigate("Workouts", { update: newWorkout }); + navigate("Exercises", { update: newExercise }); }; const add = async () => { @@ -82,7 +82,7 @@ export default function EditWorkout() { created: now, }); emitter.emit(GYM_SET_CREATED); - navigate("Workouts", { reset: new Date().getTime() }); + navigate("Exercises", { reset: new Date().getTime() }); }; const save = async () => { @@ -112,7 +112,7 @@ export default function EditWorkout() { return ( <> @@ -143,7 +143,7 @@ export default function EditWorkout() { if (fixed.length !== newSets.length) toast("Sets must be a number"); }} - label="Sets per workout" + label="Sets per exercise" keyboardType="numeric" onSubmitEditing={() => minutesRef.current?.focus()} /> diff --git a/EditWorkouts.tsx b/EditExercises.tsx similarity index 92% rename from EditWorkouts.tsx rename to EditExercises.tsx index 2e85d0f..c4412c2 100644 --- a/EditWorkouts.tsx +++ b/EditExercises.tsx @@ -20,10 +20,11 @@ import { GYM_SET_CREATED } from "./gym-set"; import Settings from "./settings"; import StackHeader from "./StackHeader"; import { toast } from "./toast"; -import { WorkoutsPageParams } from "./WorkoutsPage"; +import { ExercisesPageParams } from "./ExercisesPage"; -export default function EditWorkouts() { - const { params } = useRoute>(); +export default function EditExercises() { + const { params } = + useRoute>(); const [removeImage, setRemoveImage] = useState(false); const [showRemove, setShowRemove] = useState(false); const [name, setName] = useState(""); @@ -37,7 +38,7 @@ export default function EditWorkouts() { const [oldSeconds, setOldSeconds] = useState(""); const [sets, setSets] = useState(""); const [oldSets, setOldSets] = useState(""); - const navigation = useNavigation>(); + const navigation = useNavigation>(); const setsRef = useRef(null); const stepsRef = useRef(null); const minutesRef = useRef(null); @@ -82,12 +83,12 @@ export default function EditWorkouts() { .createQueryBuilder() .update() .set({ - workouts: () => `REPLACE(workouts, '${oldName}', '${name}')`, + exercises: () => `REPLACE(exercises, '${oldName}', '${name}')`, }) - .where("workouts LIKE :name", { name: `%${oldName}%` }) + .where("exercises LIKE :name", { name: `%${oldName}%` }) .execute(); } - navigation.navigate("WorkoutList", { clearNames: true }); + navigation.navigate("ExerciseList", { clearNames: true }); }; const changeImage = useCallback(async () => { @@ -111,7 +112,7 @@ export default function EditWorkouts() { return ( <> - + ( plan.days ? plan.days.split(",") : [] ); - const [workouts, setWorkouts] = useState( - plan.workouts ? plan.workouts.split(",") : [] + const [exercises, setExercises] = useState( + plan.exercises ? plan.exercises.split(",") : [] ); const [names, setNames] = useState([]); const { navigate: drawerNavigate } = @@ -56,27 +56,27 @@ export default function EditPlan() { }, []); const save = useCallback(async () => { - console.log(`${EditPlan.name}.save`, { days, workouts, plan }); - if (!days || !workouts) return; - const newWorkouts = workouts.filter((workout) => workout).join(","); + console.log(`${EditPlan.name}.save`, { days, exercises, plan }); + if (!days || !exercises) return; + const newExercises = exercises.filter((exercise) => exercise).join(","); const newDays = days.filter((day) => day).join(","); await planRepo.save({ title: title, days: newDays, - workouts: newWorkouts, + exercises: newExercises, id: plan.id, }); - }, [title, days, workouts, plan]); + }, [title, days, exercises, plan]); - const toggleWorkout = useCallback( + const toggleExercise = useCallback( (on: boolean, name: string) => { if (on) { - setWorkouts([...workouts, name]); + setExercises([...exercises, name]); } else { - setWorkouts(workouts.filter((workout) => workout !== name)); + setExercises(exercises.filter((exercise) => exercise !== name)); } }, - [setWorkouts, workouts] + [setExercises, exercises] ); const toggleDay = useCallback( @@ -99,32 +99,32 @@ export default function EditPlan() { /> ); - const renderWorkout = ({ + const renderExercise = ({ item, drag, }: ReorderableListRenderItemInfo) => ( toggleWorkout(!workouts.includes(item), item)} + onPress={() => toggleExercise(!exercises.includes(item), item)} style={{ flexDirection: "row", alignItems: "center" }} > toggleWorkout(value, item)} + onValueChange={(value) => toggleExercise(value, item)} /> {item} ); - const reorderWorkout = (from: number, to: number) => { + const reorderExercise = (from: number, to: number) => { const newNames = [...names]; const copy = newNames[from]; newNames[from] = newNames[to]; newNames[to] = copy; - const newWorkouts = newNames.filter((name) => workouts.includes(name)); - console.log({ newWorkouts }); - setWorkouts(newWorkouts); + const newExercises = newNames.filter((name) => exercises.includes(name)); + console.log({ newExercises }); + setExercises(newExercises); }; return ( @@ -140,10 +140,10 @@ export default function EditPlan() { where: { id: plan.id }, }); let first = await setRepo.findOne({ - where: { name: workouts[0] }, + where: { name: exercises[0] }, order: { created: "desc" }, }); - if (!first) first = { ...defaultSet, name: workouts[0] }; + if (!first) first = { ...defaultSet, name: exercises[0] }; delete first.id; stackNavigate("StartPlan", { plan: newPlan, first }); }} @@ -161,18 +161,18 @@ export default function EditPlan() { Days {DAYS.map((day) => renderDay(day))} - Workouts + Exercises {names.length === 0 ? ( - No workouts found. + No exercises found. ) : ( - reorderWorkout(fromIndex, toIndex) + reorderExercise(fromIndex, toIndex) } - renderItem={renderWorkout} + renderItem={renderExercise} keyExtractor={(item) => item} dragScale={1.025} style={{ @@ -183,7 +183,7 @@ export default function EditPlan() { )}