From 18f4c36baa23dd0ed7cbe828534713261387dd01 Mon Sep 17 00:00:00 2001 From: Diptesh Choudhuri Date: Fri, 27 Dec 2024 15:03:37 +0530 Subject: [PATCH] fix(frontend): hard reload when starting new workout --- apps/frontend/app/lib/hooks.ts | 4 +- .../app/routes/_dashboard.fitness.$action.tsx | 119 +++++++++++------- 2 files changed, 74 insertions(+), 49 deletions(-) diff --git a/apps/frontend/app/lib/hooks.ts b/apps/frontend/app/lib/hooks.ts index f7450bed03..8dafe83db7 100644 --- a/apps/frontend/app/lib/hooks.ts +++ b/apps/frontend/app/lib/hooks.ts @@ -1,7 +1,6 @@ import { useComputedColorScheme, useMantineTheme } from "@mantine/core"; import { useForceUpdate } from "@mantine/hooks"; import { - useNavigate, useRevalidator, useRouteLoaderData, useSearchParams, @@ -96,13 +95,12 @@ export const useConfirmSubmit = () => { }; export const useGetWorkoutStarter = () => { - const navigate = useNavigate(); const revalidator = useRevalidator(); const [_, setCurrentWorkout] = useCurrentWorkout(); const fn = (wkt: InProgressWorkout, action: FitnessAction) => { setCurrentWorkout(wkt); - navigate($path("/fitness/:action", { action }), { flushSync: true }); + window.location.href = $path("/fitness/:action", { action }); revalidator.revalidate(); }; return fn; diff --git a/apps/frontend/app/routes/_dashboard.fitness.$action.tsx b/apps/frontend/app/routes/_dashboard.fitness.$action.tsx index 7b287aaf1c..06452541d3 100644 --- a/apps/frontend/app/routes/_dashboard.fitness.$action.tsx +++ b/apps/frontend/app/routes/_dashboard.fitness.$action.tsx @@ -272,10 +272,9 @@ export default function Page() { const [supersetWithExerciseIdentifier, setSupersetModalOpened] = useState< string | null >(null); - const [ - reorderDrawerOpened, - { close: reorderDrawerClose, toggle: reorderDrawerToggle }, - ] = useDisclosure(false); + const [isReorderDrawerOpened, setIsReorderDrawerOpened] = useState< + string | null + >(); const [_, setMeasurementsDrawerOpen] = useMeasurementsDrawerOpen(); const [currentTimer, setCurrentTimer] = useTimerAtom(); const [assetsModalOpened, setAssetsModalOpened] = useState< @@ -284,6 +283,9 @@ export default function Page() { const promptForRestTimer = userPreferences.fitness.logging.promptForRestTimer; const performTasksAfterSetConfirmed = usePerformTasksAfterSetConfirmed(); const isWorkoutPaused = isString(currentWorkout?.durations.at(-1)?.to); + const isAnySetConfirmed = currentWorkout?.exercises.some( + (_e, idx) => getProgressOfExercise(currentWorkout, idx) !== "not-started", + ); useInterval(() => { if ( @@ -368,6 +370,13 @@ export default function Page() { } setCurrentTimer(RESET); }; + const openReorderDrawer = (exerciseIdentifier: string | null) => { + setIsReorderDrawerOpened(exerciseIdentifier); + if (!exerciseIdentifier) return; + setTimeout(() => { + setIsReorderDrawerOpened(null); + }, 4000); + }; return ( @@ -387,9 +396,10 @@ export default function Page() { pauseOrResumeTimer={pauseOrResumeTimer} /> setIsReorderDrawerOpened(undefined)} /> 0) + - Number(currentWorkout.exercises.length > 1) + Number(isAnySetConfirmed) } > ) : null} - {currentWorkout.exercises.length > 0 ? ( + {isAnySetConfirmed ? ( <>