diff --git a/.changelog/2124.internal.md b/.changelog/2124.internal.md new file mode 100644 index 0000000000..492aeff845 --- /dev/null +++ b/.changelog/2124.internal.md @@ -0,0 +1 @@ +Harden code against wrong imported account type diff --git a/src/app/pages/CreateWalletPage/index.tsx b/src/app/pages/CreateWalletPage/index.tsx index a104cdfe5c..4db0495278 100644 --- a/src/app/pages/CreateWalletPage/index.tsx +++ b/src/app/pages/CreateWalletPage/index.tsx @@ -26,7 +26,6 @@ import { ImportAccountsSelectionModal } from 'app/pages/OpenWalletPage/Features/ import { selectShowAccountsSelectionModal } from 'app/state/importaccounts/selectors' import { createWalletActions } from './slice' import { selectCheckbox, selectMnemonic } from './slice/selectors' -import { WalletType } from 'app/state/wallet/types' export interface CreateWalletProps {} @@ -95,7 +94,6 @@ export function CreateWalletPage(props: CreateWalletProps) { abort={() => { dispatch(importAccountsActions.clear()) }} - type={WalletType.Mnemonic} /> )} diff --git a/src/app/pages/OpenWalletPage/Features/FromBleLedger/index.tsx b/src/app/pages/OpenWalletPage/Features/FromBleLedger/index.tsx index 4010d35d03..e0466e72ba 100644 --- a/src/app/pages/OpenWalletPage/Features/FromBleLedger/index.tsx +++ b/src/app/pages/OpenWalletPage/Features/FromBleLedger/index.tsx @@ -70,7 +70,6 @@ export function FromBleLedger() { abort={() => { dispatch(importAccountsActions.clear()) }} - type={WalletType.BleLedger} /> )} diff --git a/src/app/pages/OpenWalletPage/Features/FromMnemonic/index.tsx b/src/app/pages/OpenWalletPage/Features/FromMnemonic/index.tsx index dab7bd2b3b..041f28c336 100644 --- a/src/app/pages/OpenWalletPage/Features/FromMnemonic/index.tsx +++ b/src/app/pages/OpenWalletPage/Features/FromMnemonic/index.tsx @@ -4,7 +4,6 @@ import { MnemonicValidation } from 'app/components/MnemonicValidation' import { importAccountsActions } from 'app/state/importaccounts' import { ImportAccountsSelectionModal } from 'app/pages/OpenWalletPage/Features/ImportAccountsSelectionModal' import { selectShowAccountsSelectionModal } from 'app/state/importaccounts/selectors' -import { WalletType } from 'app/state/wallet/types' export function FromMnemonic() { const dispatch = useDispatch() @@ -20,7 +19,6 @@ export function FromMnemonic() { abort={() => { dispatch(importAccountsActions.clear()) }} - type={WalletType.Mnemonic} /> )} diff --git a/src/app/pages/OpenWalletPage/Features/FromUsbLedger/index.tsx b/src/app/pages/OpenWalletPage/Features/FromUsbLedger/index.tsx index 45d0496f12..5dff2191c7 100644 --- a/src/app/pages/OpenWalletPage/Features/FromUsbLedger/index.tsx +++ b/src/app/pages/OpenWalletPage/Features/FromUsbLedger/index.tsx @@ -47,7 +47,6 @@ export function FromUsbLedger() { abort={() => { dispatch(importAccountsActions.clear()) }} - type={WalletType.UsbLedger} /> )} diff --git a/src/app/pages/OpenWalletPage/Features/ImportAccountsSelectionModal/__tests__/index.test.tsx b/src/app/pages/OpenWalletPage/Features/ImportAccountsSelectionModal/__tests__/index.test.tsx index 44cb2ae264..76f6ad6779 100644 --- a/src/app/pages/OpenWalletPage/Features/ImportAccountsSelectionModal/__tests__/index.test.tsx +++ b/src/app/pages/OpenWalletPage/Features/ImportAccountsSelectionModal/__tests__/index.test.tsx @@ -19,7 +19,7 @@ const renderComponent = (store: any, abortFunction = () => {}) => render( - + , ) @@ -57,7 +57,7 @@ describe('', () => { pathDisplay: `m/44'/474'/0'`, publicKey: '00', selected: false, - type: WalletType.Mnemonic, + type: WalletType.UsbLedger, }, ]), ) @@ -82,7 +82,7 @@ describe('', () => { pathDisplay: `m/44'/474'/0'`, publicKey: '00', selected: false, - type: WalletType.Mnemonic, + type: WalletType.UsbLedger, }, { address: 'oasis1qqv25adrld8jjquzxzg769689lgf9jxvwgjs8tha', @@ -91,7 +91,7 @@ describe('', () => { pathDisplay: `m/44'/474'/1'`, publicKey: '00', selected: false, - type: WalletType.Mnemonic, + type: WalletType.UsbLedger, }, ]), ) diff --git a/src/app/pages/OpenWalletPage/Features/ImportAccountsSelectionModal/index.tsx b/src/app/pages/OpenWalletPage/Features/ImportAccountsSelectionModal/index.tsx index bfdb92d356..69ca593e76 100644 --- a/src/app/pages/OpenWalletPage/Features/ImportAccountsSelectionModal/index.tsx +++ b/src/app/pages/OpenWalletPage/Features/ImportAccountsSelectionModal/index.tsx @@ -23,7 +23,7 @@ import { ResponsiveContext } from 'grommet/es6/contexts/ResponsiveContext' import { Spinner } from 'grommet/es6/components/Spinner' import { Text } from 'grommet/es6/components/Text' import { numberOfAccountPages } from 'app/state/importaccounts/saga' -import { WalletType, LedgerWalletType } from 'app/state/wallet/types' +import { WalletType } from 'app/state/wallet/types' import { ChoosePasswordFields } from 'app/components/Persist/ChoosePasswordFields' import { FormValue as ChoosePasswordFieldsFormValue } from 'app/components/Persist/ChoosePasswordInputFields' import { preventSavingInputsToUserData } from 'app/lib/preventSavingInputsToUserData' @@ -47,7 +47,6 @@ function ImportAccountsSelector({ accounts }: ImportAccountsSelectorSelectorProp interface ImportAccountsSelectionModalProps { abort: () => void - type: WalletType.Mnemonic | LedgerWalletType } interface FormValue extends ChoosePasswordFieldsFormValue {} @@ -61,10 +60,11 @@ export function ImportAccountsSelectionModal(props: ImportAccountsSelectionModal const error = importAccounts.error const selectedAccounts = useSelector(selectSelectedAccounts) const dispatch = useDispatch() + const type = accounts.length > 0 ? accounts[0].type : undefined const openAccounts = ({ value }: { value: FormValue }) => { dispatch( - props.type === WalletType.UsbLedger + type === WalletType.UsbLedger ? walletActions.openWalletsFromLedger({ choosePassword: value.password2 }) : walletActions.openWalletFromMnemonic({ choosePassword: value.password2 }), ) @@ -83,8 +83,8 @@ export function ImportAccountsSelectionModal(props: ImportAccountsSelectionModal const onNext = () => { dispatch(importAccountsActions.setPage(pageNum + 1)) - if (props.type === WalletType.UsbLedger || props.type === WalletType.BleLedger) { - dispatch(importAccountsActions.enumerateMoreAccountsFromLedger(props.type)) + if (type === WalletType.UsbLedger || type === WalletType.BleLedger) { + dispatch(importAccountsActions.enumerateMoreAccountsFromLedger(type)) } } diff --git a/src/app/pages/OpenWalletPage/__tests__/index.test.tsx b/src/app/pages/OpenWalletPage/__tests__/index.test.tsx index 88d85ebc2a..705042421e 100644 --- a/src/app/pages/OpenWalletPage/__tests__/index.test.tsx +++ b/src/app/pages/OpenWalletPage/__tests__/index.test.tsx @@ -1,9 +1,5 @@ -import React from 'react' -import { render, screen, waitFor } from '@testing-library/react' +import { render } from '@testing-library/react' import { MemoryRouter } from 'react-router-dom' -import { useSelector } from 'react-redux' -import { when } from 'jest-when' -import { selectShowAccountsSelectionModal } from 'app/state/importaccounts/selectors' import { SelectOpenMethod } from '..' jest.mock('app/lib/ledger', () => ({ @@ -39,18 +35,4 @@ describe('', () => { expect(container).toMatchSnapshot() }) - - it('should redirect user to ledger page', async () => { - when(useSelector as any) - .calledWith(selectShowAccountsSelectionModal) - .mockReturnValue(true) - - renderComponent() - - await waitFor(() => { - expect(screen.queryByText('openWallet.method.ledger')).toBeInTheDocument() - - expect(mockNavigate).toHaveBeenCalledWith('/open-wallet/ledger/usb') - }) - }) }) diff --git a/src/app/pages/OpenWalletPage/index.tsx b/src/app/pages/OpenWalletPage/index.tsx index e7f5483bed..f47d0da174 100644 --- a/src/app/pages/OpenWalletPage/index.tsx +++ b/src/app/pages/OpenWalletPage/index.tsx @@ -5,27 +5,13 @@ */ import { Anchor } from 'grommet/es6/components/Anchor' import { Box } from 'grommet/es6/components/Box' -import React, { useEffect } from 'react' -import { useSelector } from 'react-redux' -import { useNavigate } from 'react-router-dom' +import React from 'react' import { Trans, useTranslation } from 'react-i18next' import { ButtonLink } from 'app/components/ButtonLink' import { Header } from 'app/components/Header' -import { selectShowAccountsSelectionModal } from 'app/state/importaccounts/selectors' -import { runtimeIs } from 'config' export function SelectOpenMethod() { const { t } = useTranslation() - const navigate = useNavigate() - const showAccountsSelectionModal = useSelector(selectShowAccountsSelectionModal) - - useEffect(() => { - const isExtension = runtimeIs === 'extension' - - if (isExtension && showAccountsSelectionModal) { - navigate('/open-wallet/ledger/usb') - } - }, [navigate, showAccountsSelectionModal]) return (