fix(startup): isolate optional AI config failures

Closes #3779
This commit is contained in:
t8y2 committed 2026-08-13 14:32:37 +00:00
1 parent 58633bf682
commit 34f6389503
3 files changed
+90 -13

No files matched your search

+6 -3
View File
@@ -39,7 +39,7 @@ import { useExternalSqlFileChanges } from "@/composables/useExternalSqlFileChang
import { useWebDavAutoUpload } from "@/composables/useWebDavAutoUpload";
import { useScheduledDatabaseBackups } from "@/composables/useScheduledDatabaseBackups";
import { shouldDrawDesktopWindowFrame } from "@/composables/useWindowControls";
import { createOpenTabsRestorationBarrier, initializeDesktopOpenTabs, type OpenTabsRestorationBarrier } from "@/lib/app/openTabsStartup";
import { createOpenTabsRestorationBarrier, initializeDesktopOpenTabs, initializeOpenTabs, type OpenTabsRestorationBarrier } from "@/lib/app/openTabsStartup";
import { useSaveSqlFolderSelection } from "@/composables/useSaveSqlFolderSelection";
import "@/i18n";
import { translateBackendError } from "@/i18n/backend-errors";
@@ -2376,7 +2376,6 @@ async function initApp() {
console.log(`[STARTUP] queryStore.initOpenTabs: ${(performance.now() - t0).toFixed(0)}ms`);
};
if (!desktopOpenTabsRestorationBarrier) await settingsStore.initAiConfigs();
try {
if (desktopOpenTabsRestorationBarrier) {
await initializeDesktopOpenTabs({
@@ -2386,7 +2385,11 @@ async function initApp() {
onOptionalStateError: (error) => console.error("[STARTUP] settingsStore.initAiConfigs failed", error),
});
} else {
await restoreOpenTabs();
await initializeOpenTabs({
initializeOptionalState: () => settingsStore.initAiConfigs(),
restoreOpenTabs,
onOptionalStateError: (error) => console.error("[STARTUP] settingsStore.initAiConfigs failed", error),
});
}
await settingsStore.initDesktopSettings().catch(() => {});
+16 -9
View File
@@ -20,21 +20,28 @@ export function createOpenTabsRestorationBarrier(): OpenTabsRestorationBarrier {
};
}
interface InitializeDesktopOpenTabsOptions {
barrier: OpenTabsRestorationBarrier;
interface InitializeOpenTabsOptions {
initializeOptionalState: () => Promise<void>;
restoreOpenTabs: () => Promise<void>;
onOptionalStateError: (error: unknown) => void;
}
export async function initializeDesktopOpenTabs({ barrier, initializeOptionalState, restoreOpenTabs, onOptionalStateError }: InitializeDesktopOpenTabsOptions): Promise<void> {
export async function initializeOpenTabs({ initializeOptionalState, restoreOpenTabs, onOptionalStateError }: InitializeOpenTabsOptions): Promise<void> {
try {
try {
await initializeOptionalState();
} catch (error) {
onOptionalStateError(error);
}
await restoreOpenTabs();
await initializeOptionalState();
} catch (error) {
onOptionalStateError(error);
}
await restoreOpenTabs();
}
interface InitializeDesktopOpenTabsOptions extends InitializeOpenTabsOptions {
barrier: OpenTabsRestorationBarrier;
}
export async function initializeDesktopOpenTabs({ barrier, ...options }: InitializeDesktopOpenTabsOptions): Promise<void> {
try {
await initializeOpenTabs(options);
} finally {
barrier.settle();
}