Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Simplify project route resolving
Thomas Scholtes committed 2 years ago
commit d0a280be02bb93460649f14ae77e435b17077e47
parent 9dd3af0f9f810d2b284cb5d2a6505c5d6643b22a
3 files changed +10 -26
modified src/lib/router.ts
@@ -163,30 +163,11 @@ function pathToRoute(url: URL): Route | null {
        const baseUrl = extractBaseUrl(hostAndPort);
        const id = segments.shift();
        if (id) {
-
          // Allows project paths with or without trailing slash
-
          if (
-
            segments.length === 0 ||
-
            (segments.length === 1 && segments[0] === "")
-
          ) {
-
            return {
-
              resource: "projects",
-
              params: {
-
                view: { resource: "tree" },
-
                id,
-
                peer: undefined,
-
                baseUrl,
-
              },
-
            };
-
          }
-
          const params = resolveProjectRoute(url, baseUrl, id, segments);
+
          const params = resolveProjectRoute(baseUrl, id, segments, url.search);
          if (params) {
            return {
              resource: "projects",
-
              params: {
-
                ...params,
-
                baseUrl,
-
                id,
-
              },
+
              params: params,
            };
          }
          return null;
modified src/views/projects/router.ts
@@ -464,10 +464,10 @@ function sanitizeQueryString(queryString: string): string {
}

export function resolveProjectRoute(
-
  url: URL,
  baseUrl: BaseUrl,
  id: string,
  segments: string[],
+
  urlSearch: string,
): ProjectsParams | null {
  let content = segments.shift();
  let peer;
@@ -514,7 +514,7 @@ export function resolveProjectRoute(
          resource: "issues",
          params: {
            view: { resource: "new" },
-
            search: sanitizeQueryString(url.search),
+
            search: sanitizeQueryString(urlSearch),
          },
        },
        baseUrl,
@@ -538,7 +538,7 @@ export function resolveProjectRoute(
          resource: "issues",
          params: {
            view: { resource: "list" },
-
            search: sanitizeQueryString(url.search),
+
            search: sanitizeQueryString(urlSearch),
          },
        },
        baseUrl,
@@ -555,7 +555,7 @@ export function resolveProjectRoute(
      return {
        view: {
          resource: "patch",
-
          params: { patch, revision, search: sanitizeQueryString(url.search) },
+
          params: { patch, revision, search: sanitizeQueryString(urlSearch) },
        },
        baseUrl,
        id,
@@ -569,7 +569,7 @@ export function resolveProjectRoute(
          resource: "patches",
          params: {
            view: { resource: "list" },
-
            search: sanitizeQueryString(url.search),
+
            search: sanitizeQueryString(urlSearch),
          },
        },
        baseUrl,
modified tests/unit/router.test.ts
@@ -33,6 +33,7 @@ describe("route invariant when parsed", () => {
        view: { resource: "tree" },
        baseUrl,
        id: "rad:zKtT7DmF9H34KkvcKj9PHW19WzjT",
+
        route: "",
      },
    });
  });
@@ -325,6 +326,7 @@ describe("pathToRoute", () => {
          },
          peer: undefined,
          id: "rad:zKtT7DmF9H34KkvcKj9PHW19WzjT",
+
          route: "",
        },
      },
      description: "Seed Project Route w trailing slash",
@@ -353,6 +355,7 @@ describe("pathToRoute", () => {
          },
          peer: undefined,
          id: "rad:zKtT7DmF9H34KkvcKj9PHW19WzjT",
+
          route: "",
        },
      },
      description: "Seed Project Route w/o trailing slash",