import { NativeStackScreenProps } from '@react-navigation/native-stack' import React, { useMemo, useState } from 'react' import { useTranslation } from 'react-i18next' import { StyleSheet, Text, View } from 'react-native' import { SafeAreaView } from 'react-native-safe-area-context' import { saveName } from 'src/account/actions' import { nameSelector } from 'src/account/selectors' import { showError, showMessage } from 'src/alert/actions' import AppAnalytics from 'src/analytics/AppAnalytics' import { SettingsEvents } from 'src/analytics/Events' import { ErrorMessages } from 'src/app/ErrorMessages' import BackButton from 'src/components/BackButton' import Button, { BtnSizes, BtnTypes } from 'src/components/Button' import ContactCircleSelf from 'src/components/ContactCircleSelf' import KeyboardAwareScrollView from 'src/components/KeyboardAwareScrollView' import KeyboardSpacer from 'src/components/KeyboardSpacer' import TextButton from 'src/components/TextButton' import TextInput from 'src/components/TextInput' import { generateRandomUsername } from 'src/nameGenerator' import { emptyHeader } from 'src/navigator/Headers' import { Screens } from 'src/navigator/Screens' import { StackParamList } from 'src/navigator/types' import { useDispatch, useSelector } from 'src/redux/hooks' import colors from 'src/styles/colors' import { typeScale } from 'src/styles/fonts' import { Spacing } from 'src/styles/styles' type Props = NativeStackScreenProps function Profile({ navigation }: Props) { const { t } = useTranslation() const [newName, setNewName] = useState(useSelector(nameSelector) ?? '') const exampleName = useMemo(() => generateRandomUsername(), []) const dispatch = useDispatch() const onSave = () => { if (newName.length === 0) { dispatch(showError(ErrorMessages.MISSING_FULL_NAME)) return } AppAnalytics.track(SettingsEvents.profile_save) dispatch(saveName(newName)) dispatch(showMessage(t('nameSaved'))) navigation.goBack() } const updateName = (updatedName: string) => { setNewName(updatedName) } const generateName = () => { AppAnalytics.track(SettingsEvents.profile_generate_name) updateName(generateRandomUsername()) } return ( {t('profileName')} {t('profileScreen.generateName')}