import React, { useState, useRef } from 'react'; import { View, Text, TouchableWithoutFeedback, Keyboard, InteractionManager, UIManager, LayoutAnimation, } from 'react-native'; import { useNavigation } from '@react-navigation/native'; import Icon from 'react-native-vector-icons/FontAwesome'; import { OutlinedTextField } from 'react-native-material-textfield'; import { createStyles } from './styles'; import ReusableModal, { ReusableModalRef } from '../ReusableModal'; import WarningExistingUserModal from '../WarningExistingUserModal'; import useDeleteWallet from '../../hooks/useDeleteWallet'; import { strings } from '../../../../locales/i18n'; import { DELETE_WALLET_CONTAINER_ID, DELETE_WALLET_INPUT_BOX_ID, } from '../../../constants/test-ids'; import { tlc } from '../../../util/general'; import { useTheme } from '../../../util/theme'; import Device from '../../../util/device'; import Routes from '../../../constants/navigation/Routes'; const DELETE_KEYWORD = 'delete'; if (Device.isAndroid() && UIManager.setLayoutAnimationEnabledExperimental) { UIManager.setLayoutAnimationEnabledExperimental(true); } const DeleteWalletModal = () => { const navigation = useNavigation(); const { colors, themeAppearance } = useTheme(); const styles = createStyles(colors); const modalRef = useRef(null); const [showConfirm, setShowConfirm] = useState(false); const [deleteText, setDeleteText] = useState(''); const [disableButton, setDisableButton] = useState(true); const [resetWalletState, deleteUser] = useDeleteWallet(); const showConfirmModal = () => { setShowConfirm(true); LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut); }; const isTextDelete = (text: string) => tlc(text) === DELETE_KEYWORD; const checkDelete = (text: string) => { setDeleteText(text); setDisableButton(!isTextDelete(text)); }; const dismissModal = (cb?: () => void): void => modalRef?.current?.dismissModal(cb); const triggerClose = (): void => dismissModal(); const navigateOnboardingRoot = (): void => { navigation.reset({ routes: [ { name: Routes.ONBOARDING.ROOT_NAV, state: { routes: [ { name: Routes.ONBOARDING.NAV, params: { screen: Routes.ONBOARDING.ONBOARDING, params: { delete: true }, }, }, ], }, }, ], }); }; const deleteWallet = async () => { triggerClose(); await resetWalletState(); await deleteUser(); InteractionManager.runAfterInteractions(() => { navigateOnboardingRoot(); }); }; return ( {showConfirm ? ( {strings('login.type_delete', { [DELETE_KEYWORD]: DELETE_KEYWORD, })} ) : ( {strings('login.are_you_sure')} {strings('login.your_current_wallet')} {strings('login.removed_from')} {strings('login.this_action')} {strings('login.you_can_only')} {strings('login.recovery_phrase')} {strings('login.metamask_does_not')} )} ); }; export default React.memo(DeleteWalletModal);