diff options
Diffstat (limited to 'src/view/screens/LanguageSettings.tsx')
-rw-r--r-- | src/view/screens/LanguageSettings.tsx | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/view/screens/LanguageSettings.tsx b/src/view/screens/LanguageSettings.tsx index a68a3b5e3..4cf178949 100644 --- a/src/view/screens/LanguageSettings.tsx +++ b/src/view/screens/LanguageSettings.tsx @@ -19,6 +19,7 @@ import {useFocusEffect} from '@react-navigation/native' import {LANGUAGES} from 'lib/../locale/languages' import RNPickerSelect, {PickerSelectProps} from 'react-native-picker-select' import {useSetMinimalShellMode} from '#/state/shell' +import {useLanguagePrefs, useSetLanguagePrefs} from '#/state/preferences' type Props = NativeStackScreenProps<CommonNavigatorParams, 'LanguageSettings'> @@ -27,6 +28,8 @@ export const LanguageSettingsScreen = observer(function LanguageSettingsImpl( ) { const pal = usePalette('default') const store = useStores() + const langPrefs = useLanguagePrefs() + const setLangPrefs = useSetLanguagePrefs() const {isTabletOrDesktop} = useWebMediaQueries() const {screen, track} = useAnalytics() const setMinimalShellMode = useSetMinimalShellMode() @@ -45,21 +48,23 @@ export const LanguageSettingsScreen = observer(function LanguageSettingsImpl( const onChangePrimaryLanguage = React.useCallback( (value: Parameters<PickerSelectProps['onValueChange']>[0]) => { - store.preferences.setPrimaryLanguage(value) + if (langPrefs.primaryLanguage !== value) { + setLangPrefs(v => ({...v, primaryLanguage: value})) + } }, - [store.preferences], + [langPrefs, setLangPrefs], ) const myLanguages = React.useMemo(() => { return ( - store.preferences.contentLanguages + langPrefs.contentLanguages .map(lang => LANGUAGES.find(l => l.code2 === lang)) .filter(Boolean) // @ts-ignore .map(l => l.name) .join(', ') ) - }, [store.preferences.contentLanguages]) + }, [langPrefs.contentLanguages]) return ( <CenteredView @@ -82,7 +87,7 @@ export const LanguageSettingsScreen = observer(function LanguageSettingsImpl( <View style={{position: 'relative'}}> <RNPickerSelect - value={store.preferences.primaryLanguage} + value={langPrefs.primaryLanguage} onValueChange={onChangePrimaryLanguage} items={LANGUAGES.filter(l => Boolean(l.code2)).map(l => ({ label: l.name, |