import { useNavigation } from '@react-navigation/native'; import React, { useCallback, useLayoutEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { ScrollView, Text, View, ViewStyle } from 'react-native'; import { Edge } from 'react-native-safe-area-context'; import { useDispatch, useSelector } from 'react-redux'; import { IReduxState } from '../../../app/types'; import { login, logout } from '../../../authentication/actions.native'; import Avatar from '../../../base/avatar/components/Avatar'; import { IconArrowLeft } from '../../../base/icons/svg'; import JitsiScreen from '../../../base/modal/components/JitsiScreen'; import { getLocalParticipant } from '../../../base/participants/functions'; import { updateSettings } from '../../../base/settings/actions'; import BaseThemeNative from '../../../base/ui/components/BaseTheme.native'; import Button from '../../../base/ui/components/native/Button'; import Input from '../../../base/ui/components/native/Input'; import { BUTTON_TYPES } from '../../../base/ui/constants.native'; import HeaderNavigationButton from '../../../mobile/navigation/components/HeaderNavigationButton'; import { goBack, navigate } from '../../../mobile/navigation/components/settings/SettingsNavigationContainerRef'; import { screen } from '../../../mobile/navigation/routes'; import FormSection from './FormSection'; import { AVATAR_SIZE } from './constants'; import styles from './styles'; const ProfileView = ({ isInWelcomePage }: { isInWelcomePage?: boolean; }) => { const { t } = useTranslation(); const dispatch = useDispatch(); const navigation = useNavigation(); const { displayName: reduxDisplayName, email: reduxEmail } = useSelector( (state: IReduxState) => state['features/base/settings'] ); const participant = useSelector((state: IReduxState) => getLocalParticipant(state)); const { locationURL } = useSelector((state: IReduxState) => state['features/base/connection']); const [ displayName, setDisplayName ] = useState(reduxDisplayName); const [ email, setEmail ] = useState(reduxEmail); const { authLogin: isAutenticated } = useSelector((state: IReduxState) => state['features/base/conference']); const onDisplayNameChanged = useCallback(newDisplayName => { setDisplayName(newDisplayName); }, [ setDisplayName ]); const onEmailChanged = useCallback(newEmail => { setEmail(newEmail); }, [ setEmail ]); const onApplySettings = useCallback(() => { dispatch(updateSettings({ displayName, email })); navigate(screen.settings.main); }, [ dispatch, updateSettings, email, displayName ]); const onLogin = useCallback(() => { dispatch(login()); }, [ dispatch ]); const onLogout = useCallback(() => { dispatch(logout()); }, [ dispatch ]); const headerLeft = () => ( ); const headerRight = () => { if (isAutenticated) { return ( ); } return ( ); }; useLayoutEffect(() => { navigation.setOptions({ headerLeft, headerRight: !isInWelcomePage && !locationURL?.hostname?.includes('8x8.vc') && headerRight }); }, [ navigation ]); return ( { t('settingsView.gavatarMessage') }