From d04fc343f07cc1108c4e9c7b577bf312d405d6ec Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Wed, 15 Oct 2025 15:09:10 +1100 Subject: [PATCH] feat(ui): add flag for connected status --- .../web/src/features/ui/layouts/navigation-api.test.ts | 3 +++ .../web/src/features/ui/layouts/navigation-api.ts | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/invokeai/frontend/web/src/features/ui/layouts/navigation-api.test.ts b/invokeai/frontend/web/src/features/ui/layouts/navigation-api.test.ts index 37b0722334..0eff0080ba 100644 --- a/invokeai/frontend/web/src/features/ui/layouts/navigation-api.test.ts +++ b/invokeai/frontend/web/src/features/ui/layouts/navigation-api.test.ts @@ -127,6 +127,7 @@ describe('AppNavigationApi', () => { describe('Basic Connection', () => { it('should connect to app', () => { + expect(navigationApi.$isConnected.get()).toBe(false); navigationApi.connectToApp(mockAppApi); expect(navigationApi._app).not.toBeNull(); @@ -135,6 +136,7 @@ describe('AppNavigationApi', () => { expect(navigationApi._app?.storage.set).toBe(mockSetStorage); expect(navigationApi._app?.storage.get).toBe(mockGetStorage); expect(navigationApi._app?.storage.delete).toBe(mockDeleteStorage); + expect(navigationApi.$isConnected.get()).toBe(true); }); it('should disconnect from app', () => { @@ -142,6 +144,7 @@ describe('AppNavigationApi', () => { navigationApi.disconnectFromApp(); expect(navigationApi._app).toBeNull(); + expect(navigationApi.$isConnected.get()).toBe(false); }); }); diff --git a/invokeai/frontend/web/src/features/ui/layouts/navigation-api.ts b/invokeai/frontend/web/src/features/ui/layouts/navigation-api.ts index daa191acd7..98866a12f9 100644 --- a/invokeai/frontend/web/src/features/ui/layouts/navigation-api.ts +++ b/invokeai/frontend/web/src/features/ui/layouts/navigation-api.ts @@ -112,6 +112,12 @@ export class NavigationApi { */ _app: NavigationAppApi | null = null; + /** + * A flag indicating if the application is currently connected to the navigation API. + */ + private _$isConnected = atom(false); + $isConnected: Atom = this._$isConnected; + /** * Connect to the application to manage tab switching. * @param api - The application API that provides methods to set and get the current app tab and manage panel @@ -119,6 +125,7 @@ export class NavigationApi { */ connectToApp = (api: NavigationAppApi): void => { this._app = api; + this._$isConnected.set(true); }; /** @@ -126,6 +133,7 @@ export class NavigationApi { */ disconnectFromApp = (): void => { this._app = null; + this._$isConnected.set(false); }; /**