diff --git a/hooks/use-config.ts b/hooks/use-config.ts index 1e3bf653..d0364754 100644 --- a/hooks/use-config.ts +++ b/hooks/use-config.ts @@ -29,7 +29,7 @@ interface AppConfig extends ConfigData { let configCache: ConfigData | null = null; let configPromise: Promise | null = null; -async function fetchConfig(): Promise { +export async function fetchConfig(): Promise { // Return cached config if available if (configCache) { return configCache; diff --git a/stores/auth-store.ts b/stores/auth-store.ts index 509b4129..17561495 100644 --- a/stores/auth-store.ts +++ b/stores/auth-store.ts @@ -8,6 +8,7 @@ import { useVacationStore } from './vacation-store'; import { useCalendarStore } from './calendar-store'; import { useFilterStore } from './filter-store'; import { useSettingsStore } from './settings-store'; +import { fetchConfig } from '@/hooks/use-config'; import { debug } from '@/lib/debug'; import type { Identity } from '@/lib/jmap/types'; @@ -163,10 +164,13 @@ export const useAuthStore = create()( error: null, }); - // Sync settings from server - useSettingsStore.getState().loadFromServer(username, serverUrl).finally(() => { - useSettingsStore.getState().enableSync(username, serverUrl); - }); + // Sync settings from server (only if enabled) + fetchConfig().then(config => { + if (!config.settingsSyncEnabled) return; + useSettingsStore.getState().loadFromServer(username, serverUrl).finally(() => { + useSettingsStore.getState().enableSync(username, serverUrl); + }); + }).catch(() => {}); if (rememberMe) { try { @@ -242,10 +246,13 @@ export const useAuthStore = create()( scheduleRefresh(expires_in, get().refreshAccessToken); - // Sync settings from server - useSettingsStore.getState().loadFromServer(username, serverUrl).finally(() => { - useSettingsStore.getState().enableSync(username, serverUrl); - }); + // Sync settings from server (only if enabled) + fetchConfig().then(config => { + if (!config.settingsSyncEnabled) return; + useSettingsStore.getState().loadFromServer(username, serverUrl).finally(() => { + useSettingsStore.getState().enableSync(username, serverUrl); + }); + }).catch(() => {}); return true; } catch (error) { @@ -393,10 +400,13 @@ export const useAuthStore = create()( accessToken: token, }); - // Sync settings from server - useSettingsStore.getState().loadFromServer(state.username || '', state.serverUrl).finally(() => { - useSettingsStore.getState().enableSync(state.username || '', state.serverUrl!); - }); + // Sync settings from server (only if enabled) + fetchConfig().then(config => { + if (!config.settingsSyncEnabled) return; + useSettingsStore.getState().loadFromServer(state.username || '', state.serverUrl!).finally(() => { + useSettingsStore.getState().enableSync(state.username || '', state.serverUrl!); + }); + }).catch(() => {}); return; } } catch (error) { @@ -436,10 +446,13 @@ export const useAuthStore = create()( authMode: 'basic', }); - // Sync settings from server - useSettingsStore.getState().loadFromServer(username, serverUrl).finally(() => { - useSettingsStore.getState().enableSync(username, serverUrl); - }); + // Sync settings from server (only if enabled) + fetchConfig().then(config => { + if (!config.settingsSyncEnabled) return; + useSettingsStore.getState().loadFromServer(username, serverUrl).finally(() => { + useSettingsStore.getState().enableSync(username, serverUrl); + }); + }).catch(() => {}); return; } } catch (error) {