Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Move project route to path code into project router module
Thomas Scholtes committed 2 years ago
commit 2386b7c1543f9767496b072abf6b99c805a26d4b
parent 092f8ad7744e360d74e346be234843bac32bb368
3 files changed +82 -75
modified src/lib/router.ts
@@ -8,9 +8,11 @@ import * as utils from "@app/lib/utils";
import { config } from "@app/lib/config";
import {
  createProjectRoute,
+
  projectRouteToPath,
  resolveProjectRoute,
} from "@app/views/projects/router";
import { loadRoute } from "@app/lib/router/definitions";
+
import { seedPath } from "@app/views/seeds/router";

export { type Route };

@@ -219,16 +221,6 @@ function pathToRoute(url: URL): Route | null {
  }
}

-
function seedPath(baseUrl: BaseUrl) {
-
  const port = baseUrl.port ?? config.seeds.defaultHttpdPort;
-

-
  if (port === config.seeds.defaultHttpdPort) {
-
    return `/seeds/${baseUrl.hostname}`;
-
  } else {
-
    return `/seeds/${baseUrl.hostname}:${port}`;
-
  }
-
}
-

export function routeToPath(route: Route): string {
  if (route.resource === "home") {
    return "/";
@@ -239,71 +231,7 @@ export function routeToPath(route: Route): string {
  } else if (route.resource === "loadError") {
    return "";
  } else if (route.resource === "projects") {
-
    const seed = seedPath(route.params.baseUrl);
-
    const content = `/${route.params.view.resource}`;
-

-
    let peer = "";
-
    if (route.params.peer) {
-
      peer = `/remotes/${route.params.peer}`;
-
    }
-

-
    let suffix = "";
-
    if (route.params.route) {
-
      suffix = `/${route.params.route}`;
-
    } else {
-
      if (
-
        (route.params.view.resource === "tree" ||
-
          route.params.view.resource === "history") &&
-
        route.params.revision
-
      ) {
-
        suffix = `/${route.params.revision}`;
-
      }
-
      if (route.params.path && route.params.path !== "/") {
-
        suffix += `/${route.params.path}`;
-
      }
-
    }
-

-
    if (route.params.hash) {
-
      suffix += `#${route.params.hash}`;
-
    }
-

-
    if (route.params.view.resource === "tree") {
-
      if (suffix) {
-
        return `${seed}/${route.params.id}${peer}/tree${suffix}`;
-
      }
-
      return `${seed}/${route.params.id}${peer}`;
-
    } else if (route.params.view.resource === "commits") {
-
      return `${seed}/${route.params.id}${peer}/commits/${route.params.view.commitId}`;
-
    } else if (route.params.view.resource === "history") {
-
      return `${seed}/${route.params.id}${peer}/history${suffix}`;
-
    } else if (
-
      route.params.view.resource === "issues" &&
-
      route.params.view.params?.view.resource === "new"
-
    ) {
-
      return `${seed}/${route.params.id}${peer}/issues/new${suffix}`;
-
    } else if (route.params.view.resource === "issues") {
-
      if (route.params.view.params.search) {
-
        suffix += `?${route.params.view.params.search}`;
-
      }
-
      return `${seed}/${route.params.id}${peer}/issues${suffix}`;
-
    } else if (route.params.view.resource === "issue") {
-
      return `${seed}/${route.params.id}${peer}/issues/${route.params.view.params.issue}`;
-
    } else if (route.params.view.resource === "patches") {
-
      if (route.params.view.params.search) {
-
        suffix += `?${route.params.view.params.search}`;
-
      }
-
      return `${seed}/${route.params.id}${peer}/patches${suffix}`;
-
    } else if (route.params.view.resource === "patch") {
-
      if (route.params.view.params.search) {
-
        suffix += `?${route.params.view.params.search}`;
-
      }
-
      if (route.params.view.params.revision) {
-
        return `${seed}/${route.params.id}${peer}/patches/${route.params.view.params.patch}/${route.params.view.params.revision}${suffix}`;
-
      }
-
      return `${seed}/${route.params.id}${peer}/patches/${route.params.view.params.patch}${suffix}`;
-
    } else {
-
      return `${seed}/${route.params.id}${peer}${content}`;
-
    }
+
    return projectRouteToPath(route.params);
  } else if (route.resource === "booting") {
    return "";
  } else if (route.resource === "notFound") {
modified src/views/projects/router.ts
@@ -17,6 +17,7 @@ import { HttpdClient } from "@httpd-client";
import { activeRouteStore, push, replace, routeToPath } from "@app/lib/router";
import * as Syntax from "@app/lib/syntax";
import { unreachable } from "@app/lib/utils";
+
import { seedPath } from "@app/views/seeds/router";

export const COMMITS_PER_PAGE = 30;

@@ -633,4 +634,71 @@ export function resolveProjectRoute(
  return null;
}

+
export function projectRouteToPath(params: ProjectsParams): string {
+
  const seed = seedPath(params.baseUrl);
+
  const content = `/${params.view.resource}`;
+

+
  let peer = "";
+
  if (params.peer) {
+
    peer = `/remotes/${params.peer}`;
+
  }
+

+
  let suffix = "";
+
  if (params.route) {
+
    suffix = `/${params.route}`;
+
  } else {
+
    if (
+
      (params.view.resource === "tree" || params.view.resource === "history") &&
+
      params.revision
+
    ) {
+
      suffix = `/${params.revision}`;
+
    }
+
    if (params.path && params.path !== "/") {
+
      suffix += `/${params.path}`;
+
    }
+
  }
+

+
  if (params.hash) {
+
    suffix += `#${params.hash}`;
+
  }
+

+
  if (params.view.resource === "tree") {
+
    if (suffix) {
+
      return `${seed}/${params.id}${peer}/tree${suffix}`;
+
    }
+
    return `${seed}/${params.id}${peer}`;
+
  } else if (params.view.resource === "commits") {
+
    return `${seed}/${params.id}${peer}/commits/${params.view.commitId}`;
+
  } else if (params.view.resource === "history") {
+
    return `${seed}/${params.id}${peer}/history${suffix}`;
+
  } else if (
+
    params.view.resource === "issues" &&
+
    params.view.params?.view.resource === "new"
+
  ) {
+
    return `${seed}/${params.id}${peer}/issues/new${suffix}`;
+
  } else if (params.view.resource === "issues") {
+
    if (params.view.params.search) {
+
      suffix += `?${params.view.params.search}`;
+
    }
+
    return `${seed}/${params.id}${peer}/issues${suffix}`;
+
  } else if (params.view.resource === "issue") {
+
    return `${seed}/${params.id}${peer}/issues/${params.view.params.issue}`;
+
  } else if (params.view.resource === "patches") {
+
    if (params.view.params.search) {
+
      suffix += `?${params.view.params.search}`;
+
    }
+
    return `${seed}/${params.id}${peer}/patches${suffix}`;
+
  } else if (params.view.resource === "patch") {
+
    if (params.view.params.search) {
+
      suffix += `?${params.view.params.search}`;
+
    }
+
    if (params.view.params.revision) {
+
      return `${seed}/${params.id}${peer}/patches/${params.view.params.patch}/${params.view.params.revision}${suffix}`;
+
    }
+
    return `${seed}/${params.id}${peer}/patches/${params.view.params.patch}${suffix}`;
+
  } else {
+
    return `${seed}/${params.id}${peer}${content}`;
+
  }
+
}
+

export const testExports = { isOid };
modified src/views/seeds/router.ts
@@ -4,6 +4,7 @@ import type { WeeklyActivity } from "@app/lib/commit";

import { HttpdClient } from "@httpd-client";
import { loadProjectActivity } from "@app/lib/commit";
+
import { config } from "@app/lib/config";

interface SeedsRouteParams {
  baseUrl: BaseUrl;
@@ -64,6 +65,16 @@ export async function loadProjects(
  };
}

+
export function seedPath(baseUrl: BaseUrl) {
+
  const port = baseUrl.port ?? config.seeds.defaultHttpdPort;
+

+
  if (port === config.seeds.defaultHttpdPort) {
+
    return `/seeds/${baseUrl.hostname}`;
+
  } else {
+
    return `/seeds/${baseUrl.hostname}:${port}`;
+
  }
+
}
+

export async function loadSeedRoute(
  params: SeedsRouteParams,
): Promise<SeedsLoadedRoute | LoadError> {