From ab1b0e722bfb057b9f748d2d88b7ea5ba7c5213d Mon Sep 17 00:00:00 2001 From: LeeAlephium Date: Thu, 4 Aug 2022 09:12:44 -0400 Subject: [PATCH] Clear up typechecking errors --- package-lock.json | 14 +++++++------- package.json | 2 +- src/screens/LoginScreen.tsx | 24 ++++++++++++++---------- src/screens/NewAddressScreen.tsx | 10 +++++++--- src/utils/crypto.ts | 4 ++-- 5 files changed, 31 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5da0ca4f..ae58992b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "alephium-mobile-wallet", "version": "0.0.1", "dependencies": { - "@alephium/sdk": "0.0.12", + "@alephium/sdk": "^0.0.14", "@craftzdog/react-native-buffer": "^6.0.4", "@react-native-async-storage/async-storage": "~1.17.3", "@react-navigation/native": "^6.0.10", @@ -69,9 +69,9 @@ } }, "node_modules/@alephium/sdk": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/@alephium/sdk/-/sdk-0.0.12.tgz", - "integrity": "sha512-NhVxKlvF8QEF2NDl+OCMaNKm2FvMvgWxteKMB9wVVtNqweCaFqSO0wxrMD5+iE8u/aRpe96kaFGgaEJt9wTMsw==", + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@alephium/sdk/-/sdk-0.0.14.tgz", + "integrity": "sha512-/XTsfQKmX4ml/7Z7LRXx4NebeWcohxUWRqaJHBvIJqSI4AESmzV7nNUGqdgPaLZrSMXOChhc3B02+7gWC7XuKg==", "dependencies": { "base-x": "^4.0.0", "bcfg": "~0.1.6", @@ -24457,9 +24457,9 @@ }, "dependencies": { "@alephium/sdk": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/@alephium/sdk/-/sdk-0.0.12.tgz", - "integrity": "sha512-NhVxKlvF8QEF2NDl+OCMaNKm2FvMvgWxteKMB9wVVtNqweCaFqSO0wxrMD5+iE8u/aRpe96kaFGgaEJt9wTMsw==", + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@alephium/sdk/-/sdk-0.0.14.tgz", + "integrity": "sha512-/XTsfQKmX4ml/7Z7LRXx4NebeWcohxUWRqaJHBvIJqSI4AESmzV7nNUGqdgPaLZrSMXOChhc3B02+7gWC7XuKg==", "requires": { "base-x": "^4.0.0", "bcfg": "~0.1.6", diff --git a/package.json b/package.json index 85c77780..263cb300 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"" }, "dependencies": { - "@alephium/sdk": "0.0.12", + "@alephium/sdk": "^0.0.14", "@craftzdog/react-native-buffer": "^6.0.4", "@react-native-async-storage/async-storage": "~1.17.3", "@react-navigation/native": "^6.0.10", diff --git a/src/screens/LoginScreen.tsx b/src/screens/LoginScreen.tsx index c848f6fd..9c0d09fe 100644 --- a/src/screens/LoginScreen.tsx +++ b/src/screens/LoginScreen.tsx @@ -63,6 +63,18 @@ const LoginScreen = ({ navigation, route }: ScreenProps) => { }, []) ) + const openWallet = useCallback(async () => { + const wallet = await walletOpenAsyncUnsafe(pinCode, storedActiveEncryptedWallet.mnemonic, pbkdf2, mnemonicToSeed) + dispatch( + activeWalletChanged({ + ...storedActiveEncryptedWallet, + mnemonic: wallet.mnemonic + }) + ) + setPinCode('') + navigation.navigate('DashboardScreen') + }, [dispatch, pinCode, storedActiveEncryptedWallet, navigation]) + useEffect(() => { if (!pinFullyEntered) return @@ -70,21 +82,13 @@ const LoginScreen = ({ navigation, route }: ScreenProps) => { try { dispatch(pinEntered(pinCode)) - const wallet = await walletOpenAsyncUnsafe(pinCode, storedActiveEncryptedWallet.mnemonic, pbkdf2, mnemonicToSeed) - dispatch( - activeWalletChanged({ - ...storedActiveEncryptedWallet, - mnemonic: wallet.mnemonic - }) - ) - setPinCode('') - navigation.navigate('DashboardScreen') + openWallet() } catch (e) { setShownInstructions(errorInstructionSet) setPinCode('') console.error(`Could not unlock wallet ${storedActiveEncryptedWallet.name}`, e) } - }, [dispatch, pinCode, pinFullyEntered, storedActiveEncryptedWallet, navigation]) + }, [dispatch, pinCode, pinFullyEntered, openWallet, storedActiveEncryptedWallet]) return ( diff --git a/src/screens/NewAddressScreen.tsx b/src/screens/NewAddressScreen.tsx index ce170f57..33480ef6 100644 --- a/src/screens/NewAddressScreen.tsx +++ b/src/screens/NewAddressScreen.tsx @@ -24,7 +24,7 @@ import { walletImportAsyncUnsafe } from '@alephium/sdk' import { StackScreenProps } from '@react-navigation/stack' -import { useEffect, useRef, useState } from 'react' +import { useCallback, useEffect, useRef, useState } from 'react' import { ScrollView, StyleSheet, View } from 'react-native' import RNPickerSelect from 'react-native-picker-select' import styled from 'styled-components/native' @@ -69,13 +69,17 @@ const NewAddressScreen = ({ navigation }: ScreenProps) => { color: coloredLabel?.color } - useEffect(() => { + const importWallet = useCallback(async () => { const wallet = await walletImportAsyncUnsafe(mnemonicToSeed, activeWallet.mnemonic) setSeed(wallet.seed) generateNewAddress(wallet.seed) + }, [activeWallet]) + + useEffect(() => { + importWallet() // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + }, [importWallet]) const generateNewAddress = (seed?: Buffer, inGroup?: number) => { if (!seed) return diff --git a/src/utils/crypto.ts b/src/utils/crypto.ts index 6109a8ac..48407aab 100644 --- a/src/utils/crypto.ts +++ b/src/utils/crypto.ts @@ -18,9 +18,9 @@ along with the library. If not, see . import rnPbkdf2 from 'react-native-fast-pbkdf2' -export const pbkdf2 = (password: string, salt: Buffer): Promise => { +export const pbkdf2 = async (password: string, salt: Buffer): Promise => { const _salt = salt.toString('base64') - const data = rnPbkdf2.derive(password, _salt, 10000, 32, 'sha-256') + const data = await rnPbkdf2.derive(password, _salt, 10000, 32, 'sha-256') return Buffer.from(data, 'base64') }