diff --git a/package.json b/package.json index 54ff1440..4587298f 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "onCommand:leetcode.createSession", "onCommand:leetcode.refreshExplorer", "onCommand:leetcode.showProblem", + "onCommand:leetcode.loadAllProblems", "onCommand:leetcode.searchProblem", "onCommand:leetcode.testSolution", "onCommand:leetcode.submitSolution", @@ -93,6 +94,11 @@ "title": "Show Problem", "category": "LeetCode" }, + { + "command": "leetcode.loadAllProblems", + "title": "Load All Problems", + "category": "LeetCode" + }, { "command": "leetcode.searchProblem", "title": "Search Problem", @@ -158,6 +164,11 @@ "command": "leetcode.showProblem", "when": "view == leetCodeExplorer && viewItem == problem", "group": "leetcode@1" + }, + { + "command": "leetcode.loadAllProblems", + "when": "view == leetCodeExplorer && viewItem == problem", + "group": "leetcode@1" } ], "commandPalette": [ diff --git a/src/commands/show.ts b/src/commands/show.ts index f9796621..6120c215 100644 --- a/src/commands/show.ts +++ b/src/commands/show.ts @@ -21,6 +21,14 @@ export async function showProblem(node?: LeetCodeNode): Promise { await showProblemInternal(node); } +export async function loadAllProblems(): Promise { + if (!leetCodeManager.getUser()) { + promptForSignIn(); + return; + } + await loadAllProblemsInternal(); +} + export async function searchProblem(): Promise { if (!leetCodeManager.getUser()) { promptForSignIn(); @@ -39,7 +47,14 @@ export async function searchProblem(): Promise { await showProblemInternal(choice.value); } +async function loadAllProblemsInternal() { + new Promise(async (resolve: (res: Array>) => void): Promise => { + (await list.listProblems()).map((problem: IProblem) => showProblemInternal(problem)); + }); +} + async function showProblemInternal(node: IProblem): Promise { + console.log(node.id + " " + node.name) try { const leetCodeConfig: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("leetcode"); let defaultLanguage: string | undefined = leetCodeConfig.get("defaultLanguage"); diff --git a/src/extension.ts b/src/extension.ts index 9685b3f4..4a42b4ec 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -43,6 +43,7 @@ export async function activate(context: vscode.ExtensionContext): Promise vscode.commands.registerCommand("leetcode.selectSessions", () => session.selectSession()), vscode.commands.registerCommand("leetcode.createSession", () => session.createSession()), vscode.commands.registerCommand("leetcode.showProblem", (node: LeetCodeNode) => show.showProblem(node)), + vscode.commands.registerCommand("leetcode.loadAllProblems", (node: LeetCodeNode) => show.loadAllProblems()), vscode.commands.registerCommand("leetcode.searchProblem", () => show.searchProblem()), vscode.commands.registerCommand("leetcode.refreshExplorer", () => leetCodeTreeDataProvider.refresh()), vscode.commands.registerCommand("leetcode.testSolution", (uri?: vscode.Uri) => test.testSolution(uri)),