diff --git a/apps/calendar/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/calendar/apps/web/src/lib/stores/user-settings.svelte.ts index a2e5e08b7..c76260502 100644 --- a/apps/calendar/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/calendar/apps/web/src/lib/stores/user-settings.svelte.ts @@ -16,13 +16,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'calendar', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/chat/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/chat/apps/web/src/lib/stores/user-settings.svelte.ts index b8becd027..7c67ca25b 100644 --- a/apps/chat/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/chat/apps/web/src/lib/stores/user-settings.svelte.ts @@ -7,13 +7,21 @@ * - localStorage caching for offline support */ +import { browser } from '$app/environment'; import { createUserSettingsStore } from '@manacore/shared-theme'; import { authStore } from './auth.svelte'; -const MANA_AUTH_URL = 'http://localhost:3001'; +function getAuthUrl(): string { + if (browser && typeof window !== 'undefined') { + const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) + .__PUBLIC_MANA_CORE_AUTH_URL__; + if (injectedUrl) return injectedUrl; + } + return import.meta.env.DEV ? 'http://localhost:3001' : ''; +} export const userSettings = createUserSettingsStore({ appId: 'chat', - authUrl: MANA_AUTH_URL, + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/clock/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/clock/apps/web/src/lib/stores/user-settings.svelte.ts index f88fb5453..d28b67ea6 100644 --- a/apps/clock/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/clock/apps/web/src/lib/stores/user-settings.svelte.ts @@ -16,13 +16,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'clock', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/contacts/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/contacts/apps/web/src/lib/stores/user-settings.svelte.ts index 29374067e..9c209ca82 100644 --- a/apps/contacts/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/contacts/apps/web/src/lib/stores/user-settings.svelte.ts @@ -16,13 +16,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'contacts', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/context/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/context/apps/web/src/lib/stores/user-settings.svelte.ts index 3591e6bf5..650d1fb1b 100644 --- a/apps/context/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/context/apps/web/src/lib/stores/user-settings.svelte.ts @@ -6,13 +6,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'context', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/manacore/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/manacore/apps/web/src/lib/stores/user-settings.svelte.ts index 7ce7f1600..85689e5af 100644 --- a/apps/manacore/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/manacore/apps/web/src/lib/stores/user-settings.svelte.ts @@ -16,13 +16,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'manacore', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/manadeck/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/manadeck/apps/web/src/lib/stores/user-settings.svelte.ts index 968719284..c6003636a 100644 --- a/apps/manadeck/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/manadeck/apps/web/src/lib/stores/user-settings.svelte.ts @@ -7,13 +7,21 @@ * - localStorage caching for offline support */ +import { browser } from '$app/environment'; import { createUserSettingsStore } from '@manacore/shared-theme'; import { authStore } from './auth.svelte'; -const MANA_AUTH_URL = 'http://localhost:3001'; +function getAuthUrl(): string { + if (browser && typeof window !== 'undefined') { + const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) + .__PUBLIC_MANA_CORE_AUTH_URL__; + if (injectedUrl) return injectedUrl; + } + return import.meta.env.DEV ? 'http://localhost:3001' : ''; +} export const userSettings = createUserSettingsStore({ appId: 'manadeck', - authUrl: MANA_AUTH_URL, + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/mukke/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/mukke/apps/web/src/lib/stores/user-settings.svelte.ts index 9d7bd772a..4b72dd8bb 100644 --- a/apps/mukke/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/mukke/apps/web/src/lib/stores/user-settings.svelte.ts @@ -6,13 +6,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'mukke', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getValidToken(), }); diff --git a/apps/photos/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/photos/apps/web/src/lib/stores/user-settings.svelte.ts index 1928eaa67..33312f2f8 100644 --- a/apps/photos/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/photos/apps/web/src/lib/stores/user-settings.svelte.ts @@ -6,13 +6,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'photos', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/picture/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/picture/apps/web/src/lib/stores/user-settings.svelte.ts index 84fa5e818..a5c96f9ad 100644 --- a/apps/picture/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/picture/apps/web/src/lib/stores/user-settings.svelte.ts @@ -7,13 +7,21 @@ * - localStorage caching for offline support */ +import { browser } from '$app/environment'; import { createUserSettingsStore } from '@manacore/shared-theme'; import { authStore } from './auth.svelte'; -const MANA_AUTH_URL = 'http://localhost:3001'; +function getAuthUrl(): string { + if (browser && typeof window !== 'undefined') { + const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) + .__PUBLIC_MANA_CORE_AUTH_URL__; + if (injectedUrl) return injectedUrl; + } + return import.meta.env.DEV ? 'http://localhost:3001' : ''; +} export const userSettings = createUserSettingsStore({ appId: 'picture', - authUrl: MANA_AUTH_URL, + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/planta/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/planta/apps/web/src/lib/stores/user-settings.svelte.ts index fbb1d1091..501b26cfd 100644 --- a/apps/planta/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/planta/apps/web/src/lib/stores/user-settings.svelte.ts @@ -6,13 +6,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'planta', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getValidToken(), }); diff --git a/apps/presi/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/presi/apps/web/src/lib/stores/user-settings.svelte.ts index 53cebea4b..718dbd0a5 100644 --- a/apps/presi/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/presi/apps/web/src/lib/stores/user-settings.svelte.ts @@ -7,13 +7,21 @@ * - localStorage caching for offline support */ +import { browser } from '$app/environment'; import { createUserSettingsStore } from '@manacore/shared-theme'; import { auth } from './auth.svelte'; -const MANA_AUTH_URL = 'http://localhost:3001'; +function getAuthUrl(): string { + if (browser && typeof window !== 'undefined') { + const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) + .__PUBLIC_MANA_CORE_AUTH_URL__; + if (injectedUrl) return injectedUrl; + } + return import.meta.env.DEV ? 'http://localhost:3001' : ''; +} export const userSettings = createUserSettingsStore({ appId: 'presi', - authUrl: MANA_AUTH_URL, + authUrl: getAuthUrl, getAccessToken: () => auth.getAccessToken(), }); diff --git a/apps/questions/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/questions/apps/web/src/lib/stores/user-settings.svelte.ts index 0514bc682..a981fc7c2 100644 --- a/apps/questions/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/questions/apps/web/src/lib/stores/user-settings.svelte.ts @@ -6,13 +6,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'questions', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getValidToken(), }); diff --git a/apps/skilltree/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/skilltree/apps/web/src/lib/stores/user-settings.svelte.ts index 7484df27c..f1cc1a57f 100644 --- a/apps/skilltree/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/skilltree/apps/web/src/lib/stores/user-settings.svelte.ts @@ -6,13 +6,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'skilltree', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/storage/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/storage/apps/web/src/lib/stores/user-settings.svelte.ts index 9b035d84d..5ec39773a 100644 --- a/apps/storage/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/storage/apps/web/src/lib/stores/user-settings.svelte.ts @@ -7,13 +7,21 @@ * - localStorage caching for offline support */ +import { browser } from '$app/environment'; import { createUserSettingsStore } from '@manacore/shared-theme'; import { authStore } from './auth.svelte'; -const MANA_AUTH_URL = 'http://localhost:3001'; +function getAuthUrl(): string { + if (browser && typeof window !== 'undefined') { + const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) + .__PUBLIC_MANA_CORE_AUTH_URL__; + if (injectedUrl) return injectedUrl; + } + return import.meta.env.DEV ? 'http://localhost:3001' : ''; +} export const userSettings = createUserSettingsStore({ appId: 'storage', - authUrl: MANA_AUTH_URL, + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/todo/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/todo/apps/web/src/lib/stores/user-settings.svelte.ts index 536074626..5773d4094 100644 --- a/apps/todo/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/todo/apps/web/src/lib/stores/user-settings.svelte.ts @@ -7,13 +7,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'todo', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/apps/zitare/apps/web/src/lib/stores/user-settings.svelte.ts b/apps/zitare/apps/web/src/lib/stores/user-settings.svelte.ts index 320f9eba7..9e3d8c3e1 100644 --- a/apps/zitare/apps/web/src/lib/stores/user-settings.svelte.ts +++ b/apps/zitare/apps/web/src/lib/stores/user-settings.svelte.ts @@ -6,13 +6,13 @@ function getAuthUrl(): string { if (browser && typeof window !== 'undefined') { const injectedUrl = (window as unknown as { __PUBLIC_MANA_CORE_AUTH_URL__?: string }) .__PUBLIC_MANA_CORE_AUTH_URL__; - return injectedUrl || 'http://localhost:3001'; + if (injectedUrl) return injectedUrl; } - return 'http://localhost:3001'; + return import.meta.env.DEV ? 'http://localhost:3001' : ''; } export const userSettings = createUserSettingsStore({ appId: 'zitare', - authUrl: getAuthUrl(), + authUrl: getAuthUrl, getAccessToken: () => authStore.getAccessToken(), }); diff --git a/packages/shared-theme/src/types.ts b/packages/shared-theme/src/types.ts index f883926d5..f2ca34eab 100644 --- a/packages/shared-theme/src/types.ts +++ b/packages/shared-theme/src/types.ts @@ -431,8 +431,8 @@ export interface UserSettingsStore { export interface UserSettingsStoreConfig { /** App identifier (e.g., 'calendar', 'chat') */ appId: string; - /** Auth service base URL */ - authUrl: string; + /** Auth service base URL (string or getter function for lazy resolution) */ + authUrl: string | (() => string); /** Function to get current access token */ getAccessToken: () => Promise; /** Optional device name (auto-detected if not provided) */ diff --git a/packages/shared-theme/src/user-settings-store.svelte.ts b/packages/shared-theme/src/user-settings-store.svelte.ts index 3cf2f4f70..6bcadffae 100644 --- a/packages/shared-theme/src/user-settings-store.svelte.ts +++ b/packages/shared-theme/src/user-settings-store.svelte.ts @@ -103,7 +103,9 @@ function detectDeviceName(): string { * ``` */ export function createUserSettingsStore(config: UserSettingsStoreConfig): UserSettingsStore { - const { appId, authUrl, getAccessToken, deviceName, deviceType } = config; + const { appId, authUrl: authUrlConfig, getAccessToken, deviceName, deviceType } = config; + const resolveAuthUrl = () => + typeof authUrlConfig === 'function' ? authUrlConfig() : authUrlConfig; const storageKey = `${STORAGE_KEY_PREFIX}-${appId}`; // Device info (initialized once) @@ -202,7 +204,7 @@ export function createUserSettingsStore(config: UserSettingsStoreConfig): UserSe } try { - const response = await fetch(`${authUrl}/api/v1/settings${path}`, { + const response = await fetch(`${resolveAuthUrl()}/api/v1/settings${path}`, { method, headers: { 'Content-Type': 'application/json',