Files
paseo/packages/app/src/utils/workspace-archive-navigation.ts
T
Mohamed BoudraandGitHub 3fbd82664d Make New Workspace an app-wide screen (#1746)
* fix(app): make new workspace global

New Workspace now opens as an app-wide screen. Host and project context can still preselect the form through query params, but the route itself no longer lives under a host.

* fix(app): simplify new workspace selection
2026-06-26 15:50:02 +08:00

33 lines
1.1 KiB
TypeScript

import type { Href } from "expo-router";
import type { WorkspaceDescriptor } from "@/stores/session-store";
import { buildHostRootRoute, buildNewWorkspaceRoute } from "@/utils/host-routes";
import { resolveWorkspaceRouteId } from "@/utils/workspace-identity";
export function buildWorkspaceArchiveRedirectRoute(input: {
serverId: string;
archivedWorkspaceId: string;
workspaces: Iterable<WorkspaceDescriptor>;
}): Href {
const archivedWorkspaceId = resolveWorkspaceRouteId({
routeWorkspaceId: input.archivedWorkspaceId,
});
if (!archivedWorkspaceId) {
return buildHostRootRoute(input.serverId);
}
const archivedWorkspace =
Array.from(input.workspaces).find((workspace) => workspace.id === archivedWorkspaceId) ?? null;
const sourceDirectory =
archivedWorkspace?.projectRootPath || archivedWorkspace?.workspaceDirectory;
if (!sourceDirectory) {
return buildHostRootRoute(input.serverId);
}
return buildNewWorkspaceRoute({
serverId: input.serverId,
sourceDirectory,
displayName: archivedWorkspace.projectDisplayName,
projectId: archivedWorkspace.projectId,
});
}