From d1999dad0d63af968b1a6266e0bb4cc01ab022eb Mon Sep 17 00:00:00 2001 From: Vigilans Date: Mon, 1 Apr 2019 16:35:29 +0800 Subject: [PATCH 1/2] Add try-catch block during extesion's activation --- src/extension.ts | 78 ++++++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 36 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index 7a389142..5c6f957b 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -16,51 +16,57 @@ import { leetCodeChannel } from "./leetCodeChannel"; import { leetCodeExecutor } from "./leetCodeExecutor"; import { leetCodeManager } from "./leetCodeManager"; import { leetCodeStatusBarController } from "./statusbar/leetCodeStatusBarController"; +import { DialogType, promptForOpenOutputChannel } from "./utils/uiUtils"; import { leetCodePreviewProvider } from "./webview/leetCodePreviewProvider"; import { leetCodeResultProvider } from "./webview/leetCodeResultProvider"; import { leetCodeSolutionProvider } from "./webview/leetCodeSolutionProvider"; export async function activate(context: vscode.ExtensionContext): Promise { - if (!await leetCodeExecutor.meetRequirements()) { - return; - } + try { + if (!await leetCodeExecutor.meetRequirements()) { + throw new Error("The environment doesn't meet requirements"); + } - leetCodeManager.on("statusChanged", () => { - leetCodeStatusBarController.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser()); - leetCodeTreeDataProvider.refresh(); - }); + leetCodeManager.on("statusChanged", () => { + leetCodeStatusBarController.updateStatusBar(leetCodeManager.getStatus(), leetCodeManager.getUser()); + leetCodeTreeDataProvider.refresh(); + }); - const leetCodeTreeDataProvider: LeetCodeTreeDataProvider = new LeetCodeTreeDataProvider(context); - leetCodePreviewProvider.initialize(context); - leetCodeResultProvider.initialize(context); - leetCodeSolutionProvider.initialize(context); + const leetCodeTreeDataProvider: LeetCodeTreeDataProvider = new LeetCodeTreeDataProvider(context); + leetCodePreviewProvider.initialize(context); + leetCodeResultProvider.initialize(context); + leetCodeSolutionProvider.initialize(context); - context.subscriptions.push( - leetCodeStatusBarController, - leetCodeChannel, - leetCodePreviewProvider, - leetCodeResultProvider, - leetCodeSolutionProvider, - vscode.window.createTreeView("leetCodeExplorer", { treeDataProvider: leetCodeTreeDataProvider, showCollapseAll: true }), - vscode.languages.registerCodeLensProvider({ scheme: "file" }, codeLensProvider), - vscode.commands.registerCommand("leetcode.deleteCache", () => cache.deleteCache()), - vscode.commands.registerCommand("leetcode.toggleLeetCodeCn", () => plugin.switchEndpoint()), - vscode.commands.registerCommand("leetcode.signin", () => leetCodeManager.signIn()), - vscode.commands.registerCommand("leetcode.signout", () => leetCodeManager.signOut()), - vscode.commands.registerCommand("leetcode.selectSessions", () => session.selectSession()), - vscode.commands.registerCommand("leetcode.createSession", () => session.createSession()), - vscode.commands.registerCommand("leetcode.previewProblem", (node: LeetCodeNode) => leetCodePreviewProvider.preview(node)), - vscode.commands.registerCommand("leetcode.showProblem", (node: LeetCodeNode) => show.showProblem(node)), - vscode.commands.registerCommand("leetcode.searchProblem", () => show.searchProblem()), - vscode.commands.registerCommand("leetcode.showSolution", (node: LeetCodeNode) => show.showSolution(node)), - vscode.commands.registerCommand("leetcode.refreshExplorer", () => leetCodeTreeDataProvider.refresh()), - vscode.commands.registerCommand("leetcode.testSolution", (uri?: vscode.Uri) => test.testSolution(uri)), - vscode.commands.registerCommand("leetcode.submitSolution", (uri?: vscode.Uri) => submit.submitSolution(uri)), - vscode.commands.registerCommand("leetcode.switchDefaultLanguage", () => switchDefaultLanguage()), - ); + context.subscriptions.push( + leetCodeStatusBarController, + leetCodeChannel, + leetCodePreviewProvider, + leetCodeResultProvider, + leetCodeSolutionProvider, + vscode.window.createTreeView("leetCodeExplorer", { treeDataProvider: leetCodeTreeDataProvider, showCollapseAll: true }), + vscode.languages.registerCodeLensProvider({ scheme: "file" }, codeLensProvider), + vscode.commands.registerCommand("leetcode.deleteCache", () => cache.deleteCache()), + vscode.commands.registerCommand("leetcode.toggleLeetCodeCn", () => plugin.switchEndpoint()), + vscode.commands.registerCommand("leetcode.signin", () => leetCodeManager.signIn()), + vscode.commands.registerCommand("leetcode.signout", () => leetCodeManager.signOut()), + vscode.commands.registerCommand("leetcode.selectSessions", () => session.selectSession()), + vscode.commands.registerCommand("leetcode.createSession", () => session.createSession()), + vscode.commands.registerCommand("leetcode.previewProblem", (node: LeetCodeNode) => leetCodePreviewProvider.preview(node)), + vscode.commands.registerCommand("leetcode.showProblem", (node: LeetCodeNode) => show.showProblem(node)), + vscode.commands.registerCommand("leetcode.searchProblem", () => show.searchProblem()), + vscode.commands.registerCommand("leetcode.showSolution", (node: LeetCodeNode) => show.showSolution(node)), + vscode.commands.registerCommand("leetcode.refreshExplorer", () => leetCodeTreeDataProvider.refresh()), + vscode.commands.registerCommand("leetcode.testSolution", (uri?: vscode.Uri) => test.testSolution(uri)), + vscode.commands.registerCommand("leetcode.submitSolution", (uri?: vscode.Uri) => submit.submitSolution(uri)), + vscode.commands.registerCommand("leetcode.switchDefaultLanguage", () => switchDefaultLanguage()), + ); - await leetCodeExecutor.switchEndpoint(plugin.getLeetCodeEndpoint()); - leetCodeManager.getLoginStatus(); + await leetCodeExecutor.switchEndpoint(plugin.getLeetCodeEndpoint()); + leetCodeManager.getLoginStatus(); + } catch (error) { + leetCodeChannel.appendLine(error.message); + promptForOpenOutputChannel("Extension initialization failed. Please open output channel for details.", DialogType.error); + } } export function deactivate(): void { From 7479df2c7ce1458992ad1ce462440de3c24575a4 Mon Sep 17 00:00:00 2001 From: Vigilans Date: Mon, 1 Apr 2019 17:18:00 +0800 Subject: [PATCH 2/2] Address comments in review --- src/extension.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/extension.ts b/src/extension.ts index a0780396..87faaac1 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -24,7 +24,7 @@ import { leetCodeSolutionProvider } from "./webview/leetCodeSolutionProvider"; export async function activate(context: vscode.ExtensionContext): Promise { try { if (!await leetCodeExecutor.meetRequirements()) { - throw new Error("The environment doesn't meet requirements"); + throw new Error("The environment doesn't meet requirements."); } leetCodeManager.on("statusChanged", () => { @@ -65,7 +65,7 @@ export async function activate(context: vscode.ExtensionContext): Promise await leetCodeExecutor.switchEndpoint(plugin.getLeetCodeEndpoint()); leetCodeManager.getLoginStatus(); } catch (error) { - leetCodeChannel.appendLine(error.message); + leetCodeChannel.appendLine(error.toString()); promptForOpenOutputChannel("Extension initialization failed. Please open output channel for details.", DialogType.error); } }