From 4fe734a6f3a883422171de0f36c0861163ece4df Mon Sep 17 00:00:00 2001 From: undefined Date: Thu, 23 Feb 2023 14:21:09 +0800 Subject: [PATCH] core: fix #519 --- .eslintrc.yaml | 2 +- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/training.ts | 12 ++++-------- packages/ui-default/backendlib/builder.ts | 3 ++- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/.eslintrc.yaml b/.eslintrc.yaml index 8226e5f9..a1f061e0 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -6,7 +6,7 @@ ignorePatterns: - packages/ui-default overrides: - files: - - '**/public/**/*.{ts,tsx,page.js}' + - '**/{public,frontend}/**/*.{ts,tsx,page.js}' rules: '@typescript-eslint/indent': - warn diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 53488c50..d8f49191 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "4.7.8", + "version": "4.7.9", "bin": "bin/hydrooj.js", "main": "src/plugin-api", "module": "src/plugin-api", diff --git a/packages/hydrooj/src/handler/training.ts b/packages/hydrooj/src/handler/training.ts index ed832bba..dba8fa9f 100644 --- a/packages/hydrooj/src/handler/training.ts +++ b/packages/hydrooj/src/handler/training.ts @@ -99,27 +99,23 @@ class TrainingMainHandler extends Handler { class TrainingDetailHandler extends Handler { @param('tid', Types.ObjectID) @param('uid', Types.PositiveInt, true) - async get(domainId: string, tid: ObjectID, uid: number) { + async get(domainId: string, tid: ObjectID, uid = this.user._id) { const tdoc = await training.get(domainId, tid); await this.ctx.parallel('training/get', tdoc, this); - let targetUser = this.user._id; let enrollUsers: number[] = []; let shouldCompare = false; const pids = training.getPids(tdoc.dag); if (this.user.hasPriv(PRIV.PRIV_USER_PROFILE)) { enrollUsers = (await training.getMultiStatus(domainId, { docId: tid, uid: { $gt: 1 } }) .project({ uid: 1 }).limit(500).toArray()).map((x) => +x.uid); - if (uid) { - targetUser = uid; - shouldCompare = targetUser !== this.user._id; - } - } + shouldCompare = uid !== this.user._id; + } else uid = this.user._id; const canViewHidden = this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN) || this.user._id; const [udoc, udict, pdict, psdict, selfPsdict] = await Promise.all([ user.getById(domainId, tdoc.owner), user.getListForRender(domainId, enrollUsers), problem.getList(domainId, pids, canViewHidden, true), - problem.getListStatus(domainId, targetUser, pids), + problem.getListStatus(domainId, uid, pids), shouldCompare ? problem.getListStatus(domainId, this.user._id, pids) : {}, ]); const donePids = new Set(); diff --git a/packages/ui-default/backendlib/builder.ts b/packages/ui-default/backendlib/builder.ts index f02a2fe8..a1fa4737 100644 --- a/packages/ui-default/backendlib/builder.ts +++ b/packages/ui-default/backendlib/builder.ts @@ -77,7 +77,8 @@ export async function buildUI() { const lazyModules: string[] = []; const newFiles = ['entry.js']; for (const addon of global.addons) { - const publicPath = resolve(addon, 'public'); + let publicPath = resolve(addon, 'frontend'); + if (!fs.existsSync(publicPath)) publicPath = resolve(addon, 'public'); if (!fs.existsSync(publicPath)) continue; const targets = fs.readdirSync(publicPath); for (const target of targets) {