Skip to content

Commit 3cecdf3

Browse files
committed
removed web code
1 parent 3bf7a0c commit 3cecdf3

78 files changed

Lines changed: 727 additions & 7870 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/client/src/CoinbaseWalletSDK.native.test.ts

Lines changed: 0 additions & 56 deletions
This file was deleted.

packages/client/src/CoinbaseWalletSDK.native.ts

Lines changed: 0 additions & 55 deletions
This file was deleted.
Lines changed: 38 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,56 @@
11
import { CoinbaseWalletProvider } from './CoinbaseWalletProvider';
22
import { CoinbaseWalletSDK } from './CoinbaseWalletSDK';
3-
import { ProviderInterface } from ':core/provider/interface';
4-
import { getFavicon } from ':core/type/util';
5-
import { getCoinbaseInjectedProvider } from ':util/provider';
3+
import { MOBILE_SDK_RESPONSE_PATH } from ':core/constants';
64

7-
jest.mock(':core/type/util');
8-
jest.mock(':util/provider');
95
jest.mock('./CoinbaseWalletProvider');
6+
jest.mock(':core/storage/ScopedAsyncStorage');
107

118
describe('CoinbaseWalletSDK', () => {
12-
test('@makeWeb3Provider - return Coinbase Injected Provider', () => {
13-
const injectedProvider = {} as unknown as ProviderInterface;
14-
(getCoinbaseInjectedProvider as jest.Mock).mockReturnValue(injectedProvider);
15-
16-
const SDK = new CoinbaseWalletSDK({
17-
appName: 'Test',
18-
appLogoUrl: 'http://coinbase.com/wallet-logo.png',
19-
});
20-
21-
expect(SDK.makeWeb3Provider()).toBe(injectedProvider);
9+
const mockAppDeeplinkUrl = 'https://example.com';
10+
const mockMetadata = {
11+
appName: 'TestDapp',
12+
appLogoUrl: 'https://example.com/logo.png',
13+
appChainIds: [1, 42],
14+
appDeeplinkUrl: mockAppDeeplinkUrl,
15+
};
16+
17+
beforeEach(() => {
18+
jest.clearAllMocks();
2219
});
2320

24-
test('@makeWeb3Provider - return new CoinbaseWalletProvider', () => {
25-
(getCoinbaseInjectedProvider as jest.Mock).mockReturnValue(undefined);
26-
27-
const SDK = new CoinbaseWalletSDK({
28-
appName: 'Test',
29-
appLogoUrl: 'http://coinbase.com/wallet-logo.png',
21+
describe('constructor', () => {
22+
it('should throw an error if appDeeplinkUrl is not provided', () => {
23+
expect(() => new CoinbaseWalletSDK({})).toThrow('appDeeplinkUrl is required on Mobile');
3024
});
3125

32-
SDK.makeWeb3Provider();
33-
34-
expect(CoinbaseWalletProvider).toHaveBeenCalledWith({
35-
metadata: {
36-
appName: 'Test',
37-
appLogoUrl: 'http://coinbase.com/wallet-logo.png',
26+
it('should initialize metadata with default values', () => {
27+
const sdk = new CoinbaseWalletSDK({ appDeeplinkUrl: mockAppDeeplinkUrl });
28+
expect(sdk['metadata']).toEqual({
29+
appName: 'Dapp',
30+
appLogoUrl: null,
3831
appChainIds: [],
39-
appDeeplinkUrl: null,
40-
},
41-
preference: {
42-
options: 'all',
43-
},
32+
appDeeplinkUrl: `${mockAppDeeplinkUrl}/${MOBILE_SDK_RESPONSE_PATH}`,
33+
});
4434
});
45-
});
46-
47-
test('@makeWeb3Provider - default values for metadata', () => {
48-
(getFavicon as jest.Mock).mockReturnValue('https://dapp.xyz/pic.png');
49-
(getCoinbaseInjectedProvider as jest.Mock).mockReturnValue(undefined);
5035

51-
const SDK = new CoinbaseWalletSDK({
52-
appName: '',
53-
appLogoUrl: '',
36+
it('should initialize metadata with provided values', () => {
37+
const sdk = new CoinbaseWalletSDK(mockMetadata);
38+
expect(sdk['metadata']).toEqual({
39+
...mockMetadata,
40+
appDeeplinkUrl: `${mockAppDeeplinkUrl}/${MOBILE_SDK_RESPONSE_PATH}`,
41+
});
5442
});
43+
});
5544

56-
SDK.makeWeb3Provider();
57-
58-
expect(CoinbaseWalletProvider).toHaveBeenCalledWith({
59-
metadata: {
60-
appName: 'Dapp',
61-
appLogoUrl: 'https://dapp.xyz/pic.png',
62-
appChainIds: [],
63-
appDeeplinkUrl: null,
64-
},
65-
preference: {
66-
options: 'all',
67-
},
45+
describe('makeWeb3Provider', () => {
46+
it('should return a new CoinbaseWalletProvider instance', () => {
47+
const sdk = new CoinbaseWalletSDK(mockMetadata);
48+
const provider = sdk.makeWeb3Provider();
49+
expect(provider).toBeInstanceOf(CoinbaseWalletProvider);
50+
expect(CoinbaseWalletProvider).toHaveBeenCalledWith({
51+
metadata: sdk['metadata'],
52+
preference: { options: 'smartWalletOnly' },
53+
});
6854
});
6955
});
7056
});

packages/client/src/CoinbaseWalletSDK.ts

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,40 @@
22

33
import { LogoType, walletLogo } from './assets/wallet-logo';
44
import { CoinbaseWalletProvider } from './CoinbaseWalletProvider';
5-
import { AppMetadata, Preference, ProviderInterface } from './core/provider/interface';
5+
import { AppMetadata, ProviderInterface } from './core/provider/interface';
66
import { LIB_VERSION } from './version';
7+
import { MOBILE_SDK_RESPONSE_PATH } from ':core/constants';
78
import { ScopedAsyncStorage } from ':core/storage/ScopedAsyncStorage';
8-
import { getFavicon } from ':core/type/util';
9-
import { getCoinbaseInjectedProvider } from ':util/provider';
109

11-
// for backwards compatibility
1210
type CoinbaseWalletSDKOptions = Partial<AppMetadata>;
1311

1412
export class CoinbaseWalletSDK {
1513
private metadata: AppMetadata;
1614

1715
constructor(metadata: Readonly<CoinbaseWalletSDKOptions>) {
16+
if (!metadata.appDeeplinkUrl) {
17+
throw new Error('appDeeplinkUrl is required on Mobile');
18+
}
19+
20+
const url = new URL(metadata.appDeeplinkUrl);
21+
url.pathname += url.pathname.endsWith('/')
22+
? MOBILE_SDK_RESPONSE_PATH
23+
: `/${MOBILE_SDK_RESPONSE_PATH}`;
24+
1825
this.metadata = {
1926
appName: metadata.appName || 'Dapp',
20-
appLogoUrl: metadata.appLogoUrl || getFavicon(),
27+
appLogoUrl: metadata.appLogoUrl || null,
2128
appChainIds: metadata.appChainIds || [],
22-
appDeeplinkUrl: null,
29+
appDeeplinkUrl: url.toString(),
2330
};
2431
this.storeLatestVersion();
2532
}
2633

27-
public makeWeb3Provider(preference: Preference = { options: 'all' }): ProviderInterface {
28-
const params = { metadata: this.metadata, preference };
29-
return getCoinbaseInjectedProvider(params) ?? new CoinbaseWalletProvider(params);
34+
public makeWeb3Provider(): ProviderInterface {
35+
return new CoinbaseWalletProvider({
36+
metadata: this.metadata,
37+
preference: { options: 'smartWalletOnly' },
38+
});
3039
}
3140

3241
/**

0 commit comments

Comments
 (0)