import React, { useState } from 'react'; import { Alert, View } from 'react-native'; import { Button } from 'react-native-paper'; import { createWallet, resetWallet } from '../utils'; import { DialogComponent } from './Dialog'; import { NetworkDropdown } from './NetworkDropdown'; import { Account, AccountsState } from '../types'; import Accounts from './Accounts'; import CreateWallet from './CreateWallet'; import ResetWalletDialog from './ResetWalletDialog'; import styles from '../styles/stylesheet'; const HomeScreen = () => { const [isWalletCreated, setIsWalletCreated] = useState(false); const [isWalletCreating, setIsWalletCreating] = useState(false); const [walletDialog, setWalletDialog] = useState(false); const [resetWalletDialog, setResetWalletDialog] = useState(false); const [network, setNetwork] = useState('eth'); const [currentIndex, setCurrentIndex] = useState(0); const [phrase, setPhrase] = useState(''); const [accounts, setAccounts] = useState({ ethAccounts: [], cosmosAccounts: [], }); const hideWalletDialog = () => setWalletDialog(false); const hideResetDialog = () => setResetWalletDialog(false); const createWalletHandler = async () => { setIsWalletCreating(true); await new Promise(resolve => setTimeout(resolve, 2000)); const { mnemonic, ethAccounts, cosmosAccounts } = await createWallet(); ethAccounts && cosmosAccounts && setAccounts({ ethAccounts: [...accounts.ethAccounts, ethAccounts], cosmosAccounts: [...accounts.cosmosAccounts, cosmosAccounts], }); setWalletDialog(true); setIsWalletCreated(true); setPhrase(mnemonic); }; const confirmResetWallet = async () => { await resetWallet(); setIsWalletCreated(false); setIsWalletCreating(false); setAccounts({ ethAccounts: [], cosmosAccounts: [], }); setCurrentIndex(0); hideResetDialog(); setNetwork('eth'); }; const updateNetwork = (newNetwork: string) => { setNetwork(newNetwork); setCurrentIndex(0); }; const updateIndex = (index: number) => { setCurrentIndex(index); }; const updateAccounts = (account: Account) => { switch (network) { case 'eth': setAccounts({ ...accounts, ethAccounts: [...accounts.ethAccounts, account], }); break; case 'cosmos': setAccounts({ ...accounts, cosmosAccounts: [...accounts.cosmosAccounts, account], }); break; default: Alert.alert('Select a valid network!'); } }; return ( {isWalletCreated ? ( <> ) : ( )} ); }; export default HomeScreen;