diff --git a/app/core/SnapKeyring/MultichainWalletSnapClient.test.ts b/app/core/SnapKeyring/MultichainWalletSnapClient.test.ts index 33a3e46dbacc..2b9ca6313915 100644 --- a/app/core/SnapKeyring/MultichainWalletSnapClient.test.ts +++ b/app/core/SnapKeyring/MultichainWalletSnapClient.test.ts @@ -11,6 +11,7 @@ import Engine from '../Engine'; import { Sender } from '@metamask/keyring-snap-client'; import { SnapKeyring } from '@metamask/eth-snap-keyring'; import { BtcScope, SolScope } from '@metamask/keyring-api'; +import { BITCOIN_WALLET_SNAP_ID } from './BitcoinWalletSnap'; jest.mock('../Engine', () => ({ controllerMessenger: { @@ -292,6 +293,33 @@ describe('Wallet Client Implementations', () => { const bitcoinClient = new BitcoinWalletSnapClient(mockSnapKeyringOptions); expect(bitcoinClient.getScope()).toEqual(BtcScope.Mainnet); }); + + it('adds synchronize parameter to createAccount', async () => { + const mockOptions = { + scope: BtcScope.Mainnet, + accountNameSuggestion: 'Bitcoin Account 1', + entropySource: 'test-entropy', + }; + + const mockKeyring = { + createAccount: jest.fn(), + }; + + (Engine.controllerMessenger.call as jest.Mock).mockImplementationOnce( + async (_, __, callback) => { + await callback({ keyring: mockKeyring }); + }, + ); + + const bitcoinClient = new BitcoinWalletSnapClient(mockSnapKeyringOptions); + await bitcoinClient.createAccount(mockOptions); + + expect(mockKeyring.createAccount).toHaveBeenCalledWith( + BITCOIN_WALLET_SNAP_ID, + { ...mockOptions, synchronize: true }, + mockSnapKeyringOptions, + ); + }); }); describe('SolanaWalletSnapClient', () => { diff --git a/app/core/SnapKeyring/MultichainWalletSnapClient.ts b/app/core/SnapKeyring/MultichainWalletSnapClient.ts index 99d4591f7864..eccf5c0292ec 100644 --- a/app/core/SnapKeyring/MultichainWalletSnapClient.ts +++ b/app/core/SnapKeyring/MultichainWalletSnapClient.ts @@ -38,6 +38,7 @@ export const WALLET_SNAP_MAP = { export interface MultichainWalletSnapOptions { scope: CaipChainId; + synchronize?: boolean; ///: BEGIN:ONLY_INCLUDE_IF(multi-srp) entropySource?: string; accountNameSuggestion?: string; @@ -253,6 +254,16 @@ export class BitcoinWalletSnapClient extends MultichainWalletSnapClient { protected getSnapSender(): Sender { return new BitcoinWalletSnapSender(); } + + async createAccount( + options: MultichainWalletSnapOptions, + snapKeyringOptions?: SnapKeyringOptions, + ) { + return super.createAccount( + { ...options, synchronize: true }, + snapKeyringOptions, + ); + } } export class SolanaWalletSnapClient extends MultichainWalletSnapClient { diff --git a/package.json b/package.json index 632992760c25..0e92fc38a751 100644 --- a/package.json +++ b/package.json @@ -165,7 +165,7 @@ "@metamask/approval-controller": "^7.1.3", "@metamask/assets-controllers": "^61.0.0", "@metamask/base-controller": "^8.0.0", - "@metamask/bitcoin-wallet-snap": "^0.9.0", + "@metamask/bitcoin-wallet-snap": "^0.12.1", "@metamask/bridge-controller": "^21.0.0", "@metamask/bridge-status-controller": "^18.0.0", "@metamask/chain-agnostic-permission": "^0.3.0", diff --git a/yarn.lock b/yarn.lock index 0ab68b84bc94..a5ff72dca25b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4765,10 +4765,10 @@ "@metamask/utils" "^11.2.0" immer "^9.0.6" -"@metamask/bitcoin-wallet-snap@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@metamask/bitcoin-wallet-snap/-/bitcoin-wallet-snap-0.9.0.tgz#47014c75c1e1ed84fef57177901f458fd2b6510a" - integrity sha512-983twhfOfSCQljT+eV8JLcV0bqGVMObXnEy8TOFAkwwRW2I1ZsVRAfylbGiSwxlhxLntcpLqVu0Sj29xNyA06Q== +"@metamask/bitcoin-wallet-snap@^0.12.1": + version "0.12.1" + resolved "https://registry.yarnpkg.com/@metamask/bitcoin-wallet-snap/-/bitcoin-wallet-snap-0.12.1.tgz#2b60ac613992e97302a9898b3d4030395b2b2123" + integrity sha512-8gsN7a5OyRMg6c0jw0tDrqePHjFv9uHi36eL2PdTMUYU9J3dL/t9cOWe/3RPSwu7tw/tMNXyM4mzwZvq7Kxs2Q== "@metamask/bridge-controller@^21.0.0": version "21.0.0"