2022-05-28 22:18:03 +02:00
|
|
|
import haptics from '@components/haptics'
|
2022-12-15 18:43:39 +01:00
|
|
|
import { MenuRow } from '@components/Menu'
|
2022-12-28 23:41:36 +01:00
|
|
|
import { LOCALES } from '@i18n/locales'
|
2022-05-28 22:18:03 +02:00
|
|
|
import { TabMeStackScreenProps } from '@utils/navigation/navigators'
|
2022-12-28 23:41:36 +01:00
|
|
|
import { setChannels } from '@utils/push/constants'
|
|
|
|
import { getGlobalStorage, useGlobalStorage } from '@utils/storage/actions'
|
2022-12-15 18:43:39 +01:00
|
|
|
import { StyleConstants } from '@utils/styles/constants'
|
2022-05-28 22:18:03 +02:00
|
|
|
import React from 'react'
|
|
|
|
import { useTranslation } from 'react-i18next'
|
2023-01-06 14:00:50 +01:00
|
|
|
import { FlatList, Platform } from 'react-native'
|
2022-05-28 22:18:03 +02:00
|
|
|
|
2022-12-09 21:09:00 +01:00
|
|
|
const TabMeSettingsLanguage: React.FC<TabMeStackScreenProps<'Tab-Me-Settings-Language'>> = ({
|
|
|
|
navigation
|
|
|
|
}) => {
|
2022-12-10 00:31:11 +01:00
|
|
|
const { i18n } = useTranslation('screenTabs')
|
2022-05-28 22:18:03 +02:00
|
|
|
const languages = Object.entries(LOCALES)
|
2022-12-28 23:41:36 +01:00
|
|
|
|
|
|
|
const [_, setLanguage] = useGlobalStorage.string('app.language')
|
2022-05-28 22:18:03 +02:00
|
|
|
|
|
|
|
const change = (lang: string) => {
|
|
|
|
haptics('Success')
|
|
|
|
|
2022-12-28 23:41:36 +01:00
|
|
|
setLanguage(lang)
|
2022-05-28 22:18:03 +02:00
|
|
|
i18n.changeLanguage(lang)
|
|
|
|
|
|
|
|
// Update Android notification channel language
|
|
|
|
if (Platform.OS === 'android') {
|
2022-12-28 23:41:36 +01:00
|
|
|
const accounts = getGlobalStorage.object('accounts')
|
|
|
|
accounts?.forEach(account => setChannels(true, account))
|
2022-05-28 22:18:03 +02:00
|
|
|
}
|
2022-05-29 01:57:15 +02:00
|
|
|
|
|
|
|
navigation.pop(1)
|
2022-05-28 22:18:03 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
2023-01-06 14:00:50 +01:00
|
|
|
<FlatList
|
2022-12-15 18:43:39 +01:00
|
|
|
style={{ flex: 1, paddingHorizontal: StyleConstants.Spacing.Global.PagePadding }}
|
|
|
|
data={languages}
|
|
|
|
renderItem={({ item }) => {
|
|
|
|
return (
|
|
|
|
<MenuRow
|
|
|
|
key={item[0]}
|
|
|
|
title={item[1]}
|
2023-01-25 00:15:46 +01:00
|
|
|
iconBack={item[0] === i18n.language ? 'check' : undefined}
|
2022-12-15 18:43:39 +01:00
|
|
|
iconBackColor={'blue'}
|
|
|
|
onPress={() => item[0] !== i18n.language && change(item[0])}
|
|
|
|
/>
|
|
|
|
)
|
|
|
|
}}
|
|
|
|
/>
|
2022-05-28 22:18:03 +02:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default TabMeSettingsLanguage
|