(sidebarCollapsed = !sidebarCollapsed)}
- />
+
+ {#if sidebar}
+ {@render sidebar()}
{:else}
{/if}
diff --git a/web/workspace/src/routes/+layout.ts b/web/workspace/src/routes/+layout.ts
index 77e13c9c..e965cb42 100644
--- a/web/workspace/src/routes/+layout.ts
+++ b/web/workspace/src/routes/+layout.ts
@@ -1,31 +1,19 @@
import { redirect } from "@sveltejs/kit";
-import { loadJson, workspaceApiPath, workspaceRoute } from "$lib/workspace/api/http";
-import type { RepositoryListResponse, WorkspaceResponse } from "$lib/workspace/sidebar/types";
+import { loadJson, workspaceRoute } from "$lib/workspace/api/http";
+import type { WorkspaceResponse } from "$lib/workspace/sidebar/types";
import type { LayoutLoad } from "./$types";
export const ssr = false;
export const prerender = false;
export const load: LayoutLoad = async ({ fetch, params, url }) => {
- const workspaceId = params.workspaceId;
- if (workspaceId) {
- const apiPath = (path: string) => workspaceApiPath(workspaceId, path);
- const [workspace, repositories] = await Promise.all([
- loadJson(fetch, apiPath("/workspace")),
- loadJson(fetch, apiPath("/repositories")),
- ]);
- return {
- workspaceScoped: true,
- workspace: workspace.data,
- workspaceError: workspace.error,
- repositories: repositories.data,
- repositoriesError: repositories.error,
- };
+ if (params.workspaceId) {
+ return {};
}
const publicRoutes = new Set(["/account", "/login/device"]);
if (publicRoutes.has(url.pathname)) {
- return { workspaceScoped: false };
+ return {};
}
const workspace = await loadJson(fetch, "/api/workspace");
@@ -33,5 +21,5 @@ export const load: LayoutLoad = async ({ fetch, params, url }) => {
const scopedPath = workspaceRoute(workspace.data.workspace_id);
throw redirect(307, `${scopedPath}${url.search}`);
}
- return { workspaceScoped: false };
+ return {};
};
diff --git a/web/workspace/src/routes/w/[workspaceId]/+layout.svelte b/web/workspace/src/routes/w/[workspaceId]/+layout.svelte
new file mode 100644
index 00000000..d573d76a
--- /dev/null
+++ b/web/workspace/src/routes/w/[workspaceId]/+layout.svelte
@@ -0,0 +1,35 @@
+
+
+{#snippet workspaceSidebar()}
+
+{/snippet}
+
+
+
+{@render children()}
diff --git a/web/workspace/src/routes/w/[workspaceId]/+layout.ts b/web/workspace/src/routes/w/[workspaceId]/+layout.ts
new file mode 100644
index 00000000..a90efd91
--- /dev/null
+++ b/web/workspace/src/routes/w/[workspaceId]/+layout.ts
@@ -0,0 +1,19 @@
+import { loadJson, workspaceApiPath } from "$lib/workspace/api/http";
+import type { RepositoryListResponse, WorkspaceResponse } from "$lib/workspace/sidebar/types";
+import type { LayoutLoad } from "./$types";
+
+export const load: LayoutLoad = async ({ fetch, params }) => {
+ const workspaceId = params.workspaceId;
+ const apiPath = (path: string) => workspaceApiPath(workspaceId, path);
+ const [workspace, repositories] = await Promise.all([
+ loadJson(fetch, apiPath("/workspace")),
+ loadJson(fetch, apiPath("/repositories")),
+ ]);
+
+ return {
+ workspace: workspace.data,
+ workspaceError: workspace.error,
+ repositories: repositories.data,
+ repositoriesError: repositories.error,
+ };
+};