From 0858cf62823bec8d5c264828be1b380c1a5642a6 Mon Sep 17 00:00:00 2001 From: "Justin Kolasa (from Dev Box)" Date: Tue, 6 May 2025 10:16:45 -0400 Subject: [PATCH] Reverting back to popup for opening --- src/Explorer/Explorer.tsx | 54 ++++++++++++++------------------------- 1 file changed, 19 insertions(+), 35 deletions(-) diff --git a/src/Explorer/Explorer.tsx b/src/Explorer/Explorer.tsx index 0fb9c1072..be8850caf 100644 --- a/src/Explorer/Explorer.tsx +++ b/src/Explorer/Explorer.tsx @@ -283,43 +283,12 @@ export default class Explorer { } public openInVsCode(): void { - TelemetryProcessor.traceStart(Action.OpenVSCode); - this.openVsCodeButtonClick(); - } - - public openVsCodeButtonClick = (): void => { const activeTab = useTabs.getState().activeTab; const resourceId = encodeURIComponent(userContext.databaseAccount.id); const database = encodeURIComponent(activeTab?.collection?.databaseId); const container = encodeURIComponent(activeTab?.collection?.id()); const baseUrl = `vscode://ms-azuretools.vscode-cosmosdb?resourceId=${resourceId}`; const vscodeUrl = activeTab ? `${baseUrl}&database=${database}&container=${container}` : baseUrl; - const startTime = Date.now(); - let vsCodeNotOpened = false; - - setTimeout(() => { - const timeOutTime = Date.now() - startTime; - if (!vsCodeNotOpened && timeOutTime < 1100) { - vsCodeNotOpened = true; - useDialog.getState().openDialog(openVSCodeDialogProps); - } - }, 1000); - - const link = document.createElement("a"); - link.href = vscodeUrl; - link.rel = "noopener noreferrer"; - document.body.appendChild(link); - - try { - link.click(); - document.body.removeChild(link); - TelemetryProcessor.traceStart(Action.OpenVSCode); - } catch (error) { - if (!vsCodeNotOpened) { - vsCodeNotOpened = true; - logConsoleError(`Failed to open VS Code: ${getErrorMessage(error)}`); - } - } const openVSCodeDialogProps: DialogProps = { linkProps: { @@ -334,16 +303,31 @@ export default class Explorer { secondaryButtonText: "Cancel", onPrimaryButtonClick: () => { - vsCodeNotOpened = false; - this.openVsCodeButtonClick(); - useDialog.getState().closeDialog(); + try { + const startTime = Date.now(); + let vsCodeNotOpened = false; + setTimeout(() => { + const timeOutTime = Date.now() - startTime; + if (!vsCodeNotOpened && timeOutTime < 1200) { + vsCodeNotOpened = true; + logConsoleError( + "We were unable to open Visual Studio Code. Please ensure you have it installed and try again.", + ); + } + }, 1000); + window.location.href = vscodeUrl; + TelemetryProcessor.traceStart(Action.OpenVSCode); + } catch (error) { + logConsoleError(`Failed to open VS Code: ${getErrorMessage(error)}`); + } }, onSecondaryButtonClick: () => { useDialog.getState().closeDialog(); TelemetryProcessor.traceCancel(Action.OpenVSCode); }, }; - }; + useDialog.getState().openDialog(openVSCodeDialogProps); + } public async openCESCVAFeedbackBlade(): Promise { sendMessage({ type: MessageTypes.OpenCESCVAFeedbackBlade });