diff options
| author | Shreya Keshive <[email protected]> | 2025-08-19 10:24:58 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-19 17:24:58 +0000 |
| commit | 9588aa6ef971918b8acfeefdad4f6a33f93349cf (patch) | |
| tree | b72ff1f169eb88b832059cd824c58c132463771e /packages/core/src | |
| parent | fde5511c270ace148c6328b03fa61d917850f6d3 (diff) | |
feat: Show /ide subcommands based on connection status instead of ideMode boolean (#6496)
Diffstat (limited to 'packages/core/src')
| -rw-r--r-- | packages/core/src/ide/ide-client.ts | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/packages/core/src/ide/ide-client.ts b/packages/core/src/ide/ide-client.ts index 0a99f0de..efb9c8f0 100644 --- a/packages/core/src/ide/ide-client.ts +++ b/packages/core/src/ide/ide-client.ts @@ -63,6 +63,7 @@ export class IdeClient { private readonly currentIde: DetectedIde | undefined; private readonly currentIdeDisplayName: string | undefined; private diffResponses = new Map<string, (result: DiffUpdateResult) => void>(); + private statusListeners = new Set<(state: IDEConnectionState) => void>(); private constructor() { this.currentIde = detectIde(); @@ -78,6 +79,14 @@ export class IdeClient { return IdeClient.instance; } + addStatusChangeListener(listener: (state: IDEConnectionState) => void) { + this.statusListeners.add(listener); + } + + removeStatusChangeListener(listener: (state: IDEConnectionState) => void) { + this.statusListeners.delete(listener); + } + async connect(): Promise<void> { if (!this.currentIde || !this.currentIdeDisplayName) { this.setState( @@ -237,6 +246,9 @@ export class IdeClient { // disconnected, so that the first detail message is preserved. if (!isAlreadyDisconnected) { this.state = { status, details }; + for (const listener of this.statusListeners) { + listener(this.state); + } if (details) { if (logToConsole) { logger.error(details); @@ -390,7 +402,6 @@ export class IdeClient { logger.debug('Failed to close transport:', closeError); } } - logger.error(`Failed to connect: ${_error}`); return false; } } |
