diff --git a/apps/desktop/electron/main.ts b/apps/desktop/electron/main.ts index 00e11f11d4..6f3c916e5c 100644 --- a/apps/desktop/electron/main.ts +++ b/apps/desktop/electron/main.ts @@ -443,7 +443,12 @@ import { import { createQuickEntryShortcut, quickEntryWindowBounds, sanitizeQuickEntrySettings } from './quick-entry' import { createQuitFinalization } from './quit-finalization' import { type ActiveWork, backendOwnedByApp, mergeActiveWork, normalizeActiveWork, quitPromptFor } from './quit-guard' -import { backendQuitNeedsWait, backendTeardownOptions, createQuitTeardownCoordinator, type QuitTeardownTask } from './quit-teardown' +import { + backendQuitNeedsWait, + backendTeardownOptions, + createQuitTeardownCoordinator, + type QuitTeardownTask +} from './quit-teardown' import * as remoteLifecycle from './remote-lifecycle' import { attachPowerResumeRemoteRevalidation, @@ -3637,10 +3642,12 @@ function isLightVariant(): boolean { /** Invalidate connections and wait for every owned backend before the swap. */ async function teardownBundledBackend(): Promise { isQuittingForHandoff = true + const results = await Promise.allSettled([ teardownPrimaryBackendAndWait(backendTeardownOptions('reconnect')), stopAllPoolBackends() ]) + const errors = results.filter(result => result.status === 'rejected').map(result => result.reason) if (errors.length) { diff --git a/apps/desktop/src/plugins/kanban/api.default-notify.test.ts b/apps/desktop/src/plugins/kanban/api.default-notify.test.ts index 1d56805a70..c7d819d4b2 100644 --- a/apps/desktop/src/plugins/kanban/api.default-notify.test.ts +++ b/apps/desktop/src/plugins/kanban/api.default-notify.test.ts @@ -72,7 +72,9 @@ describe('default board event notifications', () => { it.each(['empty', 'rejected'])('preserves the live alias socket when board resolution is %s', async mode => { const rest = vi.fn(async (path: string) => { if (path === '/boards') { - if (mode === 'rejected') {throw new Error('offline')} + if (mode === 'rejected') { + throw new Error('offline') + } return { current: '' } } @@ -139,9 +141,13 @@ describe('default board event notifications', () => { let latest = 100 const rest = vi.fn(async (path: string) => { - if (path === '/boards') {return { current: 'default', boards: [{ slug: 'default' }] }} + if (path === '/boards') { + return { current: 'default', boards: [{ slug: 'default' }] } + } - if (path === '/board?board=default' || path === '/board') {return { latest_event_id: latest }} + if (path === '/board?board=default' || path === '/board') { + return { latest_event_id: latest } + } throw new Error(`Unexpected REST call: ${path}`) }) diff --git a/apps/desktop/src/plugins/kanban/api.ts b/apps/desktop/src/plugins/kanban/api.ts index fc165dda8f..fdab9c7895 100644 --- a/apps/desktop/src/plugins/kanban/api.ts +++ b/apps/desktop/src/plugins/kanban/api.ts @@ -236,7 +236,9 @@ export function bindApi( const selectedSlug = $boardSlug.get() return socket(eventsUrl(slug, since), data => { - if (generation === socketGeneration) {onEventsFrame(scope, slug, data, selectedSlug)} + if (generation === socketGeneration) { + onEventsFrame(scope, slug, data, selectedSlug) + } }) }