Added support for opening CosmosDB Account without clicking database tab

This commit is contained in:
Justin Kolasa (from Dev Box) 2025-04-23 12:06:15 -04:00
parent f4d44d1b48
commit 2844dc4f1f
2 changed files with 10 additions and 19 deletions

View File

@ -286,26 +286,17 @@ export default class Explorer {
const startTime = TelemetryProcessor.traceStart(Action.OpenVSCode); const startTime = TelemetryProcessor.traceStart(Action.OpenVSCode);
const clearInProgressMessage = logConsoleProgress("Opening Visual Studio Code"); const clearInProgressMessage = logConsoleProgress("Opening Visual Studio Code");
const { subscriptionId, resourceGroup, databaseAccount } = userContext;
const activeTab = useTabs.getState().activeTab; const activeTab = useTabs.getState().activeTab;
const database = activeTab.collection?.databaseId;
const container = activeTab.collection?.id();
if (!database || !container) { const baseUrl = `vscode://ms-azuretools.vscode-cosmosdb?resourceId=${userContext.databaseAccount.id}`;
logConsoleError( const vscodeUrl = activeTab
"Failed to open Visual Studio Code, a database account and container is required to open in VS Code.", ? `${baseUrl}&database=${activeTab.collection.databaseId}&container=${activeTab.collection?.id()}`
); : baseUrl;
clearInProgressMessage(); const vscodeInsidersUrl = vscodeUrl.replace("vscode://", "vscode-insiders://");
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}`;
try { try {
logConsoleInfo("Opening Visual Studio Code");
const linkOpened = const linkOpened =
(navigator.userAgent.includes("Insiders") && window.open(vscodeInsidersUrl)) || window.open(vscodeUrl); (navigator.userAgent.includes("Insiders") && window.open(vscodeInsidersUrl)) || window.open(vscodeUrl);
if (!linkOpened) { if (!linkOpened) {
logConsoleError("Visual Studio Code is not installed on this device"); logConsoleError("Visual Studio Code is not installed on this device");
@ -314,10 +305,10 @@ export default class Explorer {
TelemetryProcessor.traceSuccess(Action.OpenVSCode, {}, startTime); TelemetryProcessor.traceSuccess(Action.OpenVSCode, {}, startTime);
} catch (error) { } catch (error) {
logConsoleError(`Failed to open Visual Studio Code. ${getErrorMessage(error)}`); logConsoleError(`Failed to open Visual Studio Code. ${getErrorMessage(error)}`);
TelemetryProcessor.traceFailure(Action.OpenVSCode, {}, startTime); TelemetryProcessor.traceFailure(Action.OpenVSCode, {}, startTime);
} finally { } finally {
clearInProgressMessage(); clearInProgressMessage();
} }
} }

View File

@ -271,7 +271,7 @@ function createOpenSynapseLinkDialogButton(container: Explorer): CommandButtonCo
} }
function createOpenVsCodeDialogButton(container: Explorer): CommandButtonComponentProps { function createOpenVsCodeDialogButton(container: Explorer): CommandButtonComponentProps {
const label = "Open in VS Code"; const label = "VS Code";
return { return {
iconSrc: VSCodeIcon, iconSrc: VSCodeIcon,
iconAlt: label, iconAlt: label,