From d84671b404d11937b58ee619e6fe43208d4af7a3 Mon Sep 17 00:00:00 2001 From: banklesss <105349292+banklesss@users.noreply.github.com> Date: Fri, 30 Aug 2024 16:07:52 +0200 Subject: [PATCH] refactor(catalyst): split the generation of voting tx and voting key (#3581) --- .../useCases/ConfirmPin/ConfirmPin.tsx | 69 +++++++++++++++++-- .../ConfirmVotingTx/ConfirmVotingTx.tsx | 8 +-- .../yoroi-wallets/cardano/cardano-wallet.ts | 15 +--- .../src/yoroi-wallets/cardano/types.ts | 4 +- .../src/yoroi-wallets/hooks/index.ts | 11 ++- .../src/catalyst/translators/context.tsx | 5 ++ .../src/catalyst/translators/state.test.tsx | 26 ++++++- .../src/catalyst/translators/state.tsx | 16 +++++ 8 files changed, 121 insertions(+), 33 deletions(-) diff --git a/apps/wallet-mobile/src/features/RegisterCatalyst/useCases/ConfirmPin/ConfirmPin.tsx b/apps/wallet-mobile/src/features/RegisterCatalyst/useCases/ConfirmPin/ConfirmPin.tsx index 2bbc805fdb..78c66b9195 100644 --- a/apps/wallet-mobile/src/features/RegisterCatalyst/useCases/ConfirmPin/ConfirmPin.tsx +++ b/apps/wallet-mobile/src/features/RegisterCatalyst/useCases/ConfirmPin/ConfirmPin.tsx @@ -1,23 +1,36 @@ import {useCatalyst} from '@yoroi/staking' import {useTheme} from '@yoroi/theme' import React from 'react' -import {ScrollView, StyleSheet, View, ViewProps} from 'react-native' +import {ActivityIndicator, ScrollView, StyleSheet, View, ViewProps} from 'react-native' import {SafeAreaView} from 'react-native-safe-area-context' +import {useMutation, UseMutationOptions} from 'react-query' import {Button, Spacer} from '../../../../components' import {BACKSPACE, NumericKeyboard} from '../../../../components/NumericKeyboard' import {Space} from '../../../../components/Space/Space' +import {generatePrivateKeyForCatalyst} from '../../../../yoroi-wallets/cardano/catalyst' +import {encryptWithPassword} from '../../../../yoroi-wallets/cardano/catalyst/catalystCipher' import {useNavigateTo} from '../../CatalystNavigator' import {Actions, Description, PinBox, Row, Stepper} from '../../common/components' import {useStrings} from '../../common/strings' export const ConfirmPin = () => { const strings = useStrings() + const {isDark} = useTheme() const styles = useStyles() - const {pin} = useCatalyst() + const {pin, votingKeyEncryptedChanged, catalystKeyHexChanged} = useCatalyst() const navigateTo = useNavigateTo() const [currentActivePin, setCurrentActivePin] = React.useState(1) + const {generateVotingKeys, isLoading} = useGenerateVotingKeys({ + onSuccess: ({catalystKeyHex, votingKeyEncrypted}) => { + votingKeyEncryptedChanged(votingKeyEncrypted) + catalystKeyHexChanged(catalystKeyHex) + + navigateTo.confirmTx() + }, + }) + const [pin1Value, setPin1Value] = React.useState(null) const [pin2Value, setPin2Value] = React.useState(null) const [pin3Value, setPin3Value] = React.useState(null) @@ -140,7 +153,7 @@ export const ConfirmPin = () => { ) const onNext = () => { - navigateTo.confirmTx() + generateVotingKeys(pin) } const handleOnPress = React.useCallback( @@ -208,17 +221,57 @@ export const ConfirmPin = () => { -