Commit cfea3723 authored by Moody Salem's avatar Moody Salem

remove setting the locale from using the active locale

parent 7d0fb9cc
import { DEFAULT_LOCALE, SupportedLocale, SUPPORTED_LOCALES } from 'constants/locales' import { DEFAULT_LOCALE, SupportedLocale, SUPPORTED_LOCALES } from 'constants/locales'
import { useEffect, useMemo } from 'react' import { useEffect, useMemo } from 'react'
import { useUserLocaleManager } from 'state/user/hooks' import { useUserLocale, useUserLocaleManager } from 'state/user/hooks'
import useParsedQueryString from './useParsedQueryString' import useParsedQueryString from './useParsedQueryString'
/** /**
...@@ -29,19 +29,23 @@ function navigatorLocale(): SupportedLocale | undefined { ...@@ -29,19 +29,23 @@ function navigatorLocale(): SupportedLocale | undefined {
return parseLocale(language) return parseLocale(language)
} }
/** export function useSetLocaleFromUrl() {
* Returns the currently active locale, from a combination of user agent, query string, and user settings stored in redux
*/
export function useActiveLocale(): SupportedLocale {
const parsed = useParsedQueryString() const parsed = useParsedQueryString()
const [userLocale, setUserLocale] = useUserLocaleManager() const [userLocale, setUserLocale] = useUserLocaleManager()
useEffect(() => { useEffect(() => {
const urlLocale = typeof parsed.lng === 'string' ? parseLocale(parsed.lng) : undefined const urlLocale = typeof parsed.lng === 'string' ? parseLocale(parsed.lng) : undefined
if (urlLocale) { if (urlLocale && urlLocale !== userLocale) {
setUserLocale(urlLocale) setUserLocale(urlLocale)
} }
}, [parsed.lng, setUserLocale, userLocale]) }, [parsed.lng, setUserLocale, userLocale])
}
/**
* Returns the currently active locale, from a combination of user agent, query string, and user settings stored in redux
*/
export function useActiveLocale(): SupportedLocale {
const userLocale = useUserLocale()
return useMemo(() => { return useMemo(() => {
return userLocale ?? navigatorLocale() ?? DEFAULT_LOCALE return userLocale ?? navigatorLocale() ?? DEFAULT_LOCALE
......
...@@ -2,7 +2,7 @@ import React, { useEffect } from 'react' ...@@ -2,7 +2,7 @@ import React, { useEffect } from 'react'
import { i18n } from '@lingui/core' import { i18n } from '@lingui/core'
import { I18nProvider } from '@lingui/react' import { I18nProvider } from '@lingui/react'
import { ReactNode } from 'react' import { ReactNode } from 'react'
import { useActiveLocale } from 'hooks/useActiveLocale' import { useActiveLocale, useSetLocaleFromUrl } from 'hooks/useActiveLocale'
import { SupportedLocale } from 'constants/locales' import { SupportedLocale } from 'constants/locales'
export async function dynamicActivate(locale: SupportedLocale) { export async function dynamicActivate(locale: SupportedLocale) {
...@@ -13,6 +13,7 @@ export async function dynamicActivate(locale: SupportedLocale) { ...@@ -13,6 +13,7 @@ export async function dynamicActivate(locale: SupportedLocale) {
} }
export function LanguageProvider({ children }: { children: ReactNode }) { export function LanguageProvider({ children }: { children: ReactNode }) {
useSetLocaleFromUrl()
const locale = useActiveLocale() const locale = useActiveLocale()
useEffect(() => { useEffect(() => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment