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') }
);
};
export default ProfileView;