From ccf335fcf4aecb816475fbb09228640697cf7991 Mon Sep 17 00:00:00 2001 From: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> Date: Thu, 23 May 2024 10:07:10 +0200 Subject: [PATCH] fix(dashboard): settings navigation loop (#7412) * fix: settings navigation loop * fix comment --- .../layout/settings-layout/settings-layout.tsx | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/admin-next/dashboard/src/components/layout/settings-layout/settings-layout.tsx b/packages/admin-next/dashboard/src/components/layout/settings-layout/settings-layout.tsx index d4d44ecd12..aad543e45e 100644 --- a/packages/admin-next/dashboard/src/components/layout/settings-layout/settings-layout.tsx +++ b/packages/admin-next/dashboard/src/components/layout/settings-layout/settings-layout.tsx @@ -80,6 +80,18 @@ const useDeveloperRoutes = (): NavItemProps[] => { ) } +/** + * Ensure that the `from` prop is not another settings route, to avoid + * the user getting stuck in a navigation loop. + */ +const getSafeFromValue = (from: string) => { + if (from.startsWith("/settings")) { + return "/orders" + } + + return from +} + const SettingsSidebar = () => { const routes = useSettingRoutes() const developerRoutes = useDeveloperRoutes() @@ -90,7 +102,7 @@ const SettingsSidebar = () => { useEffect(() => { if (location.state?.from) { - setFrom(location.state.from) + setFrom(getSafeFromValue(location.state.from)) } }, [location])