From 253cccf0a5d8e3cbeadeec59951de3155d298fbf Mon Sep 17 00:00:00 2001 From: Satya Patel Date: Sun, 26 Apr 2026 15:07:50 -0700 Subject: [PATCH] fix v2 sidebar nav-away on workspace delete MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dashboard sidebar's navigate-away check used useParams({ strict: false }) from a layout-level component, which didn't reliably surface the leaf route's workspaceId — so deletion silently no-op'd the nav and left the user on the doomed workspace's URL. Switch to useMatchRoute (the same pattern the sidebar item uses for isActive). --- .../useNavigateAwayFromWorkspace.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNavigateAwayFromWorkspace/useNavigateAwayFromWorkspace.ts b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNavigateAwayFromWorkspace/useNavigateAwayFromWorkspace.ts index 6915878a0f6..19bf7f0aff0 100644 --- a/apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNavigateAwayFromWorkspace/useNavigateAwayFromWorkspace.ts +++ b/apps/desktop/src/renderer/routes/_authenticated/_dashboard/components/DashboardSidebar/hooks/useNavigateAwayFromWorkspace/useNavigateAwayFromWorkspace.ts @@ -1,4 +1,4 @@ -import { useNavigate, useParams } from "@tanstack/react-router"; +import { useMatchRoute, useNavigate } from "@tanstack/react-router"; import { navigateToV2Workspace } from "renderer/routes/_authenticated/_dashboard/utils/workspace-navigation"; import { useCollections } from "renderer/routes/_authenticated/providers/CollectionsProvider"; import { getFlattenedV2WorkspaceIds } from "../../utils/getFlattenedV2WorkspaceIds"; @@ -11,13 +11,19 @@ import { getFlattenedV2WorkspaceIds } from "../../utils/getFlattenedV2WorkspaceI */ export function useNavigateAwayFromWorkspace() { const navigate = useNavigate(); - const params = useParams({ strict: false }); + const matchRoute = useMatchRoute(); const collections = useCollections(); return (workspaceId: string) => { - if (params.workspaceId !== workspaceId) return; - const ids = getFlattenedV2WorkspaceIds(collections); - const next = ids.find((id) => id !== workspaceId); + const isViewingWorkspace = !!matchRoute({ + to: "/v2-workspace/$workspaceId", + params: { workspaceId }, + fuzzy: true, + }); + if (!isViewingWorkspace) return; + const next = getFlattenedV2WorkspaceIds(collections).find( + (id) => id !== workspaceId, + ); if (next) { void navigateToV2Workspace(next, navigate); } else {