@@ -16,52 +16,58 @@ import { leetCodeChannel } from "./leetCodeChannel";
1616import { leetCodeExecutor } from "./leetCodeExecutor" ;
1717import { leetCodeManager } from "./leetCodeManager" ;
1818import { leetCodeStatusBarController } from "./statusbar/leetCodeStatusBarController" ;
19+ import { DialogType , promptForOpenOutputChannel } from "./utils/uiUtils" ;
1920import { leetCodePreviewProvider } from "./webview/leetCodePreviewProvider" ;
2021import { leetCodeResultProvider } from "./webview/leetCodeResultProvider" ;
2122import { leetCodeSolutionProvider } from "./webview/leetCodeSolutionProvider" ;
2223
2324export 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
6773export function deactivate ( ) : void {
0 commit comments