From 9ded1ea41e65d83e32ed74ca1fb5bd1f00a5d054 Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Fri, 28 Jul 2023 00:18:49 -0700 Subject: refactor: :goal_net: log errors from websocket, better logging from uvicorn --- extension/react-app/src/hooks/ContinueGUIClientProtocol.ts | 7 +++++++ extension/react-app/src/hooks/messenger.ts | 10 ++++++++++ extension/react-app/src/hooks/vscodeMessenger.ts | 8 ++++++++ 3 files changed, 25 insertions(+) (limited to 'extension/react-app') 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; + + 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 { return new Promise((resolve) => { const handler = (event: any) => { -- cgit v1.2.3-70-g09d2 From 23167a51d959fed5e4be057ceb9fff50cf34c6c8 Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Fri, 28 Jul 2023 20:28:53 -0700 Subject: fix: :children_crossing: clear the dropdown after text input cleared --- extension/package-lock.json | 4 +- extension/package.json | 2 +- extension/react-app/src/components/ComboBox.tsx | 58 +++++++++++++++---------- 3 files changed, 37 insertions(+), 27 deletions(-) (limited to 'extension/react-app') diff --git a/extension/package-lock.json b/extension/package-lock.json index 5e2a7e2a..30b9952c 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.0.223", + "version": "0.0.224", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "continue", - "version": "0.0.223", + "version": "0.0.224", "license": "Apache-2.0", "dependencies": { "@electron/rebuild": "^3.2.10", diff --git a/extension/package.json b/extension/package.json index 507e00b8..9b9daef6 100644 --- a/extension/package.json +++ b/extension/package.json @@ -14,7 +14,7 @@ "displayName": "Continue", "pricing": "Free", "description": "The open-source coding autopilot", - "version": "0.0.223", + "version": "0.0.224", "publisher": "Continue", "engines": { "vscode": "^1.67.0" diff --git a/extension/react-app/src/components/ComboBox.tsx b/extension/react-app/src/components/ComboBox.tsx index 9aab4e93..da559383 100644 --- a/extension/react-app/src/components/ComboBox.tsx +++ b/extension/react-app/src/components/ComboBox.tsx @@ -162,33 +162,43 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => { } }, onInputValueChange({ inputValue, highlightedIndex }) { - if (!inputValue) return; + if (!inputValue) { + setItems([]); + return; + } props.onInputValueChange(inputValue); if (inputValue.endsWith("@") || currentlyInContextQuery) { - setCurrentlyInContextQuery(true); - const segs = inputValue.split("@"); - const providerAndQuery = segs[segs.length - 1]; - const [provider, query] = providerAndQuery.split(" "); - searchClient - .index(SEARCH_INDEX_NAME) - .search(providerAndQuery) - .then((res) => { - setItems( - res.hits.map((hit) => { - return { - name: hit.name, - description: hit.description, - id: hit.id, - }; - }) - ); - }) - .catch(() => { - // Swallow errors, because this simply is not supported on Windows at the moment - }); - return; + + if (segs.length > 1) { + // Get search results and return + setCurrentlyInContextQuery(true); + const providerAndQuery = segs[segs.length - 1]; + const [provider, query] = providerAndQuery.split(" "); + searchClient + .index(SEARCH_INDEX_NAME) + .search(providerAndQuery) + .then((res) => { + setItems( + res.hits.map((hit) => { + return { + name: hit.name, + description: hit.description, + id: hit.id, + }; + }) + ); + }) + .catch(() => { + // Swallow errors, because this simply is not supported on Windows at the moment + }); + return; + } else { + // Exit the '@' context menu + setCurrentlyInContextQuery(false); + setItems; + } } setItems( props.items.filter((item) => @@ -262,7 +272,7 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => { key={`${item.description.id.item_id}${idx}`} item={item} warning={ - false && item.content.length > 4000 && item.editing + item.content.length > 4000 && item.editing ? "Editing such a large range may be slow" : undefined } -- cgit v1.2.3-70-g09d2