From 49f8e89eb52d2efad8919db8c6012cc46e228db5 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Thu, 3 Sep 2020 10:24:32 +0200 Subject: [PATCH] Derive using parent genesisHash (#420) --- .../extension-ui/src/Popup/Derive/SelectParent.tsx | 3 --- packages/extension-ui/src/Popup/Derive/index.tsx | 10 +++++++--- packages/extension-ui/src/messaging.ts | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/extension-ui/src/Popup/Derive/SelectParent.tsx b/packages/extension-ui/src/Popup/Derive/SelectParent.tsx index b5e9f727..8bfdd20c 100644 --- a/packages/extension-ui/src/Popup/Derive/SelectParent.tsx +++ b/packages/extension-ui/src/Popup/Derive/SelectParent.tsx @@ -60,9 +60,6 @@ export function SelectParent ({ isLocked, onDerivationConfirmed, parentAddress } const account = await validateDerivationPath(parentAddress, suriPath, parentPassword); assert(account, 'Unable to derive'); - - console.log(account); - onDerivationConfirmed({ account, parentPassword }); } catch (error) { setSuriPath(null); diff --git a/packages/extension-ui/src/Popup/Derive/index.tsx b/packages/extension-ui/src/Popup/Derive/index.tsx index b1727929..c08e08ce 100644 --- a/packages/extension-ui/src/Popup/Derive/index.tsx +++ b/packages/extension-ui/src/Popup/Derive/index.tsx @@ -5,7 +5,7 @@ import React, { useCallback, useContext, useState } from 'react'; import { useParams } from 'react-router'; -import { ActionContext, Address, BackButton, ButtonArea, NextStepButton, VerticalSpace } from '../../components'; +import { AccountContext, ActionContext, Address, BackButton, ButtonArea, NextStepButton, VerticalSpace } from '../../components'; import { deriveAccount } from '../../messaging'; import { HeaderWithSteps, Name, Password } from '../../partials'; import { SelectParent } from './SelectParent'; @@ -29,6 +29,7 @@ interface ConfirmState { function Derive ({ isLocked }: Props): React.ReactElement { const onAction = useContext(ActionContext); + const { accounts } = useContext(AccountContext); const { address: parentAddress } = useParams(); const [isBusy, setIsBusy] = useState(false); const [account, setAccount] = useState(null); @@ -41,14 +42,17 @@ function Derive ({ isLocked }: Props): React.ReactElement { return; } + const parentAccount = accounts.find((a) => a.address === parentAddress); + const genesisHash = parentAccount?.genesisHash || null; + setIsBusy(true); - deriveAccount(parentAddress, account.suri, parentPassword, name, password) + deriveAccount(parentAddress, account.suri, parentPassword, name, password, genesisHash) .then(() => onAction('/')) .catch((error): void => { setIsBusy(false); console.error(error); }); - }, [account, name, password, onAction, parentAddress, parentPassword]); + }, [account, accounts, name, password, onAction, parentAddress, parentPassword]); const _onDerivationConfirmed = useCallback(({ account, parentPassword }: ConfirmState) => { setAccount(account); diff --git a/packages/extension-ui/src/messaging.ts b/packages/extension-ui/src/messaging.ts index 299c3f1e..2e394f17 100644 --- a/packages/extension-ui/src/messaging.ts +++ b/packages/extension-ui/src/messaging.ts @@ -191,8 +191,8 @@ export async function validateDerivationPath (parentAddress: string, suri: strin return sendMessage('pri(derivation.validate)', { parentAddress, parentPassword, suri }); } -export async function deriveAccount (parentAddress: string, suri: string, parentPassword: string, name: string, password: string): Promise { - return sendMessage('pri(derivation.create)', { name, parentAddress, parentPassword, password, suri }); +export async function deriveAccount (parentAddress: string, suri: string, parentPassword: string, name: string, password: string, genesisHash: string | null): Promise { + return sendMessage('pri(derivation.create)', { genesisHash, name, parentAddress, parentPassword, password, suri }); } export async function jsonRestoreWindowOpen (): Promise {