diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index e8c169889..a234c6245 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.2.26", + "version": "3.2.27", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index b2735fd82..36a3c6cc8 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -125,7 +125,7 @@ export class ProblemMainHandler extends ProblemHandler { this.response.template = 'problem_main.html'; // eslint-disable-next-line @typescript-eslint/no-shadow const query: FilterQuery = {}; - let psdict = {}; + const psdict = {}; const search = global.Hydro.lib.problemSearch; let sort: string[]; let fail = false; @@ -168,8 +168,13 @@ export class ProblemMainHandler extends ProblemHandler { } } if (this.user.hasPriv(PRIV.PRIV_USER_PROFILE)) { - psdict = await problem.getListStatus( - domainId, this.user._id, pdocs.map((pdoc) => pdoc.docId), + const domainIds = Array.from(new Set(pdocs.map((i) => i.domainId))); + await Promise.all( + domainIds.map((did) => + problem.getListStatus( + did, this.user._id, + pdocs.filter((i) => i.domainId === did).map((i) => i.docId), + ).then((res) => Object.assign(psdict, res))), ); } this.response.body = { diff --git a/packages/hydrooj/src/model/problem.ts b/packages/hydrooj/src/model/problem.ts index 9ccd03a2e..f306f4569 100644 --- a/packages/hydrooj/src/model/problem.ts +++ b/packages/hydrooj/src/model/problem.ts @@ -316,7 +316,10 @@ export class ProblemModel { domainId, { uid, docId: { $in: Array.from(new Set(pids)) } }, ).toArray(); const r: Record = {}; - for (const psdoc of psdocs) r[psdoc.docId] = psdoc; + for (const psdoc of psdocs) { + r[psdoc.docId] = psdoc; + r[`${psdoc.domainId}#${psdoc.docId}`] = psdoc; + } return r; } diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index c31e9595e..136192603 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.27.12", + "version": "4.27.13", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js", diff --git a/packages/ui-default/templates/partials/problem_list.html b/packages/ui-default/templates/partials/problem_list.html index 23e66290d..6f43c10e1 100644 --- a/packages/ui-default/templates/partials/problem_list.html +++ b/packages/ui-default/templates/partials/problem_list.html @@ -41,7 +41,7 @@ {%- for pdoc in pdocs -%} - {% set psdoc = psdict[pdoc['docId']] %} + {% set psdoc = psdict[pdoc.domainId + '#' + pdoc.docId] %}