/** * Sample React Native App * https://github.com/facebook/react-native * * @format */ import React, {useCallback, useState} from 'react'; import {Button, SafeAreaView, StatusBar, Text, TextInput, useColorScheme,} from 'react-native'; import Clipboard from '@react-native-clipboard/clipboard'; import {Colors,} from 'react-native/Libraries/NewAppScreen'; import { accountInfo, derive, generateEntropy, generateMnemonicFromEntropy, hashMessage, seedFromEntropy, seedFromMnemonic } from '@haqq/provider-web3-utils'; function App(): JSX.Element { const isDarkMode = useColorScheme() === 'dark'; const [entropy, setEntropy] = useState(null) const [entropyInput, setEntropyInput] = useState("") const [mnemonic, setMnemonic] = useState('') const [seed, setSeed] = useState('') const [message, setMessage] = useState('') const [hashedMessage, setHashedMessage] = useState('') const [privateKey, setPrivateKey] = useState('') const [info, setInfo] = useState(null) const backgroundStyle = { backgroundColor: isDarkMode ? Colors.darker : Colors.lighter, }; const onPressGenerateEntropy = useCallback(async () => { const ent = await generateEntropy(32); setEntropy(ent) }, []) const onPressUseEntropy = useCallback(() => { setEntropy(Buffer.from(entropyInput, 'hex')) }, [entropyInput]) const onPressGenerateMnemonicFromEntropy = useCallback(async () => { try { if (entropy) { const mnemonicResult = await generateMnemonicFromEntropy(entropy); setMnemonic(mnemonicResult) } } catch (e) { if (e instanceof Error) { // tslint:disable-next-line:no-console console.log(e.message); } } }, [entropy]) const onPressCopyEntropy = useCallback(async () => { if (entropy) { Clipboard.setString(entropy.toString('hex')); } }, [entropy]) const onPressCopyMnemonic = useCallback(() => { Clipboard.setString(mnemonic); }, [mnemonic]) const onPressGenerateSeedFromEntropy = useCallback(async () => { try { if (entropy) { const seedPhrase = await seedFromEntropy(entropy); console.log('seedPhrase', seedPhrase) setSeed(seedPhrase) } } catch (e) { console.log('e', e) if (e instanceof Error) { // tslint:disable-next-line:no-console console.log(e.message); } } }, [entropy]) const onPressGenerateSeed = useCallback(async () => { if (mnemonic) { const seedResult = await seedFromMnemonic(mnemonic); setSeed(seedResult) } }, [mnemonic]) const onPressDerive = useCallback(async () => { if (seed) { const privateKeyResult = await derive(seed, 'm/44\'/60\'/0\'/0/0'); setPrivateKey(privateKeyResult) } }, [seed]) const onPressAccountInfo = useCallback(async () => { if (privateKey) { const infoResult = await accountInfo(privateKey); setInfo(infoResult) } }, [privateKey]) const onPressHashMessage = useCallback(async () => { const text = await hashMessage(message); setHashedMessage(text); }, [message]) return ( setEntropyInput(text)} value={entropyInput}/> {entropyInput.length === 0 ? (