Add dynamic subpath support (#1011)

* Add dynamic subpath support for WebUI

- Add SubpathConfig utility for server-side subpath detection
- Configure React Router basename from server config
- Update API base URL handling for subpath compatibility
- Fix asset loading with relative paths
- Add VITE_SUBPATH environment variable for development
- Update locales and manifest paths for subpath support

Closes #174

* Move VITE_SUBPATH interface to vite-env.d.ts

* Ensure production bundle always uses relative base
This commit is contained in:
Soner Köksal
2025-09-24 00:23:19 +03:00
committed by GitHub
parent 0706e4671f
commit 4d4477640e
8 changed files with 108 additions and 7 deletions

View File

@@ -10,6 +10,7 @@ import { AppStorage } from '@/lib/storage/AppStorage.ts';
import { UserRefreshMutation } from '@/lib/graphql/generated/graphql.ts';
import { AuthManager } from '@/features/authentication/AuthManager.ts';
import { AbortableApolloMutationResponse } from '@/lib/requests/RequestManager.ts';
import { SubpathConfig } from '@/lib/utils/SubpathConfig.ts';
export abstract class BaseClient<Client, ClientConfig, Fetcher> {
protected abstract client: Client;
@@ -68,7 +69,10 @@ export abstract class BaseClient<Client, ClientConfig, Fetcher> {
? import.meta.env.VITE_SERVER_URL_DEFAULT
: `${protocol}//${hostname}:${port}`;
return AppStorage.local.getItemParsed('serverBaseURL', defaultUrl);
const serverBaseURL = AppStorage.local.getItemParsed('serverBaseURL', defaultUrl);
// Apply subpath configuration to the base URL
return SubpathConfig.getApiBaseUrl(serverBaseURL);
}
public abstract updateConfig(config: Partial<ClientConfig>): void;