From 0fbf47cb41cf42a723eba67ba1e90cff3d7fd4c4 Mon Sep 17 00:00:00 2001 From: Ahmad Farhat <ahmad.af.farhat@gmail.com> Date: Wed, 8 Feb 2023 15:32:18 -0500 Subject: [PATCH] More localesssss (#4776) * More localesssss * eslint --- .../users/user/forms/UpdateUserForm.jsx | 34 ++++++++++++++----- app/serializers/user_serializer.rb | 4 +++ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/app/javascript/components/users/user/forms/UpdateUserForm.jsx b/app/javascript/components/users/user/forms/UpdateUserForm.jsx index b6912849..8aa27ba3 100644 --- a/app/javascript/components/users/user/forms/UpdateUserForm.jsx +++ b/app/javascript/components/users/user/forms/UpdateUserForm.jsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import { Button, Stack } from 'react-bootstrap'; import PropTypes from 'prop-types'; import { useTranslation } from 'react-i18next'; @@ -15,22 +15,38 @@ import useUpdateUserForm from '../../../../hooks/forms/users/user/useUpdateUserF import PermissionChecker from '../../../../helpers/PermissionChecker'; export default function UpdateUserForm({ user }) { + const { t } = useTranslation(); const currentUser = useAuth(); - const localesAPI = useLocales(); + + const canUpdateRole = PermissionChecker.hasManageUsers(currentUser); + const { data: roles } = useRoles({ enabled: canUpdateRole }); + const { data: locales } = useLocales(); const updateUserAPI = useUpdateUser(user?.id); - const { t } = useTranslation(); + + function currentLanguage() { + const language = user?.language; + const noDialect = language.substring(0, language.indexOf('-')); + + if (locales?.[language] !== undefined) { + return language; + } if (noDialect !== '' && locales?.[noDialect] !== undefined) { + return noDialect; + } + return 'en'; + } const { methods, fields, reset } = useUpdateUserForm({ defaultValues: { name: user?.name, email: user?.email, - language: user?.language, + language: currentLanguage(), role_id: user?.role?.id, }, }); - const canUpdateRole = PermissionChecker.hasManageUsers(currentUser); - const rolesAPI = useRoles({ enabled: canUpdateRole }); + useEffect(() => { + methods.setValue('language', currentLanguage()); + }, [currentLanguage()]); return ( <Form methods={methods} onSubmit={updateUserAPI.mutate}> @@ -38,13 +54,13 @@ export default function UpdateUserForm({ user }) { <FormControl field={fields.email} type="email" readOnly /> <FormSelect field={fields.language} variant="dropdown"> { - Object.keys(localesAPI.data || {}).map((code) => <Option key={code} value={code}>{localesAPI.data[code]}</Option>) + Object.keys(locales || {}).map((code) => <Option key={code} value={code}>{locales[code]}</Option>) } </FormSelect> - {(canUpdateRole && rolesAPI.data) && ( + {(canUpdateRole && roles) && ( <FormSelect field={fields.role_id} variant="dropdown"> { - rolesAPI.data.map((role) => <Option key={role.id} value={role.id}>{role.name}</Option>) + roles.map((role) => <Option key={role.id} value={role.id}>{role.name}</Option>) } </FormSelect> )} diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index 6097971d..4764d29b 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -7,6 +7,10 @@ class UserSerializer < ApplicationSerializer belongs_to :role + def language + object.language.tr('_', '-') + end + def avatar user_avatar(object) end -- GitLab