From a1c42af7a74904bc89845116704c9445478ad104 Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 8 Nov 2020 02:16:00 +0800 Subject: [PATCH] =?UTF-8?q?core:=20=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=A0=B9=E6=8D=AEcontest=5Fid=E6=9F=A5=E6=89=BE=E8=AF=84?= =?UTF-8?q?=E6=B5=8B=E8=AE=B0=E5=BD=95=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/record.ts | 7 +++---- packages/hydrooj/src/service/server.ts | 7 ++++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index e034bdbe0..ae00d8734 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.13.41", + "version": "2.13.42", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/handler/record.ts b/packages/hydrooj/src/handler/record.ts index 9cd6b4ee7..2e292972a 100644 --- a/packages/hydrooj/src/handler/record.ts +++ b/packages/hydrooj/src/handler/record.ts @@ -23,7 +23,6 @@ class RecordListHandler extends RecordHandler { @param('uidOrName', Types.String, true) async get(domainId: string, page = 1, pid?: string, tid?: ObjectID, uidOrName?: string) { this.response.template = 'record_main.html'; - if (tid) tid = new ObjectID(tid); const q: any = { tid, hidden: false }; if (uidOrName) { q.$or = [ @@ -171,11 +170,11 @@ class RecordMainConnectionHandler extends RecordConnectionHandler { dispose: bus.Disposable; @param('tid', Types.ObjectID, true) - async prepare(domainId: string, tid: ObjectID) { + async prepare(domainId: string, tid?: ObjectID) { this.domainId = domainId; if (tid) { - const tdoc = await contest.get(domainId, new ObjectID(tid), -1); - if (this.canShowRecord(tdoc)) this.tid = tid; + const tdoc = await contest.get(domainId, tid, -1); + if (this.canShowRecord(tdoc)) this.tid = tid.toHexString(); else { this.close(); return; diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index e7d59dd32..77c731c50 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -425,16 +425,21 @@ export class Handler { url(name: string, kwargs: any = {}) { let res = '#'; const args: any = {}; + const query: any = {}; for (const key in kwargs) { if (kwargs[key] instanceof ObjectID) args[key] = kwargs[key].toHexString(); else args[key] = kwargs[key].toString(); } + for (const key in kwargs.query || {}) { + if (query[key] instanceof ObjectID) query[key] = kwargs.query[key].toHexString(); + else query[key] = kwargs.query[key].toString(); + } try { if (this.domainId !== 'system' || args.domainId) { name += '_with_domainId'; args.domainId = args.domainId || this.domainId; } - const { anchor, query } = args; + const { anchor } = args; if (query) res = router.url(name, args, { query }); else res = router.url(name, args); if (anchor) return `${res}#${anchor}`;