Skip to content

Commit 6ae2284

Browse files
authored
feat: Support pick one (#404)
1 parent 24f636d commit 6ae2284

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

package.json

+11
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
"onCommand:leetcode.signout",
3232
"onCommand:leetcode.manageSessions",
3333
"onCommand:leetcode.refreshExplorer",
34+
"onCommand:leetcode.pickOne",
3435
"onCommand:leetcode.showProblem",
3536
"onCommand:leetcode.previewProblem",
3637
"onCommand:leetcode.searchProblem",
@@ -84,6 +85,11 @@
8485
"dark": "resources/dark/refresh.svg"
8586
}
8687
},
88+
{
89+
"command": "leetcode.pickOne",
90+
"title": "Pick One",
91+
"category": "LeetCode"
92+
},
8793
{
8894
"command": "leetcode.showProblem",
8995
"title": "Show Problem",
@@ -162,6 +168,11 @@
162168
"command": "leetcode.refreshExplorer",
163169
"when": "view == leetCodeExplorer",
164170
"group": "navigation@3"
171+
},
172+
{
173+
"command": "leetcode.pickOne",
174+
"when": "view == leetCodeExplorer",
175+
"group": "overflow@0"
165176
}
166177
],
167178
"view/item/context": [

src/commands/show.ts

+6
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@ export async function previewProblem(input: IProblem | vscode.Uri, isSideMode: b
4444
leetCodePreviewProvider.show(descString, node, isSideMode);
4545
}
4646

47+
export async function pickOne(): Promise<void> {
48+
const problems: IProblem[] = await list.listProblems();
49+
const randomProblem: IProblem = problems[Math.floor(Math.random() * problems.length)];
50+
await showProblemInternal(randomProblem);
51+
}
52+
4753
export async function showProblem(node?: LeetCodeNode): Promise<void> {
4854
if (!node) {
4955
return;

src/extension.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
5454
vscode.commands.registerCommand("leetcode.manageSessions", () => session.manageSessions()),
5555
vscode.commands.registerCommand("leetcode.previewProblem", (node: LeetCodeNode) => show.previewProblem(node)),
5656
vscode.commands.registerCommand("leetcode.showProblem", (node: LeetCodeNode) => show.showProblem(node)),
57+
vscode.commands.registerCommand("leetcode.pickOne", () => show.pickOne()),
5758
vscode.commands.registerCommand("leetcode.searchProblem", () => show.searchProblem()),
5859
vscode.commands.registerCommand("leetcode.showSolution", (input: LeetCodeNode | vscode.Uri) => show.showSolution(input)),
5960
vscode.commands.registerCommand("leetcode.refreshExplorer", () => leetCodeTreeDataProvider.refresh()),
@@ -63,7 +64,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
6364
);
6465

6566
await leetCodeExecutor.switchEndpoint(plugin.getLeetCodeEndpoint());
66-
leetCodeManager.getLoginStatus();
67+
await leetCodeManager.getLoginStatus();
6768
} catch (error) {
6869
leetCodeChannel.appendLine(error.toString());
6970
promptForOpenOutputChannel("Extension initialization failed. Please open output channel for details.", DialogType.error);

0 commit comments

Comments
 (0)