diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index e9e758a6a..2ad1b6424 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "4.4.3", + "version": "4.4.4", "bin": "bin/hydrooj.js", "main": "src/plugin-api", "module": "src/plugin-api", diff --git a/packages/hydrooj/src/handler/record.ts b/packages/hydrooj/src/handler/record.ts index f3b8ebfb6..9b74379bc 100644 --- a/packages/hydrooj/src/handler/record.ts +++ b/packages/hydrooj/src/handler/record.ts @@ -133,7 +133,7 @@ class RecordDetailHandler extends ContestDetailBaseHandler { const lang = langs[this.rdoc.lang]?.pretest || this.rdoc.lang; this.response.body = this.rdoc.code; this.response.type = 'text/plain'; - this.response.disposition = `attachment; filename="${langs[lang].code_file || `foo.${this.rdoc.lang}`}"`; + this.response.disposition = `attachment; filename="${langs[lang]?.code_file || `foo.${this.rdoc.lang}`}"`; } @param('rid', Types.ObjectID) diff --git a/packages/hydrooj/src/service/layers/response.ts b/packages/hydrooj/src/service/layers/response.ts index 409b215ba..d65ab0e18 100644 --- a/packages/hydrooj/src/service/layers/response.ts +++ b/packages/hydrooj/src/service/layers/response.ts @@ -21,7 +21,11 @@ export default (logger) => async (ctx: KoaContext, next) => { response.body.url = response.redirect; } if (!response.type) { - if ( + if (response.pjax && args.pjax) { + const html = await ctx.renderHTML(response.pjax, response.body); + response.body = { fragments: [{ html }] }; + response.type = 'application/json'; + } else if ( request.json || response.redirect || request.query.noTemplate || !response.template) { // Send raw data @@ -35,9 +39,6 @@ export default (logger) => async (ctx: KoaContext, next) => { response.body = new SystemError('Serialize failure', e.message); } response.type = 'application/json'; - } else if (response.pjax && args.pjax) { - const html = await ctx.renderHTML(response.pjax, response.body); - response.body = { fragments: [{ html }] }; } else if (response.template) { const s = response.template.split('.'); let templateName = `${s[0]}.${args.domainId}.${s[1]}`;