import { useNavigation } from '@react-navigation/native'; import React, { useState } from 'react'; import { ActivityIndicator, StyleSheet, TextInput, View } from 'react-native'; import { NativeStackNavigationProp } from '@react-navigation/native-stack'; import { BlueFormLabel, BlueFormMultiInput, BlueSpacing20 } from '../../BlueComponents'; import { HDSegwitBech32Wallet, WatchOnlyWallet } from '../../class'; import presentAlert from '../../components/Alert'; import Button from '../../components/Button'; import SafeArea from '../../components/SafeArea'; import { useTheme } from '../../components/themes'; import { useStorage } from '../../hooks/context/useStorage'; import { AddWalletStackParamList } from '../../navigation/AddWalletStack'; type NavigationProp = NativeStackNavigationProp; const WalletsImportWallet = () => { const navigation = useNavigation(); const { colors } = useTheme(); const [loading, setLoading] = useState(false); const [importText, setImportText] = useState(''); const [walletType, setWalletType] = useState(''); const [passphrase, setPassphrase] = useState(''); const { addAndSaveWallet } = useStorage(); const styles = StyleSheet.create({ root: { paddingTop: 40, backgroundColor: colors.elevated, }, center: { flex: 1, marginHorizontal: 16, backgroundColor: colors.elevated, }, pathInput: { flexDirection: 'row', borderWidth: 1, borderBottomWidth: 0.5, minHeight: 44, height: 44, alignItems: 'center', marginVertical: 8, borderRadius: 4, paddingHorizontal: 8, color: '#81868e', borderColor: colors.formBorder, borderBottomColor: colors.formBorder, backgroundColor: colors.inputBackgroundColor, }, }); const importMnemonic = async () => { setLoading(true); try { let WalletClass; switch (walletType) { case HDSegwitBech32Wallet.type: WalletClass = HDSegwitBech32Wallet; break; case WatchOnlyWallet.type: WalletClass = WatchOnlyWallet; break; } if (!WalletClass) { throw new Error('Invalid wallet type'); } const wallet = new WalletClass(); wallet.setSecret(importText); // check wallet is type of HDSegwitBech32Wallet if (passphrase && wallet instanceof HDSegwitBech32Wallet) { wallet.setPassphrase(passphrase); } await wallet.fetchBalance(); // @ts-ignore: navigation navigation.getParent().pop(); addAndSaveWallet(wallet); } catch (e: any) { presentAlert({ message: e.message }); } finally { setLoading(false); } }; return ( Mnemonic Wallet type Passphrase