feat: enhance configuration fetching and implement retry logic for API requests
This commit is contained in:
+1
-1
@@ -29,7 +29,7 @@ interface AppConfig extends ConfigData {
|
||||
let configCache: ConfigData | null = null;
|
||||
let configPromise: Promise<ConfigData> | null = null;
|
||||
|
||||
async function fetchConfig(): Promise<ConfigData> {
|
||||
export async function fetchConfig(): Promise<ConfigData> {
|
||||
// Return cached config if available
|
||||
if (configCache) {
|
||||
return configCache;
|
||||
|
||||
+29
-16
@@ -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<AuthState>()(
|
||||
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<AuthState>()(
|
||||
|
||||
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<AuthState>()(
|
||||
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<AuthState>()(
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user