Changed to dialog box only when no VS Code detected

This commit is contained in:
Justin Kolasa (from Dev Box) 2025-04-29 16:21:01 -04:00
parent 23f6fb2c9a
commit 70194bca49

View File

@ -283,57 +283,62 @@ export default class Explorer {
} }
public openInVsCode(): void { public openInVsCode(): void {
const startTime = Date.now();
let vsCodeNotOpened = false;
setTimeout(() => {
if (!vsCodeNotOpened && Date.now() - startTime < 1200) {
vsCodeNotOpened = true;
useDialog.getState().openDialog(openVSCodeDialogProps);
}
}, 1000);
TelemetryProcessor.traceStart(Action.OpenVSCode);
this.openVsCodeButtonClick();
const openVSCodeDialogProps: DialogProps = { const openVSCodeDialogProps: DialogProps = {
linkProps: { linkProps: {
linkText: "Download Visual Studio Code", linkText: "Download Visual Studio Code",
linkUrl: "https://code.visualstudio.com/download", linkUrl: "https://code.visualstudio.com/download",
}, },
isModal: true, isModal: true,
title: `Open your Cosmos DB account in Visual Studio Code`, title: `Please Download Visual Studio Code`,
subText: `Please ensure Visual Studio Code is installed on your device. subText: `Please ensure Visual Studio Code is installed on your device.
If you don't have it installed, please download it from the link below.`, If you don't have it installed, please download it from the link below.`,
primaryButtonText: "Open in VS Code", primaryButtonText: "Open VS Code",
secondaryButtonText: "Cancel", secondaryButtonText: "Cancel",
onPrimaryButtonClick: () => { onPrimaryButtonClick: () => {
TelemetryProcessor.traceStart(Action.OpenVSCode); this.openVsCodeButtonClick();
useDialog.getState().closeDialog();
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(() => {
if (!vsCodeNotOpened && Date.now() - startTime < 1500) {
vsCodeNotOpened = true;
logConsoleInfo(
"Visual Studio Code not detected. Please download it from: https://code.visualstudio.com/download",
);
}
}, 1000);
try {
window.location.href = vscodeUrl;
} catch (error) {
if (!vsCodeNotOpened) {
vsCodeNotOpened = true;
logConsoleError(`Failed to open VS Code: ${getErrorMessage(error)}`);
}
}
}, },
onSecondaryButtonClick: () => { onSecondaryButtonClick: () => {
useDialog.getState().closeDialog(); useDialog.getState().closeDialog();
TelemetryProcessor.traceCancel(Action.OpenVSCode); TelemetryProcessor.traceCancel(Action.OpenVSCode);
}, },
}; };
useDialog.getState().openDialog(openVSCodeDialogProps);
TelemetryProcessor.traceStart(Action.OpenVSCode);
} }
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 = `vsco://ms-azuretools.vscode-cosmosdb?resourceId=${resourceId}`;
const vscodeUrl = activeTab ? `${baseUrl}&database=${database}&container=${container}` : baseUrl;
let vsCodeNotOpened = false;
try {
window.location.href = vscodeUrl;
TelemetryProcessor.traceStart(Action.OpenVSCode);
} catch (error) {
if (!vsCodeNotOpened) {
vsCodeNotOpened = true;
logConsoleError(`Failed to open VS Code: ${getErrorMessage(error)}`);
}
}
};
public async openCESCVAFeedbackBlade(): Promise<void> { public async openCESCVAFeedbackBlade(): Promise<void> {
sendMessage({ type: MessageTypes.OpenCESCVAFeedbackBlade }); sendMessage({ type: MessageTypes.OpenCESCVAFeedbackBlade });
Logger.logInfo( Logger.logInfo(