Skip to content

Commit d935977

Browse files
Vigilansjdneo
authored andcommitted
Add try-catch block during extesion's activation (LeetCode-OpenSource#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

Lines changed: 43 additions & 37 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy