From ec0ada31bbd1889dd3b13acb98a8525737e3ba56 Mon Sep 17 00:00:00 2001 From: RadoslavDimchev Date: Fri, 19 Jan 2024 00:07:36 +0200 Subject: [PATCH] fix: problem with prerendering of generating mnemonic --- .../KeyGeneration/KeyGeneration.tsx | 16 +++++++++++++++- .../KeyGeneration/RecoveryPhrase.tsx | 17 ++--------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/pages/ValidatorOnboarding/KeyGeneration/KeyGeneration.tsx b/src/pages/ValidatorOnboarding/KeyGeneration/KeyGeneration.tsx index 66ff460e..e0a5e873 100644 --- a/src/pages/ValidatorOnboarding/KeyGeneration/KeyGeneration.tsx +++ b/src/pages/ValidatorOnboarding/KeyGeneration/KeyGeneration.tsx @@ -1,6 +1,9 @@ +import { useEffect } from 'react' import { Stack, YStack } from 'tamagui' import { Text } from '@status-im/components' -import { useSelector } from 'react-redux' +import { generateMnemonic } from 'web-bip39' +import { useDispatch, useSelector } from 'react-redux' +import wordlist from 'web-bip39/wordlists/english' import KeyGenerationHeader from './KeyGenerationHeader/KeyGenerationHeader' import RecoveryMechanism from './RecoveryMechanism/RecoveryMechanism' @@ -9,11 +12,22 @@ import RecoveryPhrase from './RecoveryPhrase' import ConfirmRecoveryPhrase from './ConfirmRecoveryPhrase/ConfirmRecoveryPhrase' import { BOTH_KEY_AND_RECOVERY, KEYSTORE_FILES, RECOVERY_PHRASE } from '../../../constants' import { RootState } from '../../../redux/store' +import { setGeneratedMnemonic } from '../../../redux/ValidatorOnboarding/KeyGeneration/slice' const KeyGeneration = () => { const { recoveryMechanism, isConfirmPhraseStage } = useSelector( (state: RootState) => state.keyGeneration, ) + const dispatch = useDispatch() + + useEffect(() => { + getMnemonic() + }, []) + + const getMnemonic = async () => { + const mnemonic = await generateMnemonic(wordlist, 256) + dispatch(setGeneratedMnemonic(mnemonic.split(' '))) + } const isKeystoreFiles = recoveryMechanism === KEYSTORE_FILES || recoveryMechanism === BOTH_KEY_AND_RECOVERY diff --git a/src/pages/ValidatorOnboarding/KeyGeneration/RecoveryPhrase.tsx b/src/pages/ValidatorOnboarding/KeyGeneration/RecoveryPhrase.tsx index b2b5259c..680e7f55 100644 --- a/src/pages/ValidatorOnboarding/KeyGeneration/RecoveryPhrase.tsx +++ b/src/pages/ValidatorOnboarding/KeyGeneration/RecoveryPhrase.tsx @@ -2,14 +2,11 @@ import { Stack, XStack, YStack } from 'tamagui' import { Button, InformationBox, Text } from '@status-im/components' import { CloseCircleIcon, CopyIcon, CheckIcon } from '@status-im/icons' import { useEffect, useState } from 'react' -import { generateMnemonic } from 'web-bip39' -import { useDispatch, useSelector } from 'react-redux' -import wordlist from 'web-bip39/wordlists/english' +import { useSelector } from 'react-redux' import { RootState } from '../../../redux/store' -import { setGeneratedMnemonic } from '../../../redux/ValidatorOnboarding/KeyGeneration/slice' -import styles from './index.module.css' import { copyFunction } from '../../../utilities' +import styles from './index.module.css' type RecoveryPhraseProps = { isKeystoreFiles: boolean @@ -20,21 +17,11 @@ const RecoveryPhrase = ({ isKeystoreFiles }: RecoveryPhraseProps) => { const [isCopied, setIsCopied] = useState(false) const [isTimeoutActive, setIsTimeoutActive] = useState(false) const { generatedMnemonic } = useSelector((state: RootState) => state.keyGeneration) - const dispatch = useDispatch() - - useEffect(() => { - getMnemonic() - }, []) useEffect(() => { setIsCopied(false) }, [generatedMnemonic]) - const getMnemonic = async () => { - const mnemonic = await generateMnemonic(wordlist, 256) - dispatch(setGeneratedMnemonic(mnemonic.split(' '))) - } - const revealHandler = () => { setIsReveal(state => !state) }