Skip to content

Mvc #249

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 14, 2023
Merged

Mvc #249

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# version 2.19.18

- 使用新的 mvc 代码结构修改 statusBar 相关内容
- 增加自动引入 includeTemplates 设置选项,默认引入

# version 2.19.17

- 更新基础的分数数据 data.json
Expand Down
7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "vscode-leetcode-problem-rating",
"displayName": "LeetCode",
"description": "%main.description%",
"version": "2.19.17",
"version": "2.19.18",
"author": "ccagml",
"publisher": "ccagml",
"license": "MIT",
Expand Down Expand Up @@ -643,6 +643,11 @@
}
}
},
"leetcode-problem-rating.includeTemplatesAuto": {
"type": "boolean",
"default": true,
"description": "%main.contributes.configuration.properties.leetcode-problem-rating.includeTemplatesAuto.description%"
},
"leetcode-problem-rating.hideSolved": {
"type": "boolean",
"default": false,
Expand Down
1 change: 1 addition & 0 deletions package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
"main.contributes.submenus.lcpr.setBricksType_sub1.label": "Set repetition time",
"main.contributes.configuration.title": "leetcode-problem-rating",
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.description": "Introduce some default content to prevent VSCode from wavy red lines",
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplatesAuto.description": "auto Introduce some default content to prevent VSCode from wavy red lines",
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.items.properties.language.description": "Programming language",
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.items.properties.template.description": "template content",
"main.contributes.configuration.properties.leetcode-problem-rating.hideSolved.description": "Hide solved problems.",
Expand Down
1 change: 1 addition & 0 deletions package.nls.zh-cn.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
"main.contributes.submenus.lcpr.setBricksType_sub1.label": "设置砖头类型",
"main.contributes.configuration.title": "leetcode-problem-rating",
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.description": "引入一些默认内容,防止VSCode都是波浪红线",
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplatesAuto.description": "自动引入模板",
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.items.properties.language.description": "哪种语言",
"main.contributes.configuration.properties.leetcode-problem-rating.includeTemplates.items.properties.template.description": "模板内容",
"main.contributes.configuration.properties.leetcode-problem-rating.hideSolved.description": "隐藏已解决的问题",
Expand Down
68 changes: 68 additions & 0 deletions src/BABA.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*
* Filename: /home/cc/leetcode-extension/src/BABA.ts
* Path: /home/cc/leetcode-extension
* Created Date: Saturday, September 23rd 2023, 8:17:16 pm
* Author: ccagml
*
* Copyright (c) 2023 ccagml . All rights reserved
*/

import { BaseCC } from "./utils/BaseCC";
export * as BaseCC from "./utils/BaseCC";
export enum BabaStr {
every_second = "every_second",
StatusBarTimeMediator = "StatusBarTimeMediator",
StatusBarTimeProxy = "StatusBarTimeProxy",
RemarkMediator = "RemarkMediator",
RemarkProxy = "RemarkProxy",
submit = "submit",
showProblemFinish = "showProblemFinish",
showProblemFinishOpen = "showProblemFinishOpen",
showProblemFinishError = "showProblemFinishError",
VSCODE_DISPOST = "VSCODE_DISPOST",
statusBarTime_start = "statusBarTime_start",
statusBarTime_stop = "statusBarTime_stop",
statusBarTime_reset = "statusBarTime_reset",
StatusBarProxy = "StatusBarProxy",
StatusBarMediator = "StatusBarMediator",
statusBar_update_status = "statusBar_update_status",
statusBar_update = "statusBar_update",
statusBar_update_UserContestInfo = "statusBar_update_UserContestInfo",
}

export class BABA {
public static fa;
public static init() {
this.fa = BaseCC.Facade.getInstance("lcpr");
}
public static regClazz(clazz_list) {
let len = clazz_list.length;
for (let j = 0; j < len; j++) {
this[clazz_list[j].NAME] = new clazz_list[j]();
}
}

public static dispose(): any {
this.sendNotification(BabaStr.VSCODE_DISPOST);
}
public static sendNotification(name: string, body?: any, type?: string) {
this.fa.sendNotification(name, body, type);
}

public static getProxy(name: string) {
return this.fa.retrieveProxy(name);
}
}

export class BABAProxy extends BaseCC.Proxy {
constructor(name: string) {
super(name);
BABA.fa.registerProxy(this);
}
}
export class BABAMediator extends BaseCC.Mediator {
constructor(name: string) {
super(name);
BABA.fa.registerMediator(this);
}
}
5 changes: 0 additions & 5 deletions src/controller/EventController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
*/

import { eventService } from "../service/EventService";
import { statusBarTimeService } from "../service/StatusBarTimeService";
// 事件的控制器
/* The EventController class has a method called addEvent that calls the addEvent method on the
eventService class */
Expand All @@ -23,10 +22,6 @@ class EventContorller {
public addEvent() {
eventService.addEvent();
}

public every_second() {
statusBarTimeService.updateSecond();
}
}

export const eventController: EventContorller = new EventContorller();
4 changes: 2 additions & 2 deletions src/controller/LoginController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ import { createEnvOption } from "../utils/CliUtils";
import { logOutput, promptForOpenOutputChannel } from "../utils/OutputUtils";
import { eventService } from "../service/EventService";
import { window, QuickPickOptions, ProgressLocation, Progress } from "vscode";
import { statusBarService } from "../service/StatusBarService";
import { treeDataService } from "../service/TreeDataService";
import { getLeetCodeEndpoint } from "../utils/ConfigUtils";
import { bricksDataService } from "../service/BricksDataService";
import { BABA, BabaStr } from "../BABA";

// 登录控制器
class LoginContorller {
Expand Down Expand Up @@ -203,7 +203,7 @@ class LoginContorller {
* @returns The login status of the user.
*/
public async getLoginStatus() {
return await statusBarService.getLoginStatus();
return await BABA.getProxy(BabaStr.StatusBarProxy).getLoginStatus();
}

// 删除所有缓存
Expand Down
67 changes: 46 additions & 21 deletions src/controller/TreeViewController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ import {
} from "../utils/ConfigUtils";
import { NodeModel } from "../model/NodeModel";
import { ISearchSet } from "../model/Model";
import { statusBarService } from "../service/StatusBarService";
import { previewService } from "../service/PreviewService";
import { executeService } from "../service/ExecuteService";
import { getNodeIdFromFile } from "../utils/SystemUtils";
Expand All @@ -80,6 +79,7 @@ import { submissionService } from "../service/SubmissionService";
import { bricksDataService } from "../service/BricksDataService";
import { groupDao } from "../dao/groupDao";
import { fileMeta, ProblemMeta } from "../utils/problemUtils";
import { BABA, BabaStr } from "../BABA";

// 视图控制器
class TreeViewController implements Disposable {
Expand Down Expand Up @@ -111,7 +111,8 @@ class TreeViewController implements Disposable {
* @returns A promise that resolves to a string.
*/
public async submitSolution(uri?: vscode.Uri): Promise<void> {
if (!statusBarService.getUser()) {
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
if (!sbp.getUser()) {
promptForSignIn();
return;
}
Expand Down Expand Up @@ -144,7 +145,8 @@ class TreeViewController implements Disposable {
*/
public async testSolution(uri?: vscode.Uri): Promise<void> {
try {
if (statusBarService.getStatus() === UserStatus.SignedOut) {
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
if (sbp.getStatus() === UserStatus.SignedOut) {
return;
}

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

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

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

Expand Down Expand Up @@ -505,7 +510,8 @@ class TreeViewController implements Disposable {
*/
public async getAllProblems(): Promise<IProblem[]> {
try {
if (statusBarService.getStatus() === UserStatus.SignedOut) {
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
if (sbp.getStatus() === UserStatus.SignedOut) {
return [];
}

Expand Down Expand Up @@ -603,7 +609,7 @@ class TreeViewController implements Disposable {
return;
}

if (!statusBarService.getUser() && choice.value != "testapi") {
if (!BABA.getProxy(BabaStr.StatusBarProxy).getUser() && choice.value != "testapi") {
promptForSignIn();
return;
}
Expand Down Expand Up @@ -701,7 +707,8 @@ class TreeViewController implements Disposable {
}

public async searchProblemByID(): Promise<void> {
if (!statusBarService.getUser()) {
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
if (!sbp.getUser()) {
promptForSignIn();
return;
}
Expand Down Expand Up @@ -769,7 +776,8 @@ class TreeViewController implements Disposable {
const problems: IProblem[] = await this.getAllProblems();
let randomProblem: IProblem;

const user_score = statusBarService.getUserContestScore();
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
const user_score = sbp.getUserContestScore();
if (user_score > 0) {
let min_score: number = getPickOneByRankRangeMin();
let max_score: number = getPickOneByRankRangeMax();
Expand Down Expand Up @@ -851,10 +859,19 @@ class TreeViewController implements Disposable {
);
if (show_code == 100) {
const promises: any[] = [
vscode.window.showTextDocument(vscode.Uri.file(finalPath), {
preview: false,
viewColumn: vscode.ViewColumn.One,
}),
vscode.window
.showTextDocument(vscode.Uri.file(finalPath), {
preview: false,
viewColumn: vscode.ViewColumn.One,
})
.then(
(editor) => {
eventService.emit("showProblemFinishOpen", node, editor);
},
(error) => {
eventService.emit("showProblemFinishError", node, error);
}
),
promptHintMessage(
"hint.commentDescription",
'You can config how to show the problem description through "leetcode-problem-rating.showDescription".',
Expand Down Expand Up @@ -956,13 +973,14 @@ class TreeViewController implements Disposable {
}

public async searchUserContest(): Promise<void> {
if (!statusBarService.getUser()) {
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
if (!sbp.getUser()) {
promptForSignIn();
return;
}
try {
const needTranslation: boolean = isUseEndpointTranslation();
const solution: string = await executeService.getUserContest(needTranslation, statusBarService.getUser() || "");
const solution: string = await executeService.getUserContest(needTranslation, sbp.getUser() || "");
const query_result = JSON.parse(solution);
const tt: userContestRanKingBase = Object.assign({}, userContestRankingObj, query_result.userContestRanking);
eventService.emit("searchUserContest", tt);
Expand All @@ -972,7 +990,8 @@ class TreeViewController implements Disposable {
}
}
public async searchToday(): Promise<void> {
if (!statusBarService.getUser()) {
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
if (!sbp.getUser()) {
promptForSignIn();
return;
}
Expand Down Expand Up @@ -1137,7 +1156,8 @@ class TreeViewController implements Disposable {
}

public async refreshCheck(): Promise<void> {
if (!statusBarService.getUser()) {
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
if (!sbp.getUser()) {
return;
}
const day_start = systemUtils.getDayStart(); //获取当天零点的时间
Expand All @@ -1156,7 +1176,8 @@ class TreeViewController implements Disposable {
this.waitTodayQuestion = true;
await this.searchToday();
}
let user_score = statusBarService.getUserContestScore();

let user_score = sbp.getUserContestScore();
if (!user_score && !this.waitUserContest) {
this.waitUserContest = true;
await this.searchUserContest();
Expand All @@ -1168,7 +1189,10 @@ class TreeViewController implements Disposable {
const temp_waitTodayQuestion: boolean = this.waitTodayQuestion;
const temp_waitUserContest: boolean = this.waitUserContest;
this.clearCache();
let user_score = statusBarService.getUserContestScore();

let sbp = BABA.getProxy(BabaStr.StatusBarProxy);

let user_score = sbp.getUserContestScore();
for (const problem of await this.getAllProblems()) {
this.explorerNodeMap.set(problem.id, new NodeModel(problem, true, user_score));
this.fidToQid.set(problem.id, problem.qid.toString());
Expand All @@ -1188,7 +1212,8 @@ class TreeViewController implements Disposable {
}

public getRootNodes(): NodeModel[] {
let user_score = statusBarService.getUserContestScore();
let sbp = BABA.getProxy(BabaStr.StatusBarProxy);
let user_score = sbp.getUserContestScore();
const baseNode: NodeModel[] = [
new NodeModel(
Object.assign({}, defaultProblem, {
Expand Down
Loading