Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Remove redundant project route parameters
Thomas Scholtes committed 2 years ago
commit 8acb2410d5f3e3518645d030236e0278e3c1b577
parent 452577126493634a6c920b4c9d124f7454aeeaff
4 files changed +33 -62
modified src/views/projects/Patch.svelte
@@ -1,5 +1,5 @@
<script lang="ts" context="module">
-
  import type { Comment, Review, Merge } from "@httpd-client";
+
  import type { Comment, Review, Merge, Project } from "@httpd-client";

  interface Thread {
    root: Comment;
@@ -55,20 +55,18 @@
  import TagInput from "@app/views/projects/Cob/TagInput.svelte";

  export let baseUrl: BaseUrl;
-
  export let patch: Patch;
-
  export let projectId: string;
-
  export let projectHead: string;
-
  export let projectDefaultBranch: string;
+
  export let project: Project;
  export let view: PatchView;

-
  const api = new HttpdClient(baseUrl);
+
  $: api = new HttpdClient(baseUrl);
+
  $: patch = view.patch;

  async function createReply({
    detail: reply,
  }: CustomEvent<{ id: string; body: string }>) {
    if ($httpdStore.state === "authenticated" && reply.body.trim().length > 0) {
      await api.project.updatePatch(
-
        projectId,
+
        project.id,
        patch.id,
        {
          type: "thread",
@@ -81,7 +79,7 @@
        },
        $httpdStore.session.id,
      );
-
      patch = await api.project.getPatchById(projectId, patch.id);
+
      patch = await api.project.getPatchById(project.id, patch.id);
    }
  }
  function badgeColor(status: string): Variant {
@@ -112,12 +110,12 @@
        revision = view.view.revision;
      }
      await api.project.updatePatch(
-
        projectId,
+
        project.id,
        revision,
        { type: "tag", add, remove },
        $httpdStore.session.id,
      );
-
      patch = await api.project.getPatchById(projectId, patch.id);
+
      patch = await api.project.getPatchById(project.id, patch.id);
    }
  }

@@ -130,7 +128,7 @@
  $: {
    const baseRoute = {
      resource: "project.patch",
-
      project: projectId,
+
      project: project.id,
      node: baseUrl,
      patch: patch.id,
    } as const;
@@ -334,7 +332,7 @@
          <Markdown
            content={patch.revisions[0].description}
            rawPath={utils.getRawBasePath(
-
              projectId,
+
              project.id,
              baseUrl,
              patch.revisions[0].id,
            )} />
@@ -363,7 +361,7 @@
          <Link
            route={{
              resource: "project.patch",
-
              project: projectId,
+
              project: project.id,
              node: baseUrl,
              patch: patch.id,
              view: {
@@ -399,7 +397,7 @@
                  on:afterNavigate={closeFocused}
                  route={{
                    resource: "project.patch",
-
                    project: projectId,
+
                    project: project.id,
                    node: baseUrl,
                    patch: patch.id,
                    view: {
@@ -422,7 +420,7 @@
    {#if view.view.name === "diff"}
      <div style:margin-top="1rem">
        <Changeset
-
          {projectId}
+
          projectId={project.id}
          {baseUrl}
          revision={view.view.toCommit}
          diff={view.view.diff} />
@@ -433,10 +431,10 @@
          index > 0 ? patch.revisions[index - 1] : undefined}
        <RevisionComponent
          {baseUrl}
-
          {projectId}
+
          projectId={project.id}
          {timelines}
-
          {projectDefaultBranch}
-
          {projectHead}
+
          projectDefaultBranch={project.defaultBranch}
+
          projectHead={project.head}
          {...revision}
          first={index === 0}
          on:reply={createReply}
@@ -453,13 +451,13 @@
    {:else if view.view.name === "commits"}
      <div class="commit-list">
        {#each view.view.commits as commit}
-
          <CommitTeaser {projectId} {baseUrl} {commit} />
+
          <CommitTeaser projectId={project.id} {baseUrl} {commit} />
        {/each}
      </div>
    {:else if view.view.name === "files"}
      <div style:margin-top="1rem">
        <Changeset
-
          {projectId}
+
          projectId={project.id}
          {baseUrl}
          revision={view.view.revision}
          diff={view.view.diff} />
modified src/views/projects/Patches.svelte
@@ -1,5 +1,5 @@
<script lang="ts">
-
  import type { BaseUrl, Patch, PatchState } from "@httpd-client";
+
  import type { BaseUrl, Patch, PatchState, Project } from "@httpd-client";

  import capitalize from "lodash/capitalize";
  import { HttpdClient } from "@httpd-client";
@@ -13,16 +13,10 @@
  import Placeholder from "@app/components/Placeholder.svelte";
  import SquareButton from "@app/components/SquareButton.svelte";

-
  export let projectId: string;
+
  export let project: Project;
  export let baseUrl: BaseUrl;
  export let patches: Patch[];
  export let state: PatchState["status"];
-
  export let patchCounters: {
-
    draft: number;
-
    open: number;
-
    archived: number;
-
    merged: number;
-
  };

  let loading = false;
  let page = 0;
@@ -40,7 +34,7 @@
    loading = true;
    page += 1;
    try {
-
      const response = await api.project.getAllPatches(projectId, {
+
      const response = await api.project.getAllPatches(project.id, {
        state,
        page,
        perPage: PATCHES_PER_PAGE,
@@ -68,12 +62,12 @@

  $: options = stateOptions.map<Tab>(s => ({
    value: s,
-
    title: `${patchCounters[s]} ${s}`,
-
    disabled: patchCounters[s] === 0,
+
    title: `${project.patches[s]} ${s}`,
+
    disabled: project.patches[s] === 0,
  }));

  $: showMoreButton =
-
    !loading && !error && allPatches.length < patchCounters[state];
+
    !loading && !error && allPatches.length < project.patches[state];
</script>

<style>
@@ -116,7 +110,7 @@
          <Link
            route={{
              resource: "project.patches",
-
              project: projectId,
+
              project: project.id,
              node: baseUrl,
              search: `state=${option.value}`,
            }}>
@@ -134,7 +128,7 @@
  <div class="patches-list">
    {#each allPatches as patch (patch.id)}
      <div class="teaser">
-
        <PatchTeaser {baseUrl} {projectId} {patch} />
+
        <PatchTeaser {baseUrl} projectId={project.id} {patch} />
      </div>
    {:else}
      {#if error}
modified src/views/projects/View.svelte
@@ -16,7 +16,6 @@
  import ProjectMeta from "./ProjectMeta.svelte";

  export let baseUrl: BaseUrl;
-
  export let id: string;
  export let project: Project;
  export let view: ProjectLoadedView;

@@ -47,13 +46,13 @@
  <ProjectMeta
    nodeId={peer}
    projectDescription={project.description}
-
    projectId={id}
+
    projectId={project.id}
    projectName={project.name}
    {baseUrl} />
  <Header
    openIssueCount={project.issues.open}
    openPatchCount={project.patches.open}
-
    projectId={id}
+
    projectId={project.id}
    projectName={project.name}
    resource={view.resource}
    trackings={project.trackings}
@@ -70,33 +69,22 @@
  {:else if view.resource === "issues"}
    <Issues
      {baseUrl}
-
      projectId={id}
+
      projectId={project.id}
      issueCounters={project.issues}
      state={view.state}
      issues={view.issues} />
  {:else if view.resource === "newIssue"}
-
    <NewIssue projectId={id} projectHead={project.head} {baseUrl} />
+
    <NewIssue projectId={project.id} projectHead={project.head} {baseUrl} />
  {:else if view.resource === "issue"}
    <Issue
-
      projectId={id}
+
      projectId={project.id}
      projectHead={project.head}
      {baseUrl}
      issue={view.issue} />
  {:else if view.resource === "patches"}
-
    <Patches
-
      {baseUrl}
-
      projectId={id}
-
      patchCounters={project.patches}
-
      state={view.state}
-
      patches={view.patches} />
+
    <Patches {baseUrl} {project} state={view.state} patches={view.patches} />
  {:else if view.resource === "patch"}
-
    <Patch
-
      patch={view.patch}
-
      {baseUrl}
-
      projectId={id}
-
      projectDefaultBranch={project.defaultBranch}
-
      projectHead={project.head}
-
      {view} />
+
    <Patch {baseUrl} {project} {view} />
  {:else}
    {unreachable(view)}
  {/if}
modified src/views/projects/router.ts
@@ -102,7 +102,6 @@ export interface ProjectLoadedRoute {

export interface ProjectLoadedParams {
  baseUrl: BaseUrl;
-
  id: string;
  project: Project;
  view: ProjectLoadedView;
}
@@ -212,7 +211,6 @@ export async function loadProjectRoute(
      return {
        resource: "projects",
        params: {
-
          id: route.project,
          baseUrl: route.node,
          project,
          view: {
@@ -230,7 +228,6 @@ export async function loadProjectRoute(
        return {
          resource: "projects",
          params: {
-
            id: route.project,
            baseUrl: route.node,
            project,
            view: {
@@ -258,7 +255,6 @@ export async function loadProjectRoute(
      return {
        resource: "projects",
        params: {
-
          id: route.project,
          baseUrl: route.node,
          view: {
            resource: "newIssue",
@@ -302,7 +298,6 @@ async function loadPatchesView(
  return {
    resource: "projects",
    params: {
-
      id: route.project,
      baseUrl: route.node,
      view: {
        resource: "patches",
@@ -332,7 +327,6 @@ async function loadIssuesView(
  return {
    resource: "projects",
    params: {
-
      id: route.project,
      baseUrl: route.node,
      view: {
        resource: "issues",
@@ -379,7 +373,6 @@ async function loadTreeView(
  return {
    resource: "projects",
    params: {
-
      id: route.project,
      baseUrl: route.node,
      project,
      view: {
@@ -474,7 +467,6 @@ async function loadHistoryView(
  return {
    resource: "projects",
    params: {
-
      id: route.project,
      baseUrl: route.node,
      project,
      view: {
@@ -546,7 +538,6 @@ async function loadPatchView(
  return {
    resource: "projects",
    params: {
-
      id: route.project,
      baseUrl: route.node,
      project,
      view: {