mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-05-12 03:14:45 +01:00
Added support for opening CosmosDB Account without clicking database tab
This commit is contained in:
parent
f4d44d1b48
commit
2844dc4f1f
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user