From 386744d7022515505bf4b1f01cee9a15a313fbc3 Mon Sep 17 00:00:00 2001 From: FatttSnake Date: Wed, 8 May 2024 17:19:28 +0800 Subject: [PATCH] Refactor(Navigation): Optimize url operate --- src/util/navigation.ts | 44 ++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/util/navigation.ts b/src/util/navigation.ts index fceb2fe..4f4b9b0 100644 --- a/src/util/navigation.ts +++ b/src/util/navigation.ts @@ -37,10 +37,15 @@ export const navigateToView = ( version?: string, options?: NavigateOptions ) => { - navigate( - `/view/${username}/${toolId}${version ? `/${version}` : ''}${platform !== import.meta.env.VITE_PLATFORM ? `?platform=${platform}` : ''}`, - options + const url = new URL( + `/view/${username}/${toolId}${version ? `/${version}` : ''}`, + window.location.href ) + if (platform !== import.meta.env.VITE_PLATFORM) { + url.searchParams.append('platform', platform) + } + + navigate(`${url.pathname}${url.search}`, options) } export const navigateToSource = ( @@ -51,10 +56,14 @@ export const navigateToSource = ( version?: string, options?: NavigateOptions ) => { - navigate( - `/source/${username}/${toolId}${version ? `/${version}` : ''}${platform !== import.meta.env.VITE_PLATFORM ? `?platform=${platform}` : ''}`, - options + const url = new URL( + `/source/${username}/${toolId}${version ? `/${version}` : ''}`, + window.location.href ) + if (platform !== import.meta.env.VITE_PLATFORM) { + url.searchParams.append('platform', platform) + } + navigate(`${url.pathname}${url.search}`, options) } export const navigateToRedirect = ( @@ -104,10 +113,12 @@ export const navigateToEdit = ( platform: Platform, options?: NavigateOptions ) => { - navigate( - `/edit/${toolId}${platform !== import.meta.env.VITE_PLATFORM ? `?platform=${platform}` : ''}`, - options - ) + const url = new URL(`/edit/${toolId}`, window.location.href) + if (platform !== import.meta.env.VITE_PLATFORM) { + url.searchParams.append('platform', platform) + } + + navigate(`${url.pathname}${url.search}`, options) } export const navigateToUser = (navigate: NavigateFunction, options?: NavigateOptions) => { @@ -123,5 +134,14 @@ export const getViewPath = ( toolId: string, platform: Platform, version?: string -) => - `/view/${username}/${toolId}${version ? `/${version}` : ''}${platform !== import.meta.env.VITE_PLATFORM ? `?platform=${platform}` : ''}` +) => { + const url = new URL( + `/view/${username}/${toolId}${version ? `/${version}` : ''}`, + window.location.href + ) + if (platform !== import.meta.env.VITE_PLATFORM) { + url.searchParams.append('platform', platform) + } + + return `${url.pathname}${url.search}` +}