|
2 | 2 | // Licensed under the MIT license.
|
3 | 3 |
|
4 | 4 | import * as vscode from "vscode";
|
| 5 | +import { leetCodeTreeDataProvider } from "../explorer/LeetCodeTreeDataProvider"; |
5 | 6 | import { leetCodeExecutor } from "../leetCodeExecutor";
|
6 | 7 | import { IQuickItemEx } from "../shared";
|
7 |
| -import { Endpoint } from "../shared"; |
| 8 | +import { Endpoint, SortingStrategy } from "../shared"; |
8 | 9 | import { DialogType, promptForOpenOutputChannel, promptForSignIn } from "../utils/uiUtils";
|
9 | 10 | import { deleteCache } from "./cache";
|
10 | 11 |
|
@@ -52,3 +53,36 @@ export function getLeetCodeEndpoint(): string {
|
52 | 53 | const leetCodeConfig: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("leetcode");
|
53 | 54 | return leetCodeConfig.get<string>("endpoint", Endpoint.LeetCode);
|
54 | 55 | }
|
| 56 | + |
| 57 | +const SORT_ORDER: SortingStrategy[] = [ |
| 58 | +SortingStrategy.None, |
| 59 | +SortingStrategy.AcceptanceRateAsc, |
| 60 | +SortingStrategy.AcceptanceRateDesc, |
| 61 | +]; |
| 62 | + |
| 63 | +export async function switchSortingStrategy(): Promise<void> { |
| 64 | +const currentStrategy: SortingStrategy = getSortingStrategy(); |
| 65 | +const picks: Array<IQuickItemEx<string>> = []; |
| 66 | +picks.push( |
| 67 | +...SORT_ORDER.map((s: SortingStrategy) => { |
| 68 | +return { |
| 69 | +label: `${currentStrategy === s ? "$(check)" : " "} ${s}`, |
| 70 | +value: s, |
| 71 | +}; |
| 72 | +}), |
| 73 | +); |
| 74 | + |
| 75 | +const choice: IQuickItemEx<string> | undefined = await vscode.window.showQuickPick(picks); |
| 76 | +if (!choice || choice.value === currentStrategy) { |
| 77 | +return; |
| 78 | +} |
| 79 | + |
| 80 | +const leetCodeConfig: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("leetcode"); |
| 81 | +await leetCodeConfig.update("problems.sortStrategy", choice.value, true); |
| 82 | +await leetCodeTreeDataProvider.refresh(); |
| 83 | +} |
| 84 | + |
| 85 | +export function getSortingStrategy(): SortingStrategy { |
| 86 | +const leetCodeConfig: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("leetcode"); |
| 87 | +return leetCodeConfig.get<SortingStrategy>("problems.sortStrategy", SortingStrategy.None); |
| 88 | +} |
0 commit comments