import React, { useEffect, useMemo } from 'react'; import { FlatList, StyleSheet, TouchableOpacity, View } from 'react-native'; import { useDispatch, useSelector } from 'react-redux'; import AppText from '../../components/AppText'; import MainContainer from '../../components/MainContainer'; import { AppMargin, AppPadding } from '../../constants/commonStyle'; import { settings } from '../../constants/string'; import { t } from '../../i18n'; import { AppDispatch } from '../../store'; import { setIsLogin, setLocalize } from '../../store/reducers/commonData.slice'; import { useTheme } from '../../theme/ThemeProvider'; import { useThemeControl } from '../../theme/themeControl'; import { NavigationKeys } from '../../constants/navigationKeys'; import { _showToast } from '../../services/UIs/ToastConfig'; interface SettingScreenProps { navigation: any; } const SettingScreen = (props: SettingScreenProps) => { const { Colors, isDarkMode } = useTheme(); const { setDarkMode, setLightMode, setDefaultTheme } = useThemeControl(); const styles = useMemo(() => createStyles(Colors), [Colors]); const dispatch: AppDispatch = useDispatch(); const commonData = useSelector((state: any) => state.commonData); const handleLogout = () => { props.navigation.navigate(NavigationKeys.AuthNavigator) dispatch(setIsLogin(false)) _showToast('Logout Successful', 'success'); } useEffect(() => { }, [commonData.localize]) const handleSettings = (itemTitle: string) => { // Define types for themeActions and localizeActions || Any Other type ThemeActions = { [key: string]: () => void }; type LocalizeActions = { [key: string]: () => void }; type AccountAction = { [key: string]: () => void }; const themeActions: ThemeActions = { 'default_Theme': setDefaultTheme, 'dark_Theme': setDarkMode, 'light_Theme': setLightMode, }; const localizeActions: LocalizeActions = { 'english': () => setLocalizeAndShow('en'), 'japanese': () => setLocalizeAndShow('jp'), 'espanol': () => setLocalizeAndShow('sp'), }; function setLocalizeAndShow(locale: string) { dispatch(setLocalize(locale)); _showToast('Changed Successfully', 'success'); } const AccountActions: AccountAction = { 'logout': () => handleLogout(), }; themeActions[itemTitle]?.(); localizeActions[itemTitle]?.(); AccountActions[itemTitle]?.(); }; return ( item.id + index.toString()} renderItem={({ item, index }) => { return ( subItem.id.toString()} ItemSeparatorComponent={() => } renderItem={({ item: subItem }) => ( handleSettings(subItem.title)} style={{ padding: 20, backgroundColor: Colors.primaryTransparent }}> )} /> ) }} /> ); }; const createStyles = (Colors: any) => { return StyleSheet.create({ flatListContainer: { paddingBottom: AppMargin._75, justifyContent: 'space-between', }, }); }; export default SettingScreen;