From 0124275d8c2ca7c72f9adce84b0d6b5c42566d3e Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sun, 19 May 2024 19:00:13 +0200 Subject: [PATCH] Cleanup duplicated slash handling --- front/packages/models/src/query.tsx | 10 +++++++--- front/packages/ui/src/login/server-url.tsx | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/front/packages/models/src/query.tsx b/front/packages/models/src/query.tsx index c39978c6..d75b38f3 100644 --- a/front/packages/models/src/query.tsx +++ b/front/packages/models/src/query.tsx @@ -33,6 +33,11 @@ import { type Page, Paged } from "./page"; export let lastUsedUrl: string = null!; +const cleanSlash = (str: string | null) => { + if (!str) return null; + return str.replace(/^\/|\/$/g, ""); +}; + export const queryFn = async ( context: { apiUrl?: string | null; @@ -54,17 +59,16 @@ export const queryFn = async ( lastUsedUrl = url!; const token = iToken === undefined && context.authenticated !== false ? await getToken() : iToken; - const path = [url] + const path = [cleanSlash(url)] .concat( "path" in context ? (context.path as string[]) : "pageParam" in context && context.pageParam - ? [context.pageParam as string] + ? [cleanSlash(context.pageParam as string)] : (context.queryKey as string[]), ) .filter((x) => x) .join("/") - .replace("//", "/") .replace("/?", "?"); let resp: Response; try { diff --git a/front/packages/ui/src/login/server-url.tsx b/front/packages/ui/src/login/server-url.tsx index a2b6ad33..74a65329 100644 --- a/front/packages/ui/src/login/server-url.tsx +++ b/front/packages/ui/src/login/server-url.tsx @@ -48,7 +48,7 @@ const query: QueryIdentifier = { export const ServerUrlPage: QueryPage = () => { const [_apiUrl, setApiUrl] = useState(""); const apiUrl = cleanApiUrl(_apiUrl); - const { data, error } = useFetch({ ...query, options: { apiUrl } }); + const { data, error } = useFetch({ ...query, options: { apiUrl, authenticated: false } }); const router = useRouter(); const { t } = useTranslation(); const { css } = useYoshiki();