Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Issue loading
Rūdolfs Ošiņš committed 2 years ago
commit 55fec2f343fe468eb4f98de21405241a1f5bf20a
parent a331721c9fdfe6604350b20f782f4b823c9fdbb5
2 files changed +39 -11
modified src/views/projects/View.svelte
@@ -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}
modified src/views/projects/router.ts
@@ -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 {