From bae63f9bf0dbc40dd7ea99fde714e92b9fc83dc3 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Mon, 11 Dec 2023 17:34:18 -0600 Subject: [PATCH] Patch bad migration, sanitize bad value (#2179) --- src/locale/helpers.ts | 12 ++++++++++++ src/locale/i18n.ts | 3 ++- src/locale/i18n.web.ts | 3 ++- src/state/persisted/legacy.ts | 3 ++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/locale/helpers.ts b/src/locale/helpers.ts index 65db32f2..4d01459a 100644 --- a/src/locale/helpers.ts +++ b/src/locale/helpers.ts @@ -84,3 +84,15 @@ export function getTranslatorLink(text: string, lang: string): string { text, )}` } + +export function sanitizeAppLanguageSetting(appLanguage: string) { + const langs = appLanguage.split(',').filter(Boolean) + + for (const lang of langs) { + if (['en', 'hi'].includes(lang)) { + return lang + } + } + + return 'en' +} diff --git a/src/locale/i18n.ts b/src/locale/i18n.ts index 4fe3cedd..93d21f38 100644 --- a/src/locale/i18n.ts +++ b/src/locale/i18n.ts @@ -4,6 +4,7 @@ import {i18n} from '@lingui/core' import {useLanguagePrefs} from '#/state/preferences' import {messages as messagesEn} from '#/locale/locales/en/messages' import {messages as messagesHi} from '#/locale/locales/hi/messages' +import {sanitizeAppLanguageSetting} from '#/locale/helpers' export const locales = { en: 'English', @@ -26,6 +27,6 @@ export async function dynamicActivate(locale: string) { export async function useLocaleLanguage() { const {appLanguage} = useLanguagePrefs() useEffect(() => { - dynamicActivate(appLanguage) + dynamicActivate(sanitizeAppLanguageSetting(appLanguage)) }, [appLanguage]) } diff --git a/src/locale/i18n.web.ts b/src/locale/i18n.web.ts index 4e8b8d95..bc484f30 100644 --- a/src/locale/i18n.web.ts +++ b/src/locale/i18n.web.ts @@ -2,6 +2,7 @@ import {useEffect} from 'react' import {i18n} from '@lingui/core' import {useLanguagePrefs} from '#/state/preferences' +import {sanitizeAppLanguageSetting} from '#/locale/helpers' export const locales = { en: 'English', @@ -29,6 +30,6 @@ export async function dynamicActivate(locale: string) { export async function useLocaleLanguage() { const {appLanguage} = useLanguagePrefs() useEffect(() => { - dynamicActivate(appLanguage) + dynamicActivate(sanitizeAppLanguageSetting(appLanguage)) }, [appLanguage]) } diff --git a/src/state/persisted/legacy.ts b/src/state/persisted/legacy.ts index d7026374..f689c3d0 100644 --- a/src/state/persisted/legacy.ts +++ b/src/state/persisted/legacy.ts @@ -94,7 +94,8 @@ export function transform(legacy: Partial): Schema { legacy.preferences?.postLanguageHistory || defaults.languagePrefs.postLanguageHistory, appLanguage: - legacy.preferences?.postLanguage || defaults.languagePrefs.appLanguage, + legacy.preferences?.primaryLanguage || + defaults.languagePrefs.appLanguage, }, requireAltTextEnabled: legacy.preferences?.requireAltTextEnabled ||