diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 738a56985..fcd512750 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.26.21", + "version": "2.26.22", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/contest.ts b/packages/hydrooj/src/handler/contest.ts index cf3557a32..073f1882a 100644 --- a/packages/hydrooj/src/handler/contest.ts +++ b/packages/hydrooj/src/handler/contest.ts @@ -214,7 +214,7 @@ class ContestEditHandler extends Handler { domainId: string, beginAtDate: string, beginAtTime: string, duration: number, title: string, content: string, rule: string, _pids: string, rated = false, ) { - const pids = _pids.replace(/,/g, ',').split(',').map((i) => +i); + const pids = _pids.replace(/,/g, ',').split(',').map((i) => +i).filter((i) => i); await problem.getList(domainId, pids, this.user.hasPerm(PERM.PERM_VIEW_PROBLEM_HIDDEN), true); const beginAtMoment = moment.tz(`${beginAtDate} ${beginAtTime}`, this.user.timeZone); if (!beginAtMoment.isValid()) { @@ -425,7 +425,7 @@ class ContestCreateHandler extends Handler { domainId: string, beginAtDate: string, beginAtTime: string, duration: number, title: string, content: string, rule: string, _pids: string, rated = false, ) { - const pids = _pids.replace(/,/g, ',').split(',').map((i) => +i); + const pids = _pids.replace(/,/g, ',').split(',').map((i) => +i).filter((i) => i); const beginAt = moment.tz(`${beginAtDate} ${beginAtTime}`, this.user.timeZone); if (!beginAt.isValid()) throw new ValidationError('beginAtDate', 'beginAtTime'); const endAt = beginAt.clone().add(duration, 'hours').toDate(); diff --git a/packages/hydrooj/src/handler/homework.ts b/packages/hydrooj/src/handler/homework.ts index 8a0ac9348..f61cad357 100644 --- a/packages/hydrooj/src/handler/homework.ts +++ b/packages/hydrooj/src/handler/homework.ts @@ -259,7 +259,7 @@ class HomeworkCreateHandler extends Handler { penaltySinceDate: string, penaltySinceTime: string, extensionDays: number, penaltyRules: PenaltyRules, title: string, content: string, _pids: string, rated = false, ) { - const pids = _pids.replace(/,/g, ',').split(',').map((i) => +i); + const pids = _pids.replace(/,/g, ',').split(',').map((i) => +i).filter((i) => i); const beginAt = moment.tz(`${beginAtDate} ${beginAtTime}`, this.user.timeZone); if (!beginAt.isValid()) throw new ValidationError('beginAtDate', 'beginAtTime'); const penaltySince = moment.tz(`${penaltySinceDate} ${penaltySinceTime}`, this.user.timeZone); @@ -323,7 +323,7 @@ class HomeworkEditHandler extends Handler { penaltySinceDate: string, penaltySinceTime: string, extensionDays: number, penaltyRules: string, title: string, content: string, _pids: string, rated = false, ) { - const pids = _pids.replace(/,/g, ',').split(',').map((i) => +i); + const pids = _pids.replace(/,/g, ',').split(',').map((i) => +i).filter((i) => i); const tdoc = await contest.get(domainId, tid, document.TYPE_HOMEWORK); if (!this.user.own(tdoc)) this.checkPerm(PERM.PERM_EDIT_HOMEWORK); else this.checkPerm(PERM.PERM_EDIT_HOMEWORK_SELF); diff --git a/packages/hydrooj/src/handler/problem.ts b/packages/hydrooj/src/handler/problem.ts index 2be141491..40e527c7e 100644 --- a/packages/hydrooj/src/handler/problem.ts +++ b/packages/hydrooj/src/handler/problem.ts @@ -629,6 +629,10 @@ export class ProblemPrefixListHandler extends Handler { @param('prefix', Types.Name) async get(domainId: string, prefix: string) { this.response.body = await problem.getPrefixList(domainId, prefix); + if (!Number.isNaN(+prefix)) { + const pdoc = await problem.get(domainId, +prefix, undefined, ['domainId', 'docId', 'pid', 'title']); + if (pdoc) this.response.body.unshift(pdoc); + } } }