From ed0d5971851584e6bf25bfe4b963013b405bc42f Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sun, 19 Oct 2025 20:22:31 +0200 Subject: [PATCH] Cleanup getting server base url --- src/features/settings/components/ServerAddressSetting.tsx | 3 +-- src/lib/requests/RequestManager.ts | 5 +++++ src/lib/requests/client/BaseClient.ts | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/features/settings/components/ServerAddressSetting.tsx b/src/features/settings/components/ServerAddressSetting.tsx index 794f58fa..b3fd2325 100644 --- a/src/features/settings/components/ServerAddressSetting.tsx +++ b/src/features/settings/components/ServerAddressSetting.tsx @@ -9,12 +9,11 @@ import { useTranslation } from 'react-i18next'; import { TextSetting } from '@/base/components/settings/text/TextSetting.tsx'; import { requestManager } from '@/lib/requests/RequestManager.ts'; -import { useLocalStorage } from '@/base/hooks/useStorage.tsx'; export const ServerAddressSetting = () => { const { t } = useTranslation(); - const [serverAddress, setServerAddress] = useLocalStorage('serverBaseURL', window.location.origin); + const [serverAddress, setServerAddress] = requestManager.useBaseUrl(); const handleServerAddressChange = (address: string) => { const serverBaseUrl = address.replaceAll(/(\/)+$/g, ''); diff --git a/src/lib/requests/RequestManager.ts b/src/lib/requests/RequestManager.ts index fe5ce1d4..cb8aeaf1 100644 --- a/src/lib/requests/RequestManager.ts +++ b/src/lib/requests/RequestManager.ts @@ -338,6 +338,7 @@ import { MangaIdInfo } from '@/features/manga/Manga.types.ts'; import { updateMetadataList } from '@/features/metadata/services/MetadataApolloCacheHandler.ts'; import { USER_LOGIN, USER_REFRESH } from '@/lib/graphql/mutations/UserMutation.ts'; import { AuthManager } from '@/features/authentication/AuthManager.ts'; +import { useLocalStorage } from '@/base/hooks/useStorage.tsx'; enum GQLMethod { QUERY = 'QUERY', @@ -487,6 +488,10 @@ export class RequestManager { return this.restClient.getBaseUrl(); } + public useBaseUrl() { + return useLocalStorage(BaseClient.BASE_URL_KEY, () => this.getBaseUrl()); + } + public getValidUrlFor(endpoint: string, apiVersion: string = RequestManager.API_VERSION): string { return `${this.getBaseUrl()}${apiVersion}${endpoint}`; } diff --git a/src/lib/requests/client/BaseClient.ts b/src/lib/requests/client/BaseClient.ts index 9db55342..e6d6201d 100644 --- a/src/lib/requests/client/BaseClient.ts +++ b/src/lib/requests/client/BaseClient.ts @@ -20,6 +20,8 @@ interface QueuedRequest { } export abstract class BaseClient { + static readonly BASE_URL_KEY = 'serverBaseURL'; + protected abstract client: Client; public abstract readonly fetcher: Fetcher; @@ -90,7 +92,7 @@ export abstract class BaseClient { ? import.meta.env.VITE_SERVER_URL_DEFAULT : `${protocol}//${hostname}:${port}`; - const serverBaseURL = AppStorage.local.getItemParsed('serverBaseURL', defaultUrl); + const serverBaseURL = AppStorage.local.getItemParsed(BaseClient.BASE_URL_KEY, defaultUrl); // Apply subpath configuration to the base URL return SubpathUtil.getApiBaseUrl(serverBaseURL);