diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 3ed5aa878..ab04e8b7a 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "3.1.21", + "version": "3.1.22", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/service/bus.ts b/packages/hydrooj/src/service/bus.ts index 3bdeb1d97..fbe31290b 100644 --- a/packages/hydrooj/src/service/bus.ts +++ b/packages/hydrooj/src/service/bus.ts @@ -64,9 +64,14 @@ export interface EventMap extends Record { 'handler/create': (thisArg: Handler) => VoidReturn 'handler/init': (thisArg: Handler) => VoidReturn 'handler/before-prepare/UserRegister': (thisArg: UserRegisterHandler) => VoidReturn + 'handler/before-prepare': (thisArg: Handler) => VoidReturn 'handler/before/UserRegister': (thisArg: UserRegisterHandler) => VoidReturn + 'handler/before': (thisArg: Handler) => VoidReturn 'handler/after/UserRegister': (thisArg: UserRegisterHandler) => VoidReturn + 'handler/after': (thisArg: Handler) => VoidReturn 'handler/finish/UserRegister': (thisArg: UserRegisterHandler) => VoidReturn + 'handler/finish': (thisArg: Handler) => VoidReturn + 'handler/error': (thisArg: Handler) => VoidReturn 'handler/solution/get': (thisArg: ProblemSolutionHandler) => VoidReturn 'discussion/before-add': (payload: Partial) => VoidReturn diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 7ce15f561..b85a91240 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -725,6 +725,8 @@ async function handle(ctx, HandlerClass, checker) { await bail('handler/finish', h); } catch (e) { try { + await bail(`handler/error/${HandlerClass.name.replace(/Handler$/, '')}`, h); + await bail('handler/error', h); await h.onerror(e); } catch (err) { h.response.code = 500; diff --git a/packages/ui-default/handler.ts b/packages/ui-default/handler.ts index 613b8db1d..761cf2970 100644 --- a/packages/ui-default/handler.ts +++ b/packages/ui-default/handler.ts @@ -76,14 +76,16 @@ async function constant(args: ConstantArgs) { return version; } -bus.on('handler/after', async (that) => { - if (that.response.template) { +const versionHandler = async (that) => { + if (that.response.template && !that.UiContext.constantVersion) { that.UiContext.constantVersion = await constant({ domainId: that.domainId, lang: that.session.viewLang || that.user.viewLang, }); } -}); +}; +bus.on('handler/after', versionHandler); +bus.on('handler/error', versionHandler); class WikiHelpHandler extends Handler { noCheckPermView = true; diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index c930f2baf..0ced522f3 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.26.10", + "version": "4.26.11", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js",