Skip to content

Commit 16aed39

Browse files
committed
新的mvc
1 parent 4600376 commit 16aed39

File tree

12 files changed

+813
-56
lines changed

12 files changed

+813
-56
lines changed

src/BABA.ts

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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+
submit = "submit",
17+
showProblemFinish = "showProblemFinish",
18+
VSCODE_DISPOST = "VSCODE_DISPOST",
19+
statusBarTime_start = "statusBarTime_start",
20+
statusBarTime_stop = "statusBarTime_stop",
21+
statusBarTime_reset = "statusBarTime_reset",
22+
StatusBarProxy = "StatusBarProxy",
23+
StatusBarMediator = "StatusBarMediator",
24+
statusBar_update_status = "statusBar_update_status",
25+
statusBar_update = "statusBar_update",
26+
statusBar_update_UserContestInfo = "statusBar_update_UserContestInfo",
27+
}
28+
29+
export class BABA {
30+
public static fa;
31+
public static init() {
32+
this.fa = BaseCC.Facade.getInstance("lcpr");
33+
}
34+
public static regClazz(clazz_list) {
35+
let len = clazz_list.length;
36+
for (let j = 0; j < len; j++) {
37+
this[clazz_list[j].NAME] = new clazz_list[j]();
38+
}
39+
}
40+
41+
public static dispose(): any {
42+
this.sendNotification(BabaStr.VSCODE_DISPOST);
43+
}
44+
public static sendNotification(name: string, body?: any, type?: string) {
45+
this.fa.sendNotification(name, body, type);
46+
}
47+
48+
public static getProxy(name: string) {
49+
return this.fa.retrieveProxy(name);
50+
}
51+
}
52+
53+
export class BABAProxy extends BaseCC.Proxy {
54+
constructor(name: string) {
55+
super(name);
56+
BABA.fa.registerProxy(this);
57+
}
58+
}
59+
export class BABAMediator extends BaseCC.Mediator {
60+
constructor(name: string) {
61+
super(name);
62+
BABA.fa.registerMediator(this);
63+
}
64+
}

src/controller/EventController.ts

Lines changed: 0 additions & 5 deletions
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

Lines changed: 2 additions & 2 deletions
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

Lines changed: 33 additions & 17 deletions
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();
@@ -956,13 +964,14 @@ class TreeViewController implements Disposable {
956964
}
957965

958966
public async searchUserContest(): Promise<void> {
959-
if (!statusBarService.getUser()) {
967+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
968+
if (!sbp.getUser()) {
960969
promptForSignIn();
961970
return;
962971
}
963972
try {
964973
const needTranslation: boolean = isUseEndpointTranslation();
965-
const solution: string = await executeService.getUserContest(needTranslation, statusBarService.getUser() || "");
974+
const solution: string = await executeService.getUserContest(needTranslation, sbp.getUser() || "");
966975
const query_result = JSON.parse(solution);
967976
const tt: userContestRanKingBase = Object.assign({}, userContestRankingObj, query_result.userContestRanking);
968977
eventService.emit("searchUserContest", tt);
@@ -972,7 +981,8 @@ class TreeViewController implements Disposable {
972981
}
973982
}
974983
public async searchToday(): Promise<void> {
975-
if (!statusBarService.getUser()) {
984+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
985+
if (!sbp.getUser()) {
976986
promptForSignIn();
977987
return;
978988
}
@@ -1137,7 +1147,8 @@ class TreeViewController implements Disposable {
11371147
}
11381148

11391149
public async refreshCheck(): Promise<void> {
1140-
if (!statusBarService.getUser()) {
1150+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
1151+
if (!sbp.getUser()) {
11411152
return;
11421153
}
11431154
const day_start = systemUtils.getDayStart(); //获取当天零点的时间
@@ -1156,7 +1167,8 @@ class TreeViewController implements Disposable {
11561167
this.waitTodayQuestion = true;
11571168
await this.searchToday();
11581169
}
1159-
let user_score = statusBarService.getUserContestScore();
1170+
1171+
let user_score = sbp.getUserContestScore();
11601172
if (!user_score && !this.waitUserContest) {
11611173
this.waitUserContest = true;
11621174
await this.searchUserContest();
@@ -1168,7 +1180,10 @@ class TreeViewController implements Disposable {
11681180
const temp_waitTodayQuestion: boolean = this.waitTodayQuestion;
11691181
const temp_waitUserContest: boolean = this.waitUserContest;
11701182
this.clearCache();
1171-
let user_score = statusBarService.getUserContestScore();
1183+
1184+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
1185+
1186+
let user_score = sbp.getUserContestScore();
11721187
for (const problem of await this.getAllProblems()) {
11731188
this.explorerNodeMap.set(problem.id, new NodeModel(problem, true, user_score));
11741189
this.fidToQid.set(problem.id, problem.qid.toString());
@@ -1188,7 +1203,8 @@ class TreeViewController implements Disposable {
11881203
}
11891204

11901205
public getRootNodes(): NodeModel[] {
1191-
let user_score = statusBarService.getUserContestScore();
1206+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
1207+
let user_score = sbp.getUserContestScore();
11921208
const baseNode: NodeModel[] = [
11931209
new NodeModel(
11941210
Object.assign({}, defaultProblem, {

src/extension.ts

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { treeItemDecorationService } from "./service/TreeItemDecorationService";
1616
import { logOutput, promptForOpenOutputChannel } from "./utils/OutputUtils";
1717
import { executeService } from "./service/ExecuteService";
1818
import { eventController } from "./controller/EventController";
19-
import { statusBarService } from "./service/StatusBarService";
2019
import { previewService } from "./service/PreviewService";
2120
import { solutionService } from "./service/SolutionService";
2221
import { submissionService } from "./service/SubmissionService";
@@ -27,9 +26,13 @@ import { getLeetCodeEndpoint } from "./utils/ConfigUtils";
2726
import { BricksType, OutPutType, RemarkComment } from "./model/Model";
2827
import { bricksDataService } from "./service/BricksDataService";
2928
import { bricksViewController } from "./controller/BricksViewController";
30-
import { statusBarTimeService } from "./service/StatusBarTimeService";
3129
import { remarkController } from "./controller/RemarkController";
3230
import { debugContorller } from "./controller/DebugController";
31+
import { BABA, BabaStr } from "./BABA";
32+
import { StatusBarTimeMediator, StatusBarTimeProxy } from "./statusBarTime/StatusBarTimeModule";
33+
import { StatusBarMediator, StatusBarProxy } from "./statusBar/StatusBarModule";
34+
35+
//==================================BABA========================================
3336

3437
// 激活插件
3538
/**
@@ -40,6 +43,9 @@ import { debugContorller } from "./controller/DebugController";
4043
let lcpr_timer;
4144
export async function activate(context: ExtensionContext): Promise<void> {
4245
try {
46+
BABA.init();
47+
BABA.regClazz([StatusBarTimeMediator, StatusBarTimeProxy, StatusBarProxy, StatusBarMediator]);
48+
4349
// 初始化控制器
4450
mainContorller.initialize(context);
4551
// 检查node环境
@@ -50,14 +56,13 @@ export async function activate(context: ExtensionContext): Promise<void> {
5056

5157
// 资源管理
5258
context.subscriptions.push(
53-
statusBarService,
5459
logOutput,
5560
previewService,
5661
submissionService,
5762
solutionService,
5863
executeService,
5964
markdownService,
60-
statusBarTimeService,
65+
BABA,
6166
fileButtonController,
6267
treeViewController,
6368
window.registerFileDecorationProvider(treeItemDecorationService),
@@ -84,9 +89,15 @@ export async function activate(context: ExtensionContext): Promise<void> {
8489
commands.registerCommand("lcpr.addFavorite", (node: NodeModel) => treeViewController.addFavorite(node)),
8590
commands.registerCommand("lcpr.removeFavorite", (node: NodeModel) => treeViewController.removeFavorite(node)),
8691
commands.registerCommand("lcpr.problems.sort", () => treeViewController.switchSortingStrategy()),
87-
commands.registerCommand("lcpr.statusBarTime.start", () => statusBarTimeService.start()),
88-
commands.registerCommand("lcpr.statusBarTime.stop", () => statusBarTimeService.stop()),
89-
commands.registerCommand("lcpr.statusBarTime.reset", () => statusBarTimeService.reset()),
92+
commands.registerCommand("lcpr.statusBarTime.start", () => {
93+
BABA.sendNotification(BabaStr.statusBarTime_start);
94+
}),
95+
commands.registerCommand("lcpr.statusBarTime.stop", () => {
96+
BABA.sendNotification(BabaStr.statusBarTime_stop);
97+
}),
98+
commands.registerCommand("lcpr.statusBarTime.reset", () => {
99+
BABA.sendNotification(BabaStr.statusBarTime_reset);
100+
}),
90101
commands.registerCommand("lcpr.setBricksType0", (node: NodeModel) =>
91102
bricksViewController.setBricksType(node, BricksType.TYPE_0)
92103
),
@@ -163,10 +174,14 @@ export async function activate(context: ExtensionContext): Promise<void> {
163174
OutPutType.error
164175
);
165176
} finally {
166-
lcpr_timer = setInterval(eventController.every_second, 1000);
177+
lcpr_timer = setInterval(lcpr_timer_callback, 1000);
167178
}
168179
}
169180

181+
function lcpr_timer_callback() {
182+
BABA.sendNotification(BabaStr.every_second);
183+
}
184+
170185
export function deactivate(): void {
171186
// Do nothing.
172187
if (0) {

src/service/BricksDataService.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import { TreeDataProvider, EventEmitter, Event, TreeItem, TreeItemCollapsibleSta
1111
import { BricksNormalId, defaultProblem, ISubmitEvent } from "../model/Model";
1212
import { bricksViewController } from "../controller/BricksViewController";
1313
import { BricksNode } from "../model/NodeModel";
14-
import { statusBarService } from "./StatusBarService";
1514
import { bricksDao } from "../dao/bricksDao";
1615
import { groupDao } from "../dao/groupDao";
16+
import { BABA, BabaStr } from "../BABA";
1717

1818
export class BricksDataService implements TreeDataProvider<BricksNode> {
1919
private onDidChangeTreeDataEvent: EventEmitter<BricksNode | undefined | null> = new EventEmitter<
@@ -66,7 +66,8 @@ export class BricksDataService implements TreeDataProvider<BricksNode> {
6666

6767
// 获取子节点信息
6868
public async getChildren(element?: BricksNode | undefined): Promise<BricksNode[] | null | undefined> {
69-
if (!statusBarService.getUser()) {
69+
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
70+
if (!sbp.getUser()) {
7071
return [
7172
new BricksNode(
7273
Object.assign({}, defaultProblem, {

0 commit comments

Comments
 (0)