Simplify ProjectLoadedView

We simplify some of the choices for `ProjectLoadedView` by reducing the
nesting and removing redundant properties.

Signed-off-by: Thomas Scholtes <geigerzaehler@axiom.fm>
This commit is contained in:
Thomas Scholtes
2023-07-12 15:59:46 +02:00
committed by Rūdolfs Ošiņš
parent 205fc814bc
commit d0ee6e42e6
2 changed files with 50 additions and 56 deletions
+12 -16
View File
@@ -100,38 +100,34 @@
{project}
{view} />
{:else if view.resource === "issues"}
{#if view.params.view.resource === "new"}
<NewIssue projectId={id} projectHead={project.head} {baseUrl} />
{:else if view.params.view.resource === "list"}
<Issues
{baseUrl}
projectId={id}
issueCounters={project.issues}
search={view.params.search} />
{:else}
{unreachable(view.params.view.resource)}
{/if}
<Issues
{baseUrl}
projectId={id}
issueCounters={project.issues}
search={view.search} />
{:else if view.resource === "newIssue"}
<NewIssue projectId={id} projectHead={project.head} {baseUrl} />
{:else if view.resource === "issue"}
<Issue
projectId={id}
projectHead={project.head}
{baseUrl}
issue={view.params.loadedIssue} />
issue={view.issue} />
{:else if view.resource === "patches"}
<Patches
{baseUrl}
projectId={id}
patchCounters={project.patches}
search={view.params.search} />
search={view.search} />
{:else if view.resource === "patch"}
<Patch
patch={view.params.loadedPatch}
patch={view.patch}
{baseUrl}
projectId={id}
projectDefaultBranch={project.defaultBranch}
projectHead={project.head}
revision={view.params.revision}
search={view.params.search} />
revision={view.revision}
search={view.search} />
{:else}
{unreachable(view)}
{/if}
+38 -40
View File
@@ -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,
},