Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Simplify `ProjectLoadedView`
Thomas Scholtes committed 2 years ago
commit d0ee6e42e66bc9049ccbc9f0510e9276efe1bde5
parent 205fc814bcbce027d3b76140cd2b671b4577f3bd
2 files changed +50 -56
modified src/views/projects/View.svelte
@@ -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}
modified 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,
        },