Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 4b0577e

Browse files
committed
make login methods in one pop up
1 parent ae9463e commit 4b0577e

File tree

4 files changed

+47
-30
lines changed

4 files changed

+47
-30
lines changed

package.json

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@
3838
"onCommand:leetcode.testSolution",
3939
"onCommand:leetcode.submitSolution",
4040
"onCommand:leetcode.switchDefaultLanguage",
41-
"onCommand:leetcode.signinByCookie",
42-
"onCommand:leetcode.signinByGitHub",
43-
"onCommand:leetcode.signinByLinkedIn",
4441
"onView:leetCodeExplorer"
4542
],
4643
"main": "./out/src/extension",
@@ -69,21 +66,6 @@
6966
"dark": "resources/dark/signin.svg"
7067
}
7168
},
72-
{
73-
"command": "leetcode.signinByCookie",
74-
"title": "Sign In by Cookie",
75-
"category": "LeetCode"
76-
},
77-
{
78-
"command": "leetcode.signinByGitHub",
79-
"title": "Sign In by GitHub",
80-
"category": "LeetCode"
81-
},
82-
{
83-
"command": "leetcode.signinByLinkedIn",
84-
"title": "Sign In by LinkedIn",
85-
"category": "LeetCode"
86-
},
8769
{
8870
"command": "leetcode.signout",
8971
"title": "Sign Out",
@@ -701,6 +683,6 @@
701683
"markdown-it": "^8.4.2",
702684
"require-from-string": "^2.0.2",
703685
"unescape-js": "^1.1.1",
704-
"vsc-leetcode-cli": "2.6.19"
686+
"vsc-leetcode-cli": "2.6.20"
705687
}
706688
}

src/extension.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
5151
vscode.commands.registerCommand("leetcode.deleteCache", () => cache.deleteCache()),
5252
vscode.commands.registerCommand("leetcode.toggleLeetCodeCn", () => plugin.switchEndpoint()),
5353
vscode.commands.registerCommand("leetcode.signin", () => leetCodeManager.signIn()),
54-
vscode.commands.registerCommand("leetcode.signinByCookie", () => leetCodeManager.signIn(true)),
55-
vscode.commands.registerCommand("leetcode.signinByGitHub", () => leetCodeManager.signIn(false, "GitHub")),
56-
vscode.commands.registerCommand("leetcode.signinByLinkedIn", () => leetCodeManager.signIn(false, "LinkedIn")),
5754
vscode.commands.registerCommand("leetcode.signout", () => leetCodeManager.signOut()),
5855
vscode.commands.registerCommand("leetcode.manageSessions", () => session.manageSessions()),
5956
vscode.commands.registerCommand("leetcode.previewProblem", (node: LeetCodeNode) => show.previewProblem(node)),

src/leetCodeManager.ts

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { EventEmitter } from "events";
66
import * as vscode from "vscode";
77
import { leetCodeChannel } from "./leetCodeChannel";
88
import { leetCodeExecutor } from "./leetCodeExecutor";
9-
import { loginCommand, UserStatus } from "./shared";
9+
import { IQuickItemEx, loginCommand, UserStatus } from "./shared";
1010
import { createEnvOption } from "./utils/cpUtils";
1111
import { DialogType, promptForOpenOutputChannel } from "./utils/uiUtils";
1212
import * as wsl from "./utils/wslUtils";
@@ -34,13 +34,50 @@ class LeetCodeManager extends EventEmitter {
3434
}
3535
}
3636

37-
public async signIn(isByCookie: boolean = false, thirdParty: string = "Default"): Promise<void> {
38-
const loginArg: string | undefined = loginCommand.get(thirdParty);
39-
if (!loginArg) {
40-
throw new Error(`The third party "${thirdParty}" is not supported.`);
37+
public async signIn(): Promise<void> {
38+
/*
39+
LeetCode Account
40+
LeetCode Cookie
41+
Third-Party: GitHub
42+
Third-Party: LinkedIn
43+
*/
44+
const picks: Array<IQuickItemEx<string>> = [];
45+
picks.push(
46+
{
47+
label: "LeetCode Account",
48+
description: "",
49+
detail: "Use LeetCode account to login",
50+
value: "LeetCode",
51+
},
52+
{
53+
label: "LeetCode Cookie",
54+
description: "",
55+
detail: "Use LeetCode cookie that copy from browser to login",
56+
value: "Cookie",
57+
},
58+
{
59+
label: "Third-Party: GitHub",
60+
description: "",
61+
detail: "Use third party GitHub account to login",
62+
value: "GitHub",
63+
},
64+
{
65+
label: "Third-Party: LinkedIn",
66+
description: "",
67+
detail: "Use third party LinkedIn account to login",
68+
value: "LinkedIn",
69+
},
70+
);
71+
const choice: IQuickItemEx<string> | undefined = await vscode.window.showQuickPick(picks);
72+
if (!choice) {
73+
return;
4174
}
42-
const cookieArg: string = "-c";
43-
const commandArg: string = isByCookie ? cookieArg : loginArg;
75+
const loginMethod: string = choice.value;
76+
const commandArg: string | undefined = loginCommand.get(loginMethod);
77+
if (!commandArg) {
78+
throw new Error(`The login method "${loginMethod}" is not supported.`);
79+
}
80+
const isByCookie: boolean = loginMethod === "Cookie";
4481
const inMessage: string = isByCookie ? "sign in by cookie" : "sign in";
4582
try {
4683
const userName: string | undefined = await new Promise(async (resolve: (res: string | undefined) => void, reject: (e: Error) => void): Promise<void> => {

src/shared.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ export enum UserStatus {
1313
}
1414

1515
export const loginCommand: Map<string, string> = new Map([
16-
["Default", "-l"],
16+
["LeetCode", "-l"],
17+
["Cookie", "-c"],
1718
["GitHub", "-g"],
1819
["LinkedIn", "-i"],
1920
]);

0 commit comments

Comments
 (0)