diff --git a/src/views/projects/View.svelte b/src/views/projects/View.svelte
index 99a51b377..8c9a4cca8 100644
--- a/src/views/projects/View.svelte
+++ b/src/views/projects/View.svelte
@@ -100,38 +100,34 @@
{project}
{view} />
{:else if view.resource === "issues"}
- {#if view.params.view.resource === "new"}
-
- {:else if view.params.view.resource === "list"}
-
- {:else}
- {unreachable(view.params.view.resource)}
- {/if}
+
+ {:else if view.resource === "newIssue"}
+
{:else if view.resource === "issue"}
+ issue={view.issue} />
{:else if view.resource === "patches"}
+ search={view.search} />
{:else if view.resource === "patch"}
+ revision={view.revision}
+ search={view.search} />
{:else}
{unreachable(view)}
{/if}
diff --git a/src/views/projects/router.ts b/src/views/projects/router.ts
index 1cdacee22..8eceeca74 100644
--- a/src/views/projects/router.ts
+++ b/src/views/projects/router.ts
@@ -103,30 +103,15 @@ export type LoadedSourceBrowsingView =
export type ProjectLoadedView =
| LoadedSourceBrowsingView
- | { resource: "issue"; params: { issue: string; loadedIssue: Issue } }
- | {
- resource: "issues";
- params: {
- view: { resource: "new" | "list" };
- search: string;
- };
- }
- | {
- resource: "patches";
- params: {
- view: { resource: "list" };
- search: string;
- };
- }
+ | { resource: "issue"; issue: Issue }
+ | { resource: "issues"; search: string }
+ | { resource: "newIssue" }
+ | { resource: "patches"; search: string }
| {
resource: "patch";
- params: {
- patch: string;
- revision?: string;
- loadedPatch: Patch;
-
- search: string;
- };
+ patch: Patch;
+ revision?: string;
+ search: string;
};
// Check whether the input is a SHA1 commit.
@@ -336,7 +321,7 @@ export async function loadProjectRoute(
project,
view: {
resource: "issue",
- params: { ...params.view.params, loadedIssue: issue },
+ issue,
},
},
};
@@ -369,11 +354,9 @@ export async function loadProjectRoute(
project,
view: {
resource: "patch",
- params: {
- search: "",
- ...params.view.params,
- loadedPatch: patch,
- },
+ search: params.view.params.search || "",
+ patch: patch,
+ revision: params.view.params.revision,
},
},
};
@@ -389,18 +372,33 @@ export async function loadProjectRoute(
}
} else if (params.view.resource === "issues") {
const project = await api.project.getById(params.id);
- return {
- resource: "projects",
- params: {
- id: params.id,
- baseUrl: params.baseUrl,
- view: {
- resource: "issues",
- params: { search: "", ...params.view.params },
+ if (params.view.params.view.resource === "list") {
+ return {
+ resource: "projects",
+ params: {
+ id: params.id,
+ baseUrl: params.baseUrl,
+ view: {
+ resource: "issues",
+ search: params.view.params.search || "",
+ },
+ project,
},
- project,
- },
- };
+ };
+ } else if (params.view.params.view.resource === "new") {
+ return {
+ resource: "projects",
+ params: {
+ ...params,
+ view: {
+ resource: "newIssue",
+ },
+ project,
+ },
+ };
+ } else {
+ return unreachable(params.view.params.view.resource);
+ }
} else if (params.view.resource === "patches") {
const project = await api.project.getById(params.id);
return {
@@ -410,7 +408,7 @@ export async function loadProjectRoute(
baseUrl: params.baseUrl,
view: {
resource: "patches",
- params: { search: "", ...params.view.params },
+ search: params.view.params.search || "",
},
project,
},