diff --git a/ui/components/multichain/account-list-menu/account-list-menu.tsx b/ui/components/multichain/account-list-menu/account-list-menu.tsx index f10cb8558eb6..57b0f5084f76 100644 --- a/ui/components/multichain/account-list-menu/account-list-menu.tsx +++ b/ui/components/multichain/account-list-menu/account-list-menu.tsx @@ -243,6 +243,12 @@ export const AccountListMenu = ({ ///: BEGIN:ONLY_INCLUDE_IF(build-flask) const { pathname } = useLocation(); ///: END:ONLY_INCLUDE_IF + const [searchQuery, setSearchQuery] = useState(''); + const [actionMode, setActionMode] = useState(ACTION_MODES.LIST); + ///: BEGIN:ONLY_INCLUDE_IF(multi-srp) + const primaryKeyringId = useSelector(getMetaMaskKeyrings)[0]?.fingerprint; + const [selectedKeyringId, setSelectedKeyringId] = useState(primaryKeyringId); + ///: END:ONLY_INCLUDE_IF const hiddenAddresses = useSelector(getHiddenAccountsList); const updatedAccountsList = useSelector(getUpdatedAndSortedAccounts); const filteredUpdatedAccountList = useMemo( @@ -300,7 +306,7 @@ export const AccountListMenu = ({ history.push(CONFIRMATION_V_NEXT_ROUTE); } - await bitcoinWalletSnapClient.createAccount(network); + await bitcoinWalletSnapClient.createAccount(network, selectedKeyringId); }; ///: END:ONLY_INCLUDE_IF @@ -310,13 +316,6 @@ export const AccountListMenu = ({ WalletClientType.Solana, ); ///: END:ONLY_INCLUDE_IF - ///: BEGIN:ONLY_INCLUDE_IF(multi-srp) - const primaryKeyringId = useSelector(getMetaMaskKeyrings)[0]?.id; - const [selectedKeyringId, setSelectedKeyringId] = useState(primaryKeyringId); - ///: END:ONLY_INCLUDE_IF - - const [searchQuery, setSearchQuery] = useState(''); - const [actionMode, setActionMode] = useState(ACTION_MODES.LIST); let searchResults: MergedInternalAccount[] = filteredUpdatedAccountList; if (searchQuery) { @@ -561,6 +560,7 @@ export const AccountListMenu = ({ await solanaWalletSnapClient.createAccount( MultichainNetworks.SOLANA, + selectedKeyringId, ); }} data-testid="multichain-account-menu-popover-add-solana-account" diff --git a/ui/hooks/accounts/useMultichainWalletSnapClient.test.ts b/ui/hooks/accounts/useMultichainWalletSnapClient.test.ts index 071622559a06..38b1294e5ccc 100644 --- a/ui/hooks/accounts/useMultichainWalletSnapClient.test.ts +++ b/ui/hooks/accounts/useMultichainWalletSnapClient.test.ts @@ -75,12 +75,21 @@ describe('useMultichainWalletSnapClient', () => { mockHandleSnapRequest.mockResolvedValue(mockAccount); - await multichainWalletSnapClient.createAccount(network); + await multichainWalletSnapClient.createAccount( + network, + 'test-entropy-source', + ); expect(mockHandleSnapRequest).toHaveBeenCalledWith({ origin: 'metamask', snapId, handler: HandlerType.OnKeyringRequest, - request: expect.any(Object), + request: expect.objectContaining({ + params: expect.objectContaining({ + options: expect.objectContaining({ + entropySource: 'test-entropy-source', + }), + }), + }), }); }); diff --git a/ui/hooks/accounts/useMultichainWalletSnapClient.ts b/ui/hooks/accounts/useMultichainWalletSnapClient.ts index c5727c283450..949e295fd2d2 100644 --- a/ui/hooks/accounts/useMultichainWalletSnapClient.ts +++ b/ui/hooks/accounts/useMultichainWalletSnapClient.ts @@ -52,11 +52,18 @@ export class MultichainWalletSnapClient { this.#client = new KeyringClient(new MultichainWalletSnapSender(snapId)); } - async createAccount(scope: CaipChainId) { + async createAccount(scope: CaipChainId, entropySource?: string) { // This will trigger the Snap account creation flow (+ account renaming) - const account = await this.#client.createAccount({ - scope, - }); + const account = await this.#client.createAccount( + entropySource + ? ({ + scope, + entropySource, + } as Record) + : { + scope, + }, + ); // NOTE: The account's balance is going to be tracked automatically on when the new account // will be added to the Snap bridge keyring (see `MultichainBalancesController:#handleOnAccountAdded`).