import { Ionicons } from '@expo/vector-icons'; import { useFocusEffect } from '@react-navigation/native'; import i18n from 'i18n-js'; import { Avatar, Button, Divider, FormControl, List, Select, Stack, Text, View, } from 'native-base'; import PropTypes from 'prop-types'; import React, { useCallback, useState } from 'react'; import { getProfileDetail } from '../../api/IdentityAPI'; import AppActions from '../../store/actions/AppActions'; import { createLanguageSelector, createLanguagesSelector, } from '../../store/selectors/AppSelectors'; import { createTenantSelector } from '../../store/selectors/PersistentStorageSelectors'; import { connectToRedux } from '../../utils/ReduxConnect'; import { store } from '../../store/index'; import { getEnvVars } from '../../../Environment'; const env = getEnvVars(); function SettingsScreen({ navigation, language, languages, setLanguageAsync, logoutAsync, tenant = {}, }) { const [user, setUser] = useState({}); const [token, setToken] = useState(store.getState().persistentStorage.token); const fetchUser = () => { getProfileDetail().then(data => { setUser(data || {}); }); }; useFocusEffect( useCallback(() => { fetchUser(); }, []), ); const logout = () => { const { clientId } = env.oAuthConfig; const { access_token, refresh_token } = token; logoutAsync({ client_id: clientId, token: access_token, refresh_token: refresh_token, }); }; return ( navigation.navigate('ManageProfile')}> {tenant.name ? `${tenant.name}/` : ''} {user.userName ? `${user.userName}` : ''} navigation.navigate('ChangePassword')}> {i18n.t('AbpUi::ChangePassword')} {i18n.t('AbpUi::Language')} ); } SettingsScreen.propTypes = { setLanguageAsync: PropTypes.func.isRequired, logoutAsync: PropTypes.func.isRequired, language: PropTypes.object.isRequired, languages: PropTypes.array.isRequired, tenant: PropTypes.object.isRequired, }; export default connectToRedux({ component: SettingsScreen, stateProps: state => ({ languages: createLanguagesSelector()(state), language: createLanguageSelector()(state), tenant: createTenantSelector()(state), }), dispatchProps: { setLanguageAsync: AppActions.setLanguageAsync, logoutAsync: AppActions.logoutAsync, }, });