summaryrefslogtreecommitdiff
path: root/packages/core/src
diff options
context:
space:
mode:
authorShreya Keshive <[email protected]>2025-08-19 10:24:58 -0700
committerGitHub <[email protected]>2025-08-19 17:24:58 +0000
commit9588aa6ef971918b8acfeefdad4f6a33f93349cf (patch)
treeb72ff1f169eb88b832059cd824c58c132463771e /packages/core/src
parentfde5511c270ace148c6328b03fa61d917850f6d3 (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.ts13
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;
}
}