diff options
Diffstat (limited to 'extension/react-app/src')
| -rw-r--r-- | extension/react-app/src/hooks/ContinueGUIClientProtocol.ts | 7 | ||||
| -rw-r--r-- | extension/react-app/src/hooks/messenger.ts | 10 | ||||
| -rw-r--r-- | extension/react-app/src/hooks/vscodeMessenger.ts | 8 | 
3 files changed, 25 insertions, 0 deletions
| diff --git a/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts b/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts index b8019664..5a5d4c30 100644 --- a/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts +++ b/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts @@ -17,6 +17,13 @@ class ContinueGUIClientProtocol extends AbstractContinueGUIClientProtocol {      this.messenger = useVscodeMessagePassing        ? new VscodeMessenger(serverUrlWithSessionId)        : new WebsocketMessenger(serverUrlWithSessionId); + +    this.messenger.onClose(() => { +      console.log("GUI -> IDE websocket closed"); +    }); +    this.messenger.onError((error) => { +      console.log("GUI -> IDE websocket error", error); +    });    }    sendMainInput(input: string) { diff --git a/extension/react-app/src/hooks/messenger.ts b/extension/react-app/src/hooks/messenger.ts index 00ce1fbb..ecf646c7 100644 --- a/extension/react-app/src/hooks/messenger.ts +++ b/extension/react-app/src/hooks/messenger.ts @@ -13,6 +13,8 @@ export abstract class Messenger {    abstract onClose(callback: () => void): void;    abstract sendAndReceive(messageType: string, data: any): Promise<any>; + +  abstract onError(callback: (error: any) => void): void;  }  export class WebsocketMessenger extends Messenger { @@ -20,6 +22,7 @@ export class WebsocketMessenger extends Messenger {    private onMessageListeners: {      [messageType: string]: ((data: object) => void)[];    } = {}; +  private onErrorListeners: ((error: any) => void)[] = [];    private onOpenListeners: (() => void)[] = [];    private onCloseListeners: (() => void)[] = [];    private serverUrl: string; @@ -37,6 +40,9 @@ export class WebsocketMessenger extends Messenger {          this.onMessageType(messageType, listener);        }      } +    for (const listener of this.onErrorListeners) { +      this.onError(listener); +    }      return newWebsocket;    } @@ -95,4 +101,8 @@ export class WebsocketMessenger extends Messenger {    onClose(callback: () => void): void {      this.websocket.addEventListener("close", callback);    } + +  onError(callback: (error: any) => void): void { +    this.websocket.addEventListener("error", callback); +  }  } diff --git a/extension/react-app/src/hooks/vscodeMessenger.ts b/extension/react-app/src/hooks/vscodeMessenger.ts index ba19586b..13f5092b 100644 --- a/extension/react-app/src/hooks/vscodeMessenger.ts +++ b/extension/react-app/src/hooks/vscodeMessenger.ts @@ -38,6 +38,14 @@ export class VscodeMessenger extends Messenger {      });    } +  onError(callback: (error: any) => void): void { +    window.addEventListener("message", (event: any) => { +      if (event.data.type === "websocketForwardingError") { +        callback(event.data.error); +      } +    }); +  } +    sendAndReceive(messageType: string, data: any): Promise<any> {      return new Promise((resolve) => {        const handler = (event: any) => { | 
