Issue loading

Signed-off-by: Rūdolfs Ošiņš <rudolfs@osins.org>
This commit is contained in:
Rūdolfs Ošiņš
2023-06-13 15:07:31 +02:00
parent a331721c9f
commit 55fec2f343
2 changed files with 39 additions and 11 deletions
+5 -9
View File
@@ -162,15 +162,11 @@
issueCounters={project.issues}
state={issueFilter} />
{:else if view.resource === "issue"}
{#await api.project.getIssueById(id, view.params.issue)}
<Loading center />
{:then issue}
<Issue projectId={id} projectHead={project.head} {baseUrl} {issue} />
{:catch e}
<div class="message">
<ErrorMessage message="Couldn't load issue." stackTrace={e} />
</div>
{/await}
<Issue
projectId={id}
projectHead={project.head}
{baseUrl}
issue={view.params.loadedIssue} />
{:else if view.resource === "patches"}
<Patches
{baseUrl}
+34 -2
View File
@@ -1,5 +1,5 @@
import type { LoadError } from "@app/lib/router/definitions";
import type { Project, Remote, Tree } from "@httpd-client";
import type { Project, Remote, Tree, Issue } from "@httpd-client";
import { get } from "svelte/store";
@@ -79,7 +79,7 @@ export type ProjectLoadedView =
resource: "history";
params: LoadedSourceBrowsingParams;
}
| { resource: "issue"; params: { issue: string } }
| { resource: "issue"; params: { issue: string; loadedIssue: Issue } }
| {
resource: "issues";
params?: {
@@ -199,6 +199,38 @@ export async function loadProjectRoute(
},
},
};
} else if (params.view.resource === "issue") {
try {
const projectPromise = api.project.getById(params.id);
const issuePromise = api.project.getIssueById(
params.id,
params.view.params.issue,
);
const [project, issue] = await Promise.all([
projectPromise,
issuePromise,
]);
return {
resource: "projects",
params: {
...params,
project,
view: {
resource: "issue",
params: { ...params.view.params, loadedIssue: issue },
},
},
};
} catch (error: any) {
return {
resource: "loadError",
params: {
title: params.view.params.issue,
errorMessage: "Not able to load this issue.",
stackTrace: error.stack,
},
};
}
} else {
const project = await api.project.getById(params.id);
return {