mirror of
https://seed.radicle.dev/rad:z4V1sjrXqjvFdnCUbxPFqd5p4DtH5.git
synced 2026-11-16 03:40:37 +08:00
Simplify project route resolving
Signed-off-by: Thomas Scholtes <geigerzaehler@axiom.fm>
This commit is contained in:
+2
-21
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user