diff --git a/packages/snap/snap.manifest.json b/packages/snap/snap.manifest.json index 84a7bf02..bb2b869d 100644 --- a/packages/snap/snap.manifest.json +++ b/packages/snap/snap.manifest.json @@ -1,5 +1,5 @@ { - "version": "1.4.2", + "version": "1.4.3", "description": "Manage Bitcoin using MetaMask", "proposedName": "Bitcoin", "repository": { @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snap-bitcoin-wallet.git" }, "source": { - "shasum": "QcEyQw877Qk+uanuNyo9sJ0NqTMPyy3gO5wlE+eFXNM=", + "shasum": "On9X6VsyK9Nr8Zs0DmfA0SCKFsO8ayVV2oqNlGDpMFc=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/snap/src/handlers/CronHandler.test.ts b/packages/snap/src/handlers/CronHandler.test.ts index e4eacffa..4921aff4 100644 --- a/packages/snap/src/handlers/CronHandler.test.ts +++ b/packages/snap/src/handlers/CronHandler.test.ts @@ -127,14 +127,14 @@ describe('CronHandler', () => { }); }); - describe('fullScanSelectedAccounts', () => { + describe('syncSelectedAccounts', () => { const mockAccounts = [ mock({ id: 'account-1' }), mock({ id: 'account-2' }), mock({ id: 'account-3' }), ]; const request = { - method: CronMethod.FullScanSelectedAccounts, + method: CronMethod.SyncSelectedAccounts, params: { accountIds: ['account-1', 'account-2'] }, } as unknown as JsonRpcRequest; @@ -150,12 +150,14 @@ describe('CronHandler', () => { await handler.route(request); expect(mockAccountUseCases.list).toHaveBeenCalled(); - expect(mockAccountUseCases.fullScan).toHaveBeenCalledTimes(2); - expect(mockAccountUseCases.fullScan).toHaveBeenCalledWith( + expect(mockAccountUseCases.synchronize).toHaveBeenCalledTimes(2); + expect(mockAccountUseCases.synchronize).toHaveBeenCalledWith( mockAccounts[0], + 'metamask', ); - expect(mockAccountUseCases.fullScan).toHaveBeenCalledWith( + expect(mockAccountUseCases.synchronize).toHaveBeenCalledWith( mockAccounts[1], + 'metamask', ); }); @@ -166,7 +168,7 @@ describe('CronHandler', () => { }); await handler.route(request); - expect(mockAccountUseCases.fullScan).not.toHaveBeenCalled(); + expect(mockAccountUseCases.synchronize).not.toHaveBeenCalled(); }); it('propagates errors from list', async () => { @@ -178,14 +180,14 @@ describe('CronHandler', () => { it('completes successfully even if some accounts fail to scan', async () => { mockAccountUseCases.list.mockResolvedValue(mockAccounts); - mockAccountUseCases.fullScan + mockAccountUseCases.synchronize .mockResolvedValueOnce(undefined) .mockRejectedValueOnce(new Error('scan failed')); const result = await handler.route(request); expect(result).toBeUndefined(); - expect(mockAccountUseCases.fullScan).toHaveBeenCalledTimes(2); + expect(mockAccountUseCases.synchronize).toHaveBeenCalledTimes(2); }); }); diff --git a/packages/snap/src/handlers/CronHandler.ts b/packages/snap/src/handlers/CronHandler.ts index 2f7e376c..e4b33668 100644 --- a/packages/snap/src/handlers/CronHandler.ts +++ b/packages/snap/src/handlers/CronHandler.ts @@ -13,7 +13,7 @@ import type { SendFlowUseCases, AccountUseCases } from '../use-cases'; export enum CronMethod { SynchronizeAccounts = 'synchronizeAccounts', RefreshRates = 'refreshRates', - FullScanSelectedAccounts = 'fullScanSelectedAccounts', + SyncSelectedAccounts = 'syncSelectedAccounts', FullScanAccount = 'fullScanAccount', } @@ -21,7 +21,7 @@ export const SendFormRefreshRatesRequest = object({ interfaceId: string(), }); -export const FullScanSelectedAccountsRequest = object({ +export const SyncSelectedAccountsRequest = object({ accountIds: array(string()), }); @@ -66,9 +66,9 @@ export class CronHandler { assert(params, SendFormRefreshRatesRequest); return this.#sendFlowUseCases.refresh(params.interfaceId); } - case CronMethod.FullScanSelectedAccounts: { - assert(params, FullScanSelectedAccountsRequest); - return this.fullScanSelectedAccounts(params.accountIds); + case CronMethod.SyncSelectedAccounts: { + assert(params, SyncSelectedAccountsRequest); + return this.syncSelectedAccounts(params.accountIds); } case CronMethod.FullScanAccount: { assert(params, FullScanAccountRequest); @@ -112,7 +112,7 @@ export class CronHandler { } } - async fullScanSelectedAccounts(accountIds: string[]): Promise { + async syncSelectedAccounts(accountIds: string[]): Promise { const accountIdSet = new Set(accountIds); const allAccounts = await this.#accountsUseCases.list(); @@ -121,7 +121,7 @@ export class CronHandler { ); const scanPromises = selectedAccounts.map(async (account) => - this.#accountsUseCases.fullScan(account), + this.#accountsUseCases.synchronize(account, 'metamask'), ); await Promise.allSettled(scanPromises); diff --git a/packages/snap/src/handlers/KeyringHandler.ts b/packages/snap/src/handlers/KeyringHandler.ts index c3e43502..ace7daa9 100644 --- a/packages/snap/src/handlers/KeyringHandler.ts +++ b/packages/snap/src/handlers/KeyringHandler.ts @@ -354,7 +354,7 @@ export class KeyringHandler implements Keyring { // Schedule immediate background job to perform full scan await this.#snapClient.scheduleBackgroundEvent({ duration: 'PT1S', - method: CronMethod.FullScanSelectedAccounts, + method: CronMethod.SyncSelectedAccounts, params: { accountIds: accounts }, }); } diff --git a/packages/snap/src/infra/jsx/format.ts b/packages/snap/src/infra/jsx/format.ts index fc647bb5..12ca8101 100644 --- a/packages/snap/src/infra/jsx/format.ts +++ b/packages/snap/src/infra/jsx/format.ts @@ -78,3 +78,7 @@ export const displayCaip10 = ( ): CaipAccountId => { return `${networkToScope[network]}:${address}`; }; + +export const displayNetwork = (network: Network): string => { + return network.charAt(0).toUpperCase() + network.slice(1); +}; diff --git a/packages/snap/src/infra/jsx/unified-send-flow/UnifiedSendFormView.tsx b/packages/snap/src/infra/jsx/unified-send-flow/UnifiedSendFormView.tsx index 6edc75ba..b73ffedb 100644 --- a/packages/snap/src/infra/jsx/unified-send-flow/UnifiedSendFormView.tsx +++ b/packages/snap/src/infra/jsx/unified-send-flow/UnifiedSendFormView.tsx @@ -20,6 +20,7 @@ import { displayCaip10, displayExchangeAmount, displayExplorerUrl, + displayNetwork, isValidSnapLinkProtocol, translate, } from '../format'; @@ -62,7 +63,7 @@ export const UnifiedSendFormView: SnapComponent = ({ {t('confirmation.estimatedChanges.send')} - + -{displayAmount(BigInt(amount), currency).replace(' BTC', '')} @@ -101,9 +102,9 @@ export const UnifiedSendFormView: SnapComponent = ({ {t('network')} - + - {network} + {displayNetwork(network)} {null}