Skip to content
Snippets Groups Projects
Unverified Commit f72af5e9 authored by Ahmad Farhat's avatar Ahmad Farhat Committed by GitHub
Browse files

Fixed multiple issues with local (#4717)

parent aef2643e
Branches
Tags
No related merge requests found
import React, { useEffect } from 'react'; import React from 'react';
import { Button, Stack } from 'react-bootstrap'; import { Button, Stack } from 'react-bootstrap';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
...@@ -18,21 +18,17 @@ export default function UpdateUserForm({ user }) { ...@@ -18,21 +18,17 @@ export default function UpdateUserForm({ user }) {
const currentUser = useAuth(); const currentUser = useAuth();
const localesAPI = useLocales(); const localesAPI = useLocales();
const updateUserAPI = useUpdateUser(user?.id); const updateUserAPI = useUpdateUser(user?.id);
const { t, i18n } = useTranslation(); const { t } = useTranslation();
const { methods, fields, reset } = useUpdateUserForm({ const { methods, fields, reset } = useUpdateUserForm({
defaultValues: { defaultValues: {
name: user?.name, name: user?.name,
email: user?.email, email: user?.email,
language: i18n.resolvedLanguage, // Whatever language is currently rendering (needed to handle unsupported languages) language: user?.language,
role_id: user?.role?.id, role_id: user?.role?.id,
}, },
}); });
useEffect(() => {
methods.setValue('language', i18n.resolvedLanguage);
}, [i18n.resolvedLanguage]);
const canUpdateRole = PermissionChecker.hasManageUsers(currentUser); const canUpdateRole = PermissionChecker.hasManageUsers(currentUser);
const rolesAPI = useRoles({ enabled: canUpdateRole }); const rolesAPI = useRoles({ enabled: canUpdateRole });
......
import React, { useContext, useMemo } from 'react'; import React, { useContext, useMemo } from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import useSessions from '../../hooks/queries/users/useSessions'; import useSessions from '../../hooks/queries/users/useSessions';
import getLanguage from '../../helpers/Language';
// TODO: Amir - Refactor this to use QueryClient context and fetch sessions data from queryCache. // TODO: Amir - Refactor this to use QueryClient context and fetch sessions data from queryCache.
...@@ -23,7 +22,7 @@ export default function AuthProvider({ children }) { ...@@ -23,7 +22,7 @@ export default function AuthProvider({ children }) {
provider: currentUser?.provider, provider: currentUser?.provider,
avatar: currentUser?.avatar, avatar: currentUser?.avatar,
signed_in: currentUser?.signed_in ?? false, signed_in: currentUser?.signed_in ?? false,
language: currentUser?.language || getLanguage(), language: currentUser?.language || window.navigator.language || window.navigator.userLanguage,
permissions: currentUser?.permissions, permissions: currentUser?.permissions,
role: currentUser?.role, role: currentUser?.role,
verified: currentUser?.verified, verified: currentUser?.verified,
......
export default function getLanguage() {
return window.navigator.userLanguage || window.navigator.language;
}
...@@ -3,10 +3,9 @@ import { useNavigate, useSearchParams } from 'react-router-dom'; ...@@ -3,10 +3,9 @@ import { useNavigate, useSearchParams } from 'react-router-dom';
import { toast } from 'react-hot-toast'; import { toast } from 'react-hot-toast';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import axios from '../../../helpers/Axios'; import axios from '../../../helpers/Axios';
import getLanguage from '../../../helpers/Language';
export default function useCreateUser() { export default function useCreateUser() {
const { t } = useTranslation(); const { t, i18n } = useTranslation();
const navigate = useNavigate(); const navigate = useNavigate();
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const [searchParams] = useSearchParams(); const [searchParams] = useSearchParams();
...@@ -14,7 +13,7 @@ export default function useCreateUser() { ...@@ -14,7 +13,7 @@ export default function useCreateUser() {
const inviteToken = searchParams.get('inviteToken') || ''; const inviteToken = searchParams.get('inviteToken') || '';
return useMutation( return useMutation(
({ user, token }) => axios.post('/users.json', { user: { language: getLanguage(), invite_token: inviteToken, ...user }, token }) ({ user, token }) => axios.post('/users.json', { user: { language: i18n.resolvedLanguage, invite_token: inviteToken, ...user }, token })
.then((resp) => resp.data.data), .then((resp) => resp.data.data),
{ {
onSuccess: (response) => { onSuccess: (response) => {
......
...@@ -6,15 +6,17 @@ i18next ...@@ -6,15 +6,17 @@ i18next
.use(initReactI18next) .use(initReactI18next)
.use(HttpApi) .use(HttpApi)
.init({ .init({
fallbackLng: 'en',
backend: { backend: {
loadPath: '/api/v1/locales/{{lng}}.json', loadPath: '/api/v1/locales/{{lng}}.json',
requestOptions: {
cache: 'no-store', // TODO - samuel: i18n will sometime use the cache translation
}, },
}, load: 'currentOnly',
interpolation: { fallbackLng: (locale) => {
escapeValue: false, const fallbacks = [];
if (locale?.indexOf('-') > -1) {
fallbacks.push(locale.split('-')[0]);
}
fallbacks.push('en');
return fallbacks;
}, },
}); });
export default i18next; export default i18next;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment