Skip to content

Commit d935977

Browse files
Vigilansjdneo
authored andcommitted
Add try-catch block during extesion's activation (#249)
1 parent 9838b5d commit d935977

File tree

1 file changed

+43
-37
lines changed

1 file changed

+43
-37
lines changed

src/extension.ts

+43-37
Original file line numberDiff line numberDiff line change
@@ -16,52 +16,58 @@ import { leetCodeChannel } from "./leetCodeChannel";
1616
import { leetCodeExecutor } from "./leetCodeExecutor";
1717
import { leetCodeManager } from "./leetCodeManager";
1818
import { leetCodeStatusBarController } from "./statusbar/leetCodeStatusBarController";
19+
import { DialogType, promptForOpenOutputChannel } from "./utils/uiUtils";
1920
import { leetCodePreviewProvider } from "./webview/leetCodePreviewProvider";
2021
import { leetCodeResultProvider } from "./webview/leetCodeResultProvider";
2122
import { leetCodeSolutionProvider } from "./webview/leetCodeSolutionProvider";
2223

2324
export async function activate(context: vscode.ExtensionContext): Promise<void> {
24-
if (!await leetCodeExecutor.meetRequirements()) {
25-
return;
26-
}
25+
try {
26+
if (!await leetCodeExecutor.meetRequirements()) {
27+
throw new Error("The environment doesn't meet requirements.");
28+
}
2729

28-
leetCodeManager.on("statusChanged", () => {
29-
leetCodeStatusBarController.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser());
30-
leetCodeTreeDataProvider.refresh();
31-
});
30+
leetCodeManager.on("statusChanged", () => {
31+
leetCodeStatusBarController.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser());
32+
leetCodeTreeDataProvider.refresh();
33+
});
3234

33-
const leetCodeTreeDataProvider: LeetCodeTreeDataProvider = new LeetCodeTreeDataProvider(context);
34-
leetCodePreviewProvider.initialize(context);
35-
leetCodeResultProvider.initialize(context);
36-
leetCodeSolutionProvider.initialize(context);
35+
const leetCodeTreeDataProvider: LeetCodeTreeDataProvider = new LeetCodeTreeDataProvider(context);
36+
leetCodePreviewProvider.initialize(context);
37+
leetCodeResultProvider.initialize(context);
38+
leetCodeSolutionProvider.initialize(context);
3739

38-
context.subscriptions.push(
39-
leetCodeStatusBarController,
40-
leetCodeChannel,
41-
leetCodePreviewProvider,
42-
leetCodeResultProvider,
43-
leetCodeSolutionProvider,
44-
leetCodeExecutor,
45-
vscode.window.createTreeView("leetCodeExplorer", { treeDataProvider: leetCodeTreeDataProvider, showCollapseAll: true }),
46-
vscode.languages.registerCodeLensProvider({ scheme: "file" }, codeLensProvider),
47-
vscode.commands.registerCommand("leetcode.deleteCache", () => cache.deleteCache()),
48-
vscode.commands.registerCommand("leetcode.toggleLeetCodeCn", () => plugin.switchEndpoint()),
49-
vscode.commands.registerCommand("leetcode.signin", () => leetCodeManager.signIn()),
50-
vscode.commands.registerCommand("leetcode.signout", () => leetCodeManager.signOut()),
51-
vscode.commands.registerCommand("leetcode.selectSessions", () => session.selectSession()),
52-
vscode.commands.registerCommand("leetcode.createSession", () => session.createSession()),
53-
vscode.commands.registerCommand("leetcode.previewProblem", (node: LeetCodeNode) => leetCodePreviewProvider.preview(node)),
54-
vscode.commands.registerCommand("leetcode.showProblem", (node: LeetCodeNode) => show.showProblem(node)),
55-
vscode.commands.registerCommand("leetcode.searchProblem", () => show.searchProblem()),
56-
vscode.commands.registerCommand("leetcode.showSolution", (node: LeetCodeNode) => show.showSolution(node)),
57-
vscode.commands.registerCommand("leetcode.refreshExplorer", () => leetCodeTreeDataProvider.refresh()),
58-
vscode.commands.registerCommand("leetcode.testSolution", (uri?: vscode.Uri) => test.testSolution(uri)),
59-
vscode.commands.registerCommand("leetcode.submitSolution", (uri?: vscode.Uri) => submit.submitSolution(uri)),
60-
vscode.commands.registerCommand("leetcode.switchDefaultLanguage", () => switchDefaultLanguage()),
61-
);
40+
context.subscriptions.push(
41+
leetCodeStatusBarController,
42+
leetCodeChannel,
43+
leetCodePreviewProvider,
44+
leetCodeResultProvider,
45+
leetCodeSolutionProvider,
46+
leetCodeExecutor,
47+
vscode.window.createTreeView("leetCodeExplorer", { treeDataProvider: leetCodeTreeDataProvider, showCollapseAll: true }),
48+
vscode.languages.registerCodeLensProvider({ scheme: "file" }, codeLensProvider),
49+
vscode.commands.registerCommand("leetcode.deleteCache", () => cache.deleteCache()),
50+
vscode.commands.registerCommand("leetcode.toggleLeetCodeCn", () => plugin.switchEndpoint()),
51+
vscode.commands.registerCommand("leetcode.signin", () => leetCodeManager.signIn()),
52+
vscode.commands.registerCommand("leetcode.signout", () => leetCodeManager.signOut()),
53+
vscode.commands.registerCommand("leetcode.selectSessions", () => session.selectSession()),
54+
vscode.commands.registerCommand("leetcode.createSession", () => session.createSession()),
55+
vscode.commands.registerCommand("leetcode.previewProblem", (node: LeetCodeNode) => leetCodePreviewProvider.preview(node)),
56+
vscode.commands.registerCommand("leetcode.showProblem", (node: LeetCodeNode) => show.showProblem(node)),
57+
vscode.commands.registerCommand("leetcode.searchProblem", () => show.searchProblem()),
58+
vscode.commands.registerCommand("leetcode.showSolution", (node: LeetCodeNode) => show.showSolution(node)),
59+
vscode.commands.registerCommand("leetcode.refreshExplorer", () => leetCodeTreeDataProvider.refresh()),
60+
vscode.commands.registerCommand("leetcode.testSolution", (uri?: vscode.Uri) => test.testSolution(uri)),
61+
vscode.commands.registerCommand("leetcode.submitSolution", (uri?: vscode.Uri) => submit.submitSolution(uri)),
62+
vscode.commands.registerCommand("leetcode.switchDefaultLanguage", () => switchDefaultLanguage()),
63+
);
6264

63-
await leetCodeExecutor.switchEndpoint(plugin.getLeetCodeEndpoint());
64-
leetCodeManager.getLoginStatus();
65+
await leetCodeExecutor.switchEndpoint(plugin.getLeetCodeEndpoint());
66+
leetCodeManager.getLoginStatus();
67+
} catch (error) {
68+
leetCodeChannel.appendLine(error.toString());
69+
promptForOpenOutputChannel("Extension initialization failed. Please open output channel for details.", DialogType.error);
70+
}
6571
}
6672

6773
export function deactivate(): void {

0 commit comments

Comments
 (0)