Skip to content

Commit 41b3d32

Browse files
authored
feat: Refresh the explorer after submitting (#339)
1 parent cdb46d0 commit 41b3d32

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

Diff for: src/commands/submit.ts

+4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Licensed under the MIT license.
33

44
import * as vscode from "vscode";
5+
import { leetCodeTreeDataProvider } from "../explorer/LeetCodeTreeDataProvider";
56
import { leetCodeExecutor } from "../leetCodeExecutor";
67
import { leetCodeManager } from "../leetCodeManager";
78
import { DialogType, promptForOpenOutputChannel, promptForSignIn } from "../utils/uiUtils";
@@ -24,5 +25,8 @@ export async function submitSolution(uri?: vscode.Uri): Promise<void> {
2425
leetCodeSubmissionProvider.show(result);
2526
} catch (error) {
2627
await promptForOpenOutputChannel("Failed to submit the solution. Please open the output channel for details.", DialogType.error);
28+
return;
2729
}
30+
31+
leetCodeTreeDataProvider.refresh();
2832
}

Diff for: src/explorer/LeetCodeTreeDataProvider.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@ import { LeetCodeNode } from "./LeetCodeNode";
1111

1212
export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider<LeetCodeNode> {
1313

14-
private onDidChangeTreeDataEvent: vscode.EventEmitter<any> = new vscode.EventEmitter<any>();
14+
private context: vscode.ExtensionContext;
15+
16+
private onDidChangeTreeDataEvent: vscode.EventEmitter<LeetCodeNode | undefined | null> = new vscode.EventEmitter<LeetCodeNode | undefined | null>();
1517
// tslint:disable-next-line:member-ordering
1618
public readonly onDidChangeTreeData: vscode.Event<any> = this.onDidChangeTreeDataEvent.event;
1719

18-
constructor(private context: vscode.ExtensionContext) { }
20+
public initialize(context: vscode.ExtensionContext): void {
21+
this.context = context;
22+
}
1923

2024
public async refresh(): Promise<void> {
2125
await explorerNodeManager.refreshCache();
@@ -26,7 +30,6 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider<LeetCod
2630
if (element.id === "notSignIn") {
2731
return {
2832
label: element.name,
29-
id: element.id,
3033
collapsibleState: vscode.TreeItemCollapsibleState.None,
3134
command: {
3235
command: "leetcode.signin",
@@ -35,11 +38,9 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider<LeetCod
3538
};
3639
}
3740

38-
const idPrefix: number = Date.now();
3941
return {
4042
label: element.isProblem ? `[${element.id}] ${element.name}` : element.name,
4143
tooltip: this.getSubCategoryTooltip(element),
42-
id: `${idPrefix}.${element.id}`,
4344
collapsibleState: element.isProblem ? vscode.TreeItemCollapsibleState.None : vscode.TreeItemCollapsibleState.Collapsed,
4445
contextValue: element.isProblem ? "problem" : element.id.toLowerCase(),
4546
iconPath: this.parseIconPathFromProblemState(element),
@@ -128,3 +129,5 @@ export class LeetCodeTreeDataProvider implements vscode.TreeDataProvider<LeetCod
128129
].join(os.EOL);
129130
}
130131
}
132+
133+
export const leetCodeTreeDataProvider: LeetCodeTreeDataProvider = new LeetCodeTreeDataProvider();

Diff for: src/extension.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import * as submit from "./commands/submit";
1212
import * as test from "./commands/test";
1313
import { explorerNodeManager } from "./explorer/explorerNodeManager";
1414
import { LeetCodeNode } from "./explorer/LeetCodeNode";
15-
import { LeetCodeTreeDataProvider } from "./explorer/LeetCodeTreeDataProvider";
15+
import { leetCodeTreeDataProvider } from "./explorer/LeetCodeTreeDataProvider";
1616
import { leetCodeChannel } from "./leetCodeChannel";
1717
import { leetCodeExecutor } from "./leetCodeExecutor";
1818
import { leetCodeManager } from "./leetCodeManager";
@@ -34,7 +34,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
3434
leetCodeTreeDataProvider.refresh();
3535
});
3636

37-
const leetCodeTreeDataProvider: LeetCodeTreeDataProvider = new LeetCodeTreeDataProvider(context);
37+
leetCodeTreeDataProvider.initialize(context);
3838

3939
context.subscriptions.push(
4040
leetCodeStatusBarController,

0 commit comments

Comments
 (0)