(fix): appcontainer should not poll and footer should use currentModel from ui state (#11923)

This commit is contained in:
Pyush Sinha
2025-10-27 15:33:12 -07:00
committed by GitHub
parent cb0947c501
commit 2dfb813c90
6 changed files with 72 additions and 12 deletions
+32
View File
@@ -33,8 +33,19 @@ export interface UserFeedbackPayload {
error?: unknown;
}
/**
* Payload for the 'fallback-mode-changed' event.
*/
export interface FallbackModeChangedPayload {
/**
* Whether fallback mode is now active.
*/
isInFallbackMode: boolean;
}
export enum CoreEvent {
UserFeedback = 'user-feedback',
FallbackModeChanged = 'fallback-mode-changed',
}
export class CoreEventEmitter extends EventEmitter {
@@ -66,6 +77,15 @@ export class CoreEventEmitter extends EventEmitter {
}
}
/**
* Notifies subscribers that fallback mode has changed.
* This is synchronous and doesn't use backlog (UI should already be initialized).
*/
emitFallbackModeChanged(isInFallbackMode: boolean): void {
const payload: FallbackModeChangedPayload = { isInFallbackMode };
this.emit(CoreEvent.FallbackModeChanged, payload);
}
/**
* Flushes buffered messages. Call this immediately after primary UI listener
* subscribes.
@@ -82,6 +102,10 @@ export class CoreEventEmitter extends EventEmitter {
event: CoreEvent.UserFeedback,
listener: (payload: UserFeedbackPayload) => void,
): this;
override on(
event: CoreEvent.FallbackModeChanged,
listener: (payload: FallbackModeChangedPayload) => void,
): this;
override on(
event: string | symbol,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -94,6 +118,10 @@ export class CoreEventEmitter extends EventEmitter {
event: CoreEvent.UserFeedback,
listener: (payload: UserFeedbackPayload) => void,
): this;
override off(
event: CoreEvent.FallbackModeChanged,
listener: (payload: FallbackModeChangedPayload) => void,
): this;
override off(
event: string | symbol,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -106,6 +134,10 @@ export class CoreEventEmitter extends EventEmitter {
event: CoreEvent.UserFeedback,
payload: UserFeedbackPayload,
): boolean;
override emit(
event: CoreEvent.FallbackModeChanged,
payload: FallbackModeChangedPayload,
): boolean;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
override emit(event: string | symbol, ...args: any[]): boolean {
return super.emit(event, ...args);