From 2844dc4f1fd6d42a261bbe437cd78f64e4ecc513 Mon Sep 17 00:00:00 2001 From: "Justin Kolasa (from Dev Box)" Date: Wed, 23 Apr 2025 12:06:15 -0400 Subject: [PATCH] Added support for opening CosmosDB Account without clicking database tab --- src/Explorer/Explorer.tsx | 27 +++++++------------ .../CommandBarComponentButtonFactory.tsx | 2 +- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/src/Explorer/Explorer.tsx b/src/Explorer/Explorer.tsx index fdf3e1e5c..4cf504c2e 100644 --- a/src/Explorer/Explorer.tsx +++ b/src/Explorer/Explorer.tsx @@ -286,26 +286,17 @@ export default class Explorer { const startTime = TelemetryProcessor.traceStart(Action.OpenVSCode); const clearInProgressMessage = logConsoleProgress("Opening Visual Studio Code"); - const { subscriptionId, resourceGroup, databaseAccount } = userContext; const activeTab = useTabs.getState().activeTab; - const database = activeTab.collection?.databaseId; - const container = activeTab.collection?.id(); - if (!database || !container) { - logConsoleError( - "Failed to open Visual Studio Code, a database account and container is required to open in VS Code.", - ); - clearInProgressMessage(); - return; - } - - const vscodeUrl = `vscode://ms-azuretools.vscode-cosmosdb?resourceId=/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.DocumentDB/databaseAccounts/${databaseAccount.id}&database=${database}&container=${container}`; - const vscodeInsidersUrl = `vscode-insiders://ms-azuretools.vscode-cosmosdb?resourceId=/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.DocumentDB/databaseAccounts/${databaseAccount.id}&database=${database}&container=${container}`; + const baseUrl = `vscode://ms-azuretools.vscode-cosmosdb?resourceId=${userContext.databaseAccount.id}`; + const vscodeUrl = activeTab + ? `${baseUrl}&database=${activeTab.collection.databaseId}&container=${activeTab.collection?.id()}` + : baseUrl; + const vscodeInsidersUrl = vscodeUrl.replace("vscode://", "vscode-insiders://"); try { - logConsoleInfo("Opening Visual Studio Code"); const linkOpened = - (navigator.userAgent.includes("Insiders") && window.open(vscodeInsidersUrl)) || window.open(vscodeUrl); + (navigator.userAgent.includes("Insiders") && window.open(vscodeInsidersUrl)) || window.open(vscodeUrl); if (!linkOpened) { logConsoleError("Visual Studio Code is not installed on this device"); @@ -314,10 +305,10 @@ export default class Explorer { TelemetryProcessor.traceSuccess(Action.OpenVSCode, {}, startTime); } catch (error) { - logConsoleError(`Failed to open Visual Studio Code. ${getErrorMessage(error)}`); - TelemetryProcessor.traceFailure(Action.OpenVSCode, {}, startTime); + logConsoleError(`Failed to open Visual Studio Code. ${getErrorMessage(error)}`); + TelemetryProcessor.traceFailure(Action.OpenVSCode, {}, startTime); } finally { - clearInProgressMessage(); + clearInProgressMessage(); } } diff --git a/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.tsx b/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.tsx index 7d6c4630b..3a24b14c4 100644 --- a/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.tsx +++ b/src/Explorer/Menus/CommandBar/CommandBarComponentButtonFactory.tsx @@ -271,7 +271,7 @@ function createOpenSynapseLinkDialogButton(container: Explorer): CommandButtonCo } function createOpenVsCodeDialogButton(container: Explorer): CommandButtonComponentProps { - const label = "Open in VS Code"; + const label = "VS Code"; return { iconSrc: VSCodeIcon, iconAlt: label,