Skip to content

Commit

Permalink
ethereum.setAppParams
Browse files Browse the repository at this point in the history
  • Loading branch information
fan-zhang-sv committed Oct 23, 2024
1 parent ee59560 commit 7ba8572
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 5 deletions.
22 changes: 17 additions & 5 deletions packages/wallet-sdk/src/util/provider.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { vi } from 'vitest';

import {
CBInjectedProvider,
CBWindow,
checkErrorForInvalidRequestArgs,
fetchRPCRequest,
Expand Down Expand Up @@ -110,11 +111,10 @@ describe('Utils', () => {
});

describe('Browser Provider', () => {
class MockCipherProviderClass {
public isCoinbaseBrowser = true;
}

const mockCipherProvider = new MockCipherProviderClass() as unknown as ProviderInterface;
const mockCipherProvider = {
isCoinbaseBrowser: true,
setAppParams: vi.fn(),
} as unknown as CBInjectedProvider;

beforeAll(() => {
window.coinbaseWalletExtension = undefined;
Expand All @@ -138,6 +138,12 @@ describe('Utils', () => {
},
})
).toBe(mockCipherProvider);
expect(mockCipherProvider.setAppParams).toHaveBeenCalledWith({
appName: 'Dapp',
appChainIds: [],
appLogoUrl: null,
options: 'all',
});
});

it('smartWalletOnly - Should still return injected browser provider', () => {
Expand All @@ -153,6 +159,12 @@ describe('Utils', () => {
},
})
).toBe(mockCipherProvider);
expect(mockCipherProvider.setAppParams).toHaveBeenCalledWith({
appName: 'Dapp',
appChainIds: [],
appLogoUrl: null,
options: 'smartWalletOnly',
});
});

it('should handle exception when accessing window.top', () => {
Expand Down
12 changes: 12 additions & 0 deletions packages/wallet-sdk/src/util/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ export interface CBWindow {
export interface CBInjectedProvider extends ProviderInterface {
isCoinbaseBrowser?: boolean;
setAppInfo?: (...args: unknown[]) => unknown;
setAppParams?: (params: Record<string, unknown>) => void;
}

function getCoinbaseInjectedLegacyProvider(): CBInjectedProvider | undefined {
Expand All @@ -52,6 +53,16 @@ function getInjectedEthereum(): CBInjectedProvider | undefined {
}
}

function flattenParams({
metadata,
preference,
}: Readonly<ConstructorOptions>): Record<string, unknown> {
return {
...metadata,
...preference,
};
}

export function getCoinbaseInjectedProvider({
metadata,
preference,
Expand All @@ -67,6 +78,7 @@ export function getCoinbaseInjectedProvider({

const ethereum = getInjectedEthereum();
if (ethereum?.isCoinbaseBrowser) {
ethereum.setAppParams?.(flattenParams({ metadata, preference }));
return ethereum;
}

Expand Down

0 comments on commit 7ba8572

Please sign in to comment.