Skip to content

Commit 75c34da

Browse files
authored
Merge pull request #249 from ccagml/mvc
Mvc
2 parents 4600376 + 9d440f8 commit 75c34da

19 files changed

+927
-64
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# version 2.19.18
2+
3+
- 使用新的 mvc 代码结构修改 statusBar 相关内容
4+
- 增加自动引入 includeTemplates 设置选项,默认引入
5+
16
# version 2.19.17
27

38
- 更新基础的分数数据 data.json

package.json

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "vscode-leetcode-problem-rating",
33
"displayName": "LeetCode",
44
"description": "%main.description%",
5-
"version": "2.19.17",
5+
"version": "2.19.18",
66
"author": "ccagml",
77
"publisher": "ccagml",
88
"license": "MIT",
@@ -643,6 +643,11 @@
643643
}
644644
}
645645
},
646+
"leetcode-problem-rating.includeTemplatesAuto": {
647+
"type": "boolean",
648+
"default": true,
649+
"description": "%main.contributes.configuration.properties.leetcode-problem-rating.includeTemplatesAuto.description%"
650+
},
646651
"leetcode-problem-rating.hideSolved": {
647652
"type": "boolean",
648653
"default": false,

package.nls.json

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"main.contributes.submenus.lcpr.setBricksType_sub1.label": "Set repetition time",
4949
"main.contributes.configuration.title": "leetcode-problem-rating",
5050
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.description": "Introduce some default content to prevent VSCode from wavy red lines",
51+
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplatesAuto.description": "auto Introduce some default content to prevent VSCode from wavy red lines",
5152
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.items.properties.language.description": "Programming language",
5253
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.items.properties.template.description": "template content",
5354
"main.contributes.configuration.properties.leetcode-problem-rating.hideSolved.description": "Hide solved problems.",

package.nls.zh-cn.json

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"main.contributes.submenus.lcpr.setBricksType_sub1.label": "设置砖头类型",
4949
"main.contributes.configuration.title": "leetcode-problem-rating",
5050
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.description": "引入一些默认内容,防止VSCode都是波浪红线",
51+
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplatesAuto.description": "自动引入模板",
5152
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.items.properties.language.description": "哪种语言",
5253
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.items.properties.template.description": "模板内容",
5354
"main.contributes.configuration.properties.leetcode-problem-rating.hideSolved.description": "隐藏已解决的问题",

src/BABA.ts

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
/*
2+
* Filename: /home/cc/leetcode-extension/src/BABA.ts
3+
* Path: /home/cc/leetcode-extension
4+
* Created Date: Saturday, September 23rd 2023, 8:17:16 pm
5+
* Author: ccagml
6+
*
7+
* Copyright (c) 2023 ccagml . All rights reserved
8+
*/
9+
10+
import { BaseCC } from "./utils/BaseCC";
11+
export * as BaseCC from "./utils/BaseCC";
12+
export enum BabaStr {
13+
every_second = "every_second",
14+
StatusBarTimeMediator = "StatusBarTimeMediator",
15+
StatusBarTimeProxy = "StatusBarTimeProxy",
16+
RemarkMediator = "RemarkMediator",
17+
RemarkProxy = "RemarkProxy",
18+
submit = "submit",
19+
showProblemFinish = "showProblemFinish",
20+
showProblemFinishOpen = "showProblemFinishOpen",
21+
showProblemFinishError = "showProblemFinishError",
22+
VSCODE_DISPOST = "VSCODE_DISPOST",
23+
statusBarTime_start = "statusBarTime_start",
24+
statusBarTime_stop = "statusBarTime_stop",
25+
statusBarTime_reset = "statusBarTime_reset",
26+
StatusBarProxy = "StatusBarProxy",
27+
StatusBarMediator = "StatusBarMediator",
28+
statusBar_update_status = "statusBar_update_status",
29+
statusBar_update = "statusBar_update",
30+
statusBar_update_UserContestInfo = "statusBar_update_UserContestInfo",
31+
}
32+
33+
export class BABA {
34+
public static fa;
35+
public static init() {
36+
this.fa = BaseCC.Facade.getInstance("lcpr");
37+
}
38+
public static regClazz(clazz_list) {
39+
let len = clazz_list.length;
40+
for (let j = 0; j < len; j++) {
41+
this[clazz_list[j].NAME] = new clazz_list[j]();
42+
}
43+
}
44+
45+
public static dispose(): any {
46+
this.sendNotification(BabaStr.VSCODE_DISPOST);
47+
}
48+
public static sendNotification(name: string, body?: any, type?: string) {
49+
this.fa.sendNotification(name, body, type);
50+
}
51+
52+
public static getProxy(name: string) {
53+
return this.fa.retrieveProxy(name);
54+
}
55+
}
56+
57+
export class BABAProxy extends BaseCC.Proxy {
58+
constructor(name: string) {
59+
super(name);
60+
BABA.fa.registerProxy(this);
61+
}
62+
}
63+
export class BABAMediator extends BaseCC.Mediator {
64+
constructor(name: string) {
65+
super(name);
66+
BABA.fa.registerMediator(this);
67+
}
68+
}

src/controller/EventController.ts

-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
*/
99

1010
import { eventService } from "../service/EventService";
11-
import { statusBarTimeService } from "../service/StatusBarTimeService";
1211
// 事件的控制器
1312
/* The EventController class has a method called addEvent that calls the addEvent method on the
1413
eventService class */
@@ -23,10 +22,6 @@ class EventContorller {
2322
public addEvent() {
2423
eventService.addEvent();
2524
}
26-
27-
public every_second() {
28-
statusBarTimeService.updateSecond();
29-
}
3025
}
3126

3227
export const eventController: EventContorller = new EventContorller();

src/controller/LoginController.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import { createEnvOption } from "../utils/CliUtils";
1515
import { logOutput, promptForOpenOutputChannel } from "../utils/OutputUtils";
1616
import { eventService } from "../service/EventService";
1717
import { window, QuickPickOptions, ProgressLocation, Progress } from "vscode";
18-
import { statusBarService } from "../service/StatusBarService";
1918
import { treeDataService } from "../service/TreeDataService";
2019
import { getLeetCodeEndpoint } from "../utils/ConfigUtils";
2120
import { bricksDataService } from "../service/BricksDataService";
21+
import { BABA, BabaStr } from "../BABA";
2222

2323
// 登录控制器
2424
class LoginContorller {
@@ -203,7 +203,7 @@ class LoginContorller {
203203
* @returns The login status of the user.
204204
*/
205205
public async getLoginStatus() {
206-
return await statusBarService.getLoginStatus();
206+
return await BABA.getProxy(BabaStr.StatusBarProxy).getLoginStatus();
207207
}
208208

209209
// 删除所有缓存

src/controller/TreeViewController.ts

+46-21
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ import {
5555
} from "../utils/ConfigUtils";
5656
import { NodeModel } from "../model/NodeModel";
5757
import { ISearchSet } from "../model/Model";
58-
import { statusBarService } from "../service/StatusBarService";
5958
import { previewService } from "../service/PreviewService";
6059
import { executeService } from "../service/ExecuteService";
6160
import { getNodeIdFromFile } from "../utils/SystemUtils";
@@ -80,6 +79,7 @@ import { submissionService } from "../service/SubmissionService";
8079
import { bricksDataService } from "../service/BricksDataService";
8180
import { groupDao } from "../dao/groupDao";
8281
import { fileMeta, ProblemMeta } from "../utils/problemUtils";
82+
import { BABA, BabaStr } from "../BABA";
8383

8484
// 视图控制器
8585
class TreeViewController implements Disposable {
@@ -111,7 +111,8 @@ class TreeViewController implements Disposable {
111111
* @returns A promise that resolves to a string.
112112
*/
113113
public async submitSolution(uri?: vscode.Uri): Promise<void> {
114-
if (!statusBarService.getUser()) {
114+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
115+
if (!sbp.getUser()) {
115116
promptForSignIn();
116117
return;
117118
}
@@ -144,7 +145,8 @@ class TreeViewController implements Disposable {
144145
*/
145146
public async testSolution(uri?: vscode.Uri): Promise<void> {
146147
try {
147-
if (statusBarService.getStatus() === UserStatus.SignedOut) {
148+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
149+
if (sbp.getStatus() === UserStatus.SignedOut) {
148150
return;
149151
}
150152

@@ -254,7 +256,8 @@ class TreeViewController implements Disposable {
254256
*/
255257
public async testCaseDef(uri?: vscode.Uri, allCase?: boolean): Promise<void> {
256258
try {
257-
if (statusBarService.getStatus() === UserStatus.SignedOut) {
259+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
260+
if (sbp.getStatus() === UserStatus.SignedOut) {
258261
return;
259262
}
260263

@@ -289,7 +292,8 @@ class TreeViewController implements Disposable {
289292
*/
290293
public async reTestSolution(uri?: vscode.Uri): Promise<void> {
291294
try {
292-
if (statusBarService.getStatus() === UserStatus.SignedOut) {
295+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
296+
if (sbp.getStatus() === UserStatus.SignedOut) {
293297
return;
294298
}
295299

@@ -337,7 +341,8 @@ class TreeViewController implements Disposable {
337341
*/
338342
public async tesCaseArea(uri?: vscode.Uri, testcase?: string): Promise<void> {
339343
try {
340-
if (statusBarService.getStatus() === UserStatus.SignedOut) {
344+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
345+
if (sbp.getStatus() === UserStatus.SignedOut) {
341346
return;
342347
}
343348

@@ -505,7 +510,8 @@ class TreeViewController implements Disposable {
505510
*/
506511
public async getAllProblems(): Promise<IProblem[]> {
507512
try {
508-
if (statusBarService.getStatus() === UserStatus.SignedOut) {
513+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
514+
if (sbp.getStatus() === UserStatus.SignedOut) {
509515
return [];
510516
}
511517

@@ -603,7 +609,7 @@ class TreeViewController implements Disposable {
603609
return;
604610
}
605611

606-
if (!statusBarService.getUser() && choice.value != "testapi") {
612+
if (!BABA.getProxy(BabaStr.StatusBarProxy).getUser() && choice.value != "testapi") {
607613
promptForSignIn();
608614
return;
609615
}
@@ -701,7 +707,8 @@ class TreeViewController implements Disposable {
701707
}
702708

703709
public async searchProblemByID(): Promise<void> {
704-
if (!statusBarService.getUser()) {
710+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
711+
if (!sbp.getUser()) {
705712
promptForSignIn();
706713
return;
707714
}
@@ -769,7 +776,8 @@ class TreeViewController implements Disposable {
769776
const problems: IProblem[] = await this.getAllProblems();
770777
let randomProblem: IProblem;
771778

772-
const user_score = statusBarService.getUserContestScore();
779+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
780+
const user_score = sbp.getUserContestScore();
773781
if (user_score > 0) {
774782
let min_score: number = getPickOneByRankRangeMin();
775783
let max_score: number = getPickOneByRankRangeMax();
@@ -851,10 +859,19 @@ class TreeViewController implements Disposable {
851859
);
852860
if (show_code == 100) {
853861
const promises: any[] = [
854-
vscode.window.showTextDocument(vscode.Uri.file(finalPath), {
855-
preview: false,
856-
viewColumn: vscode.ViewColumn.One,
857-
}),
862+
vscode.window
863+
.showTextDocument(vscode.Uri.file(finalPath), {
864+
preview: false,
865+
viewColumn: vscode.ViewColumn.One,
866+
})
867+
.then(
868+
(editor) => {
869+
eventService.emit("showProblemFinishOpen", node, editor);
870+
},
871+
(error) => {
872+
eventService.emit("showProblemFinishError", node, error);
873+
}
874+
),
858875
promptHintMessage(
859876
"hint.commentDescription",
860877
'You can config how to show the problem description through "leetcode-problem-rating.showDescription".',
@@ -956,13 +973,14 @@ class TreeViewController implements Disposable {
956973
}
957974

958975
public async searchUserContest(): Promise<void> {
959-
if (!statusBarService.getUser()) {
976+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
977+
if (!sbp.getUser()) {
960978
promptForSignIn();
961979
return;
962980
}
963981
try {
964982
const needTranslation: boolean = isUseEndpointTranslation();
965-
const solution: string = await executeService.getUserContest(needTranslation, statusBarService.getUser() || "");
983+
const solution: string = await executeService.getUserContest(needTranslation, sbp.getUser() || "");
966984
const query_result = JSON.parse(solution);
967985
const tt: userContestRanKingBase = Object.assign({}, userContestRankingObj, query_result.userContestRanking);
968986
eventService.emit("searchUserContest", tt);
@@ -972,7 +990,8 @@ class TreeViewController implements Disposable {
972990
}
973991
}
974992
public async searchToday(): Promise<void> {
975-
if (!statusBarService.getUser()) {
993+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
994+
if (!sbp.getUser()) {
976995
promptForSignIn();
977996
return;
978997
}
@@ -1137,7 +1156,8 @@ class TreeViewController implements Disposable {
11371156
}
11381157

11391158
public async refreshCheck(): Promise<void> {
1140-
if (!statusBarService.getUser()) {
1159+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
1160+
if (!sbp.getUser()) {
11411161
return;
11421162
}
11431163
const day_start = systemUtils.getDayStart(); //获取当天零点的时间
@@ -1156,7 +1176,8 @@ class TreeViewController implements Disposable {
11561176
this.waitTodayQuestion = true;
11571177
await this.searchToday();
11581178
}
1159-
let user_score = statusBarService.getUserContestScore();
1179+
1180+
let user_score = sbp.getUserContestScore();
11601181
if (!user_score && !this.waitUserContest) {
11611182
this.waitUserContest = true;
11621183
await this.searchUserContest();
@@ -1168,7 +1189,10 @@ class TreeViewController implements Disposable {
11681189
const temp_waitTodayQuestion: boolean = this.waitTodayQuestion;
11691190
const temp_waitUserContest: boolean = this.waitUserContest;
11701191
this.clearCache();
1171-
let user_score = statusBarService.getUserContestScore();
1192+
1193+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
1194+
1195+
let user_score = sbp.getUserContestScore();
11721196
for (const problem of await this.getAllProblems()) {
11731197
this.explorerNodeMap.set(problem.id, new NodeModel(problem, true, user_score));
11741198
this.fidToQid.set(problem.id, problem.qid.toString());
@@ -1188,7 +1212,8 @@ class TreeViewController implements Disposable {
11881212
}
11891213

11901214
public getRootNodes(): NodeModel[] {
1191-
let user_score = statusBarService.getUserContestScore();
1215+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
1216+
let user_score = sbp.getUserContestScore();
11921217
const baseNode: NodeModel[] = [
11931218
new NodeModel(
11941219
Object.assign({}, defaultProblem, {

0 commit comments

Comments
 (0)