@@ -16,52 +16,58 @@ import { leetCodeChannel } from "./leetCodeChannel";
16
16
import { leetCodeExecutor } from "./leetCodeExecutor" ;
17
17
import { leetCodeManager } from "./leetCodeManager" ;
18
18
import { leetCodeStatusBarController } from "./statusbar/leetCodeStatusBarController" ;
19
+ import { DialogType , promptForOpenOutputChannel } from "./utils/uiUtils" ;
19
20
import { leetCodePreviewProvider } from "./webview/leetCodePreviewProvider" ;
20
21
import { leetCodeResultProvider } from "./webview/leetCodeResultProvider" ;
21
22
import { leetCodeSolutionProvider } from "./webview/leetCodeSolutionProvider" ;
22
23
23
24
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
+ }
27
29
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
+ } ) ;
32
34
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 ) ;
37
39
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
+ ) ;
62
64
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
+ }
65
71
}
66
72
67
73
export function deactivate ( ) : void {
0 commit comments