From 62b243c4c389e9f632a13f53a8b3392c59710ece Mon Sep 17 00:00:00 2001 From: Felix Zhang <22125939+fan-zhang-sv@users.noreply.github.com> Date: Fri, 25 Oct 2024 13:36:36 -0700 Subject: [PATCH] Passing SDK config params to injected provider (#1436) * ethereum.setAppParams * setAppInfo * test --- packages/wallet-sdk/src/util/provider.test.ts | 33 +++++++++++++++---- packages/wallet-sdk/src/util/provider.ts | 6 ++-- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/packages/wallet-sdk/src/util/provider.test.ts b/packages/wallet-sdk/src/util/provider.test.ts index 4eecf91fbb..8a605382ac 100644 --- a/packages/wallet-sdk/src/util/provider.test.ts +++ b/packages/wallet-sdk/src/util/provider.test.ts @@ -1,6 +1,7 @@ import { vi } from 'vitest'; import { + CBInjectedProvider, CBWindow, checkErrorForInvalidRequestArgs, fetchRPCRequest, @@ -88,7 +89,12 @@ describe('Utils', () => { }) ).toBe(extensionProvider); - expect(mockSetAppInfo).toHaveBeenCalledWith('Dapp', null, []); + expect(mockSetAppInfo).toHaveBeenCalledWith( + 'Dapp', + null, + [], + expect.objectContaining({ options: 'all' }) + ); }); it('smartWalletOnly - should return undefined', () => { @@ -110,11 +116,10 @@ describe('Utils', () => { }); describe('Browser Provider', () => { - class MockCipherProviderClass { - public isCoinbaseBrowser = true; - } - - const mockCipherProvider = new MockCipherProviderClass() as unknown as ProviderInterface; + const mockCipherProvider = { + isCoinbaseBrowser: true, + setAppInfo: vi.fn(), + } as unknown as CBInjectedProvider; beforeAll(() => { window.coinbaseWalletExtension = undefined; @@ -138,6 +143,14 @@ describe('Utils', () => { }, }) ).toBe(mockCipherProvider); + expect(mockCipherProvider.setAppInfo).toHaveBeenCalledWith( + 'Dapp', + null, + [], + expect.objectContaining({ + options: 'all', + }) + ); }); it('smartWalletOnly - Should still return injected browser provider', () => { @@ -153,6 +166,14 @@ describe('Utils', () => { }, }) ).toBe(mockCipherProvider); + expect(mockCipherProvider.setAppInfo).toHaveBeenCalledWith( + 'Dapp', + null, + [], + expect.objectContaining({ + options: 'all', + }) + ); }); it('should handle exception when accessing window.top', () => { diff --git a/packages/wallet-sdk/src/util/provider.ts b/packages/wallet-sdk/src/util/provider.ts index 43b9c656f4..3f48532f86 100644 --- a/packages/wallet-sdk/src/util/provider.ts +++ b/packages/wallet-sdk/src/util/provider.ts @@ -56,17 +56,19 @@ export function getCoinbaseInjectedProvider({ metadata, preference, }: Readonly): ProviderInterface | undefined { + const { appName, appLogoUrl, appChainIds } = metadata; + if (preference.options !== 'smartWalletOnly') { const extension = getCoinbaseInjectedLegacyProvider(); if (extension) { - const { appName, appLogoUrl, appChainIds } = metadata; - extension.setAppInfo?.(appName, appLogoUrl, appChainIds); + extension.setAppInfo?.(appName, appLogoUrl, appChainIds, preference); return extension; } } const ethereum = getInjectedEthereum(); if (ethereum?.isCoinbaseBrowser) { + ethereum.setAppInfo?.(appName, appLogoUrl, appChainIds, preference); return ethereum; }