From 7076d41b29633f3b1e2b6dcd95bc6bedaa448461 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Sun, 28 Jan 2024 19:56:09 +0800 Subject: [PATCH] Bugfix/invitemailmultilangs (#2257) Co-authored-by: crazywoola <427733928@qq.com> --- api/controllers/console/workspace/members.py | 4 ++-- api/services/account_service.py | 12 ++++++------ .../members-page/invite-modal/index.tsx | 9 +++++++-- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/api/controllers/console/workspace/members.py b/api/controllers/console/workspace/members.py index 54b307ae08..9a3bee707b 100644 --- a/api/controllers/console/workspace/members.py +++ b/api/controllers/console/workspace/members.py @@ -56,6 +56,7 @@ class MemberInviteEmailApi(Resource): invitee_emails = args['emails'] invitee_role = args['role'] + interface_language = args['language'] if invitee_role not in ['admin', 'normal']: return {'code': 'invalid-role', 'message': 'Invalid role'}, 400 @@ -64,8 +65,7 @@ class MemberInviteEmailApi(Resource): console_web_url = current_app.config.get("CONSOLE_WEB_URL") for invitee_email in invitee_emails: try: - token = RegisterService.invite_new_member(inviter.current_tenant, invitee_email, role=invitee_role, - inviter=inviter) + token = RegisterService.invite_new_member(inviter.current_tenant, invitee_email, interface_language, role=invitee_role, inviter=inviter) invitation_results.append({ 'status': 'success', 'email': invitee_email, diff --git a/api/services/account_service.py b/api/services/account_service.py index e14f46dfee..18f72f9ef7 100644 --- a/api/services/account_service.py +++ b/api/services/account_service.py @@ -138,8 +138,9 @@ class AccountService: return account @staticmethod - def create_account(email: str, name: str, password: str = None, - interface_language: str = languages[0], interface_theme: str = 'light', + def create_account(email: str, name: str, interface_language: str, + password: str = None, + interface_theme: str = 'light', timezone: str = 'America/New_York', ) -> Account: """create account""" account = Account() @@ -429,7 +430,7 @@ class RegisterService: db.session.begin_nested() """Register account""" try: - account = AccountService.create_account(email, name, password) + account = AccountService.create_account(email, name, interface_language=languages[0], password=password) account.status = AccountStatus.ACTIVE.value account.initialized_at = datetime.utcnow() @@ -452,15 +453,14 @@ class RegisterService: return account @classmethod - def invite_new_member(cls, tenant: Tenant, email: str, role: str = 'normal', - inviter: Account = None) -> str: + def invite_new_member(cls, tenant: Tenant, email: str, language: str, role: str = 'normal', inviter: Account = None) -> str: """Invite new member""" account = Account.query.filter_by(email=email).first() if not account: TenantService.check_member_permission(tenant, inviter, None, 'add') name = email.split('@')[0] - account = AccountService.create_account(email, name) + account = AccountService.create_account(email, name, interface_language=language) account.status = AccountStatus.PENDING.value db.session.commit() diff --git a/web/app/components/header/account-setting/members-page/invite-modal/index.tsx b/web/app/components/header/account-setting/members-page/invite-modal/index.tsx index 84db48314a..5d7af96034 100644 --- a/web/app/components/header/account-setting/members-page/invite-modal/index.tsx +++ b/web/app/components/header/account-setting/members-page/invite-modal/index.tsx @@ -14,6 +14,8 @@ import { inviteMember } from '@/service/common' import { emailRegex } from '@/config' import { ToastContext } from '@/app/components/base/toast' import type { InvitationResult } from '@/models/common' +import I18n from '@/context/i18n' +import { getModelRuntimeSupported } from '@/utils/language' import 'react-multi-email/dist/style.css' type IInviteModalProps = { @@ -29,6 +31,9 @@ const InviteModal = ({ const [emails, setEmails] = useState([]) const { notify } = useContext(ToastContext) + const { locale } = useContext(I18n) + const language = getModelRuntimeSupported(locale) + const InvitingRoles = useMemo(() => [ { name: 'normal', @@ -42,11 +47,11 @@ const InviteModal = ({ const [role, setRole] = useState(InvitingRoles[0]) const handleSend = useCallback(async () => { - if (emails.map(email => emailRegex.test(email)).every(Boolean)) { + if (emails.map((email: string) => emailRegex.test(email)).every(Boolean)) { try { const { result, invitation_results } = await inviteMember({ url: '/workspaces/current/members/invite-email', - body: { emails, role: role.name }, + body: { emails, role: role.name, language }, }) if (result === 'success') {