From b776155993a5120962b9b6548a5a0ec6f4b56614 Mon Sep 17 00:00:00 2001 From: undefined Date: Thu, 30 Sep 2021 07:42:39 +0800 Subject: [PATCH] core: fix change language --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/handler/home.ts | 1 + packages/hydrooj/src/handler/user.ts | 7 ++++++- packages/hydrooj/src/service/server.ts | 3 +-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index db25f087a..186517ba9 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.39.8", + "version": "2.39.9", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/handler/home.ts b/packages/hydrooj/src/handler/home.ts index f19afd07b..1ddf3f768 100644 --- a/packages/hydrooj/src/handler/home.ts +++ b/packages/hydrooj/src/handler/home.ts @@ -253,6 +253,7 @@ class HomeSettingsHandler extends Handler { } for (const key in booleanKeys) if (!args[key]) $set[key] = false; await setter($set); + if (args.viewLang && args.viewLang !== this.session.viewLang) this.session.viewLang = ''; this.back(); } } diff --git a/packages/hydrooj/src/handler/user.ts b/packages/hydrooj/src/handler/user.ts index 66f31084e..8251d3155 100644 --- a/packages/hydrooj/src/handler/user.ts +++ b/packages/hydrooj/src/handler/user.ts @@ -83,6 +83,7 @@ class UserLoginHandler extends Handler { udoc.checkPassword(password); await user.setById(udoc._id, { loginat: new Date(), loginip: this.request.ip }); if (!udoc.hasPriv(PRIV.PRIV_USER_PROFILE)) throw new BlacklistedError(uname); + this.session.viewLang = ''; this.session.uid = udoc._id; this.session.scope = PERM.PERM_ALL.toString(); this.session.save = rememberme; @@ -175,7 +176,11 @@ class UserRegisterWithCodeHandler extends Handler { const uid = await user.create(tdoc.mail, uname, password, undefined, this.request.ip); await token.del(code, token.TYPE_REGISTRATION); const [id, domain] = tdoc.mail.split('@'); - if (domain === 'qq.com' && !Number.isNaN(+id)) await user.setById(uid, { avatar: `qq:${id}` }); + const $set: any = {}; + if (domain === 'qq.com' && !Number.isNaN(+id)) $set.avatar = `qq:${id}`; + if (this.session.viewLang) $set.viewLang = this.session.viewLang; + if (Object.keys($set).length) await user.setById(uid, $set); + this.session.viewLang = ''; this.session.uid = uid; this.session.scpoe = PERM.PERM_ALL.toString(); this.response.redirect = this.url('home_settings', { category: 'preference' }); diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 3d47a0158..ab0bbfeda 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -527,8 +527,7 @@ export class Handler extends HandlerCommon { this.session.scope = PERM.PERM_ALL.toString(); this.user = await user.getById(domainId, this.session.uid, this.session.scope); } - if (this.user._id !== 0 && this.session.viewLang) this.user.viewLang = this.session.viewLang; - else if (this.user._id === 0) delete this.user.viewLang; + if (this.user._id === 0) delete this.user.viewLang; this.user.avatarUrl = avatar(this.user.avatar, 128); this.csrfToken = this.getCsrfToken(this.session._id || String.random(32)); this.UiContext.csrfToken = this.csrfToken;