@reown/appkit-coinbase-react-native 0.0.0-feat-coinbase-20250722174423 → 0.0.0-feat-coinbase-20250722202925
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/connectors/CoinbaseConnector.js +4 -4
- package/lib/commonjs/connectors/CoinbaseConnector.js.map +1 -1
- package/lib/commonjs/providers/CoinbaseProvider.js +29 -3
- package/lib/commonjs/providers/CoinbaseProvider.js.map +1 -1
- package/lib/module/connectors/CoinbaseConnector.js +4 -4
- package/lib/module/connectors/CoinbaseConnector.js.map +1 -1
- package/lib/module/providers/CoinbaseProvider.js +30 -4
- package/lib/module/providers/CoinbaseProvider.js.map +1 -1
- package/lib/typescript/connectors/CoinbaseConnector.d.ts +1 -1
- package/lib/typescript/connectors/CoinbaseConnector.d.ts.map +1 -1
- package/lib/typescript/providers/CoinbaseProvider.d.ts +2 -0
- package/lib/typescript/providers/CoinbaseProvider.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/connectors/CoinbaseConnector.ts +5 -5
- package/src/providers/CoinbaseProvider.ts +36 -3
|
@@ -14,7 +14,7 @@ class CoinbaseConnector extends _appkitCommonReactNative.WalletConnector {
|
|
|
14
14
|
super({
|
|
15
15
|
type: 'coinbase'
|
|
16
16
|
});
|
|
17
|
-
this.config = config;
|
|
17
|
+
this.config = config ?? {};
|
|
18
18
|
}
|
|
19
19
|
async init(ops) {
|
|
20
20
|
super.init(ops);
|
|
@@ -106,9 +106,9 @@ class CoinbaseConnector extends _appkitCommonReactNative.WalletConnector {
|
|
|
106
106
|
}
|
|
107
107
|
saveSession(namespaces) {
|
|
108
108
|
const storage = this.getStorage();
|
|
109
|
-
storage.setItem(SESSION_KEY,
|
|
109
|
+
storage.setItem(SESSION_KEY, {
|
|
110
110
|
namespaces
|
|
111
|
-
})
|
|
111
|
+
});
|
|
112
112
|
}
|
|
113
113
|
async restoreSession() {
|
|
114
114
|
const storage = this.getStorage();
|
|
@@ -118,7 +118,7 @@ class CoinbaseConnector extends _appkitCommonReactNative.WalletConnector {
|
|
|
118
118
|
}
|
|
119
119
|
const {
|
|
120
120
|
namespaces
|
|
121
|
-
} =
|
|
121
|
+
} = session;
|
|
122
122
|
this.namespaces = namespaces;
|
|
123
123
|
return true;
|
|
124
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_appkitCommonReactNative","require","_utils","_CoinbaseProvider","SESSION_KEY","CoinbaseConnector","WalletConnector","SUPPORTED_NAMESPACE","constructor","config","type","init","ops","metadata","redirect","universal","Error","provider","CoinbaseProvider","storage","restoreSession","connect","opts","accounts","getProvider","namespaces","getCoinbaseNamespace","saveSession","disconnect","deleteSession","getNamespaces","getChainId","hexChainId","chainId","hexToString","getWalletInfo","name","description","url","getProperties","undefined","switchNetwork","network","chainId_","numberToHex","id","request","method","params","error","code","chainName","nativeCurrency","rpcUrls","default","http","blockExplorerUrls","blockExplorers","e","console","warn","getStorage","removeItem","setItem","
|
|
1
|
+
{"version":3,"names":["_appkitCommonReactNative","require","_utils","_CoinbaseProvider","SESSION_KEY","CoinbaseConnector","WalletConnector","SUPPORTED_NAMESPACE","constructor","config","type","init","ops","metadata","redirect","universal","Error","provider","CoinbaseProvider","storage","restoreSession","connect","opts","accounts","getProvider","namespaces","getCoinbaseNamespace","saveSession","disconnect","deleteSession","getNamespaces","getChainId","hexChainId","chainId","hexToString","getWalletInfo","name","description","url","getProperties","undefined","switchNetwork","network","chainId_","numberToHex","id","request","method","params","error","code","chainName","nativeCurrency","rpcUrls","default","http","blockExplorerUrls","blockExplorers","e","console","warn","getStorage","removeItem","setItem","session","getItem","exports"],"sourceRoot":"../../../src","sources":["connectors/CoinbaseConnector.ts"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ var _walletMobileSdk = require("@coinbase/wallet-mobile-sdk");
|
|
|
9
9
|
var _utils = require("../utils");
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
class CoinbaseProvider extends _events.default {
|
|
12
|
+
chainChangedListeners = new Map();
|
|
12
13
|
constructor(config) {
|
|
13
14
|
super();
|
|
14
15
|
this.config = config;
|
|
@@ -37,9 +38,6 @@ class CoinbaseProvider extends _events.default {
|
|
|
37
38
|
} else {
|
|
38
39
|
accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
-
//TODO: check switch chain
|
|
42
|
-
|
|
43
41
|
return accounts;
|
|
44
42
|
} catch (error) {
|
|
45
43
|
console.warn('CoinbaseProvider: connect error', error);
|
|
@@ -59,10 +57,38 @@ class CoinbaseProvider extends _events.default {
|
|
|
59
57
|
getChainId() {
|
|
60
58
|
return this.provider.chainId;
|
|
61
59
|
}
|
|
60
|
+
onChainChanged(hexChainId) {
|
|
61
|
+
const chainId = (0, _utils.hexToString)(hexChainId);
|
|
62
|
+
this.emit('chainChanged', {
|
|
63
|
+
chainId
|
|
64
|
+
});
|
|
65
|
+
}
|
|
62
66
|
on(event, listener) {
|
|
67
|
+
if (event === 'chainChanged') {
|
|
68
|
+
// Create middleware that formats the chain ID before calling the original listener
|
|
69
|
+
const chainChangedMiddleware = hexChainId => {
|
|
70
|
+
const chainId = (0, _utils.hexToString)(hexChainId);
|
|
71
|
+
listener(chainId);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// Store the mapping between original listener and middleware
|
|
75
|
+
this.chainChangedListeners.set(listener, chainChangedMiddleware);
|
|
76
|
+
return this.provider.on('chainChanged', chainChangedMiddleware);
|
|
77
|
+
}
|
|
63
78
|
return this.provider.on(event, listener);
|
|
64
79
|
}
|
|
65
80
|
off(event, listener) {
|
|
81
|
+
if (event === 'chainChanged') {
|
|
82
|
+
// Get the middleware wrapper for this listener
|
|
83
|
+
const middleware = this.chainChangedListeners.get(listener);
|
|
84
|
+
if (middleware) {
|
|
85
|
+
// Remove the middleware from the provider
|
|
86
|
+
this.provider.off('chainChanged', middleware);
|
|
87
|
+
// Remove the mapping
|
|
88
|
+
this.chainChangedListeners.delete(listener);
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
66
92
|
return this.provider.off(event, listener);
|
|
67
93
|
}
|
|
68
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_events","_interopRequireDefault","require","_walletMobileSdk","_utils","e","__esModule","default","CoinbaseProvider","EventEmitter","constructor","config","configure","hostURL","URL","callbackURL","redirect","hostPackageName","provider","WalletMobileSDKEVMProvider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","isValidMethod","Error","getChainId","on","event","listener","off","exports"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;
|
|
1
|
+
{"version":3,"names":["_events","_interopRequireDefault","require","_walletMobileSdk","_utils","e","__esModule","default","CoinbaseProvider","EventEmitter","chainChangedListeners","Map","constructor","config","configure","hostURL","URL","callbackURL","redirect","hostPackageName","provider","WalletMobileSDKEVMProvider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","isValidMethod","Error","getChainId","onChainChanged","hexChainId","hexToString","emit","on","event","listener","chainChangedMiddleware","set","off","middleware","get","delete","exports"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export class CoinbaseConnector extends WalletConnector {
|
|
|
8
8
|
super({
|
|
9
9
|
type: 'coinbase'
|
|
10
10
|
});
|
|
11
|
-
this.config = config;
|
|
11
|
+
this.config = config ?? {};
|
|
12
12
|
}
|
|
13
13
|
async init(ops) {
|
|
14
14
|
super.init(ops);
|
|
@@ -100,9 +100,9 @@ export class CoinbaseConnector extends WalletConnector {
|
|
|
100
100
|
}
|
|
101
101
|
saveSession(namespaces) {
|
|
102
102
|
const storage = this.getStorage();
|
|
103
|
-
storage.setItem(SESSION_KEY,
|
|
103
|
+
storage.setItem(SESSION_KEY, {
|
|
104
104
|
namespaces
|
|
105
|
-
})
|
|
105
|
+
});
|
|
106
106
|
}
|
|
107
107
|
async restoreSession() {
|
|
108
108
|
const storage = this.getStorage();
|
|
@@ -112,7 +112,7 @@ export class CoinbaseConnector extends WalletConnector {
|
|
|
112
112
|
}
|
|
113
113
|
const {
|
|
114
114
|
namespaces
|
|
115
|
-
} =
|
|
115
|
+
} = session;
|
|
116
116
|
this.namespaces = namespaces;
|
|
117
117
|
return true;
|
|
118
118
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WalletConnector","getCoinbaseNamespace","hexToString","numberToHex","CoinbaseProvider","SESSION_KEY","CoinbaseConnector","SUPPORTED_NAMESPACE","constructor","config","type","init","ops","metadata","redirect","universal","Error","provider","storage","restoreSession","connect","opts","accounts","getProvider","namespaces","saveSession","disconnect","deleteSession","getNamespaces","getChainId","hexChainId","chainId","getWalletInfo","name","description","url","getProperties","undefined","switchNetwork","network","chainId_","id","request","method","params","error","code","chainName","nativeCurrency","rpcUrls","default","http","blockExplorerUrls","blockExplorers","e","console","warn","getStorage","removeItem","setItem","
|
|
1
|
+
{"version":3,"names":["WalletConnector","getCoinbaseNamespace","hexToString","numberToHex","CoinbaseProvider","SESSION_KEY","CoinbaseConnector","SUPPORTED_NAMESPACE","constructor","config","type","init","ops","metadata","redirect","universal","Error","provider","storage","restoreSession","connect","opts","accounts","getProvider","namespaces","saveSession","disconnect","deleteSession","getNamespaces","getChainId","hexChainId","chainId","getWalletInfo","name","description","url","getProperties","undefined","switchNetwork","network","chainId_","id","request","method","params","error","code","chainName","nativeCurrency","rpcUrls","default","http","blockExplorerUrls","blockExplorers","e","console","warn","getStorage","removeItem","setItem","session","getItem"],"sourceRoot":"../../../src","sources":["connectors/CoinbaseConnector.ts"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
2
|
import { configure, WalletMobileSDKEVMProvider } from '@coinbase/wallet-mobile-sdk';
|
|
3
|
-
import { isValidMethod } from '../utils';
|
|
3
|
+
import { hexToString, isValidMethod } from '../utils';
|
|
4
4
|
export class CoinbaseProvider extends EventEmitter {
|
|
5
|
+
chainChangedListeners = new Map();
|
|
5
6
|
constructor(config) {
|
|
6
7
|
super();
|
|
7
8
|
this.config = config;
|
|
@@ -30,9 +31,6 @@ export class CoinbaseProvider extends EventEmitter {
|
|
|
30
31
|
} else {
|
|
31
32
|
accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
-
//TODO: check switch chain
|
|
35
|
-
|
|
36
34
|
return accounts;
|
|
37
35
|
} catch (error) {
|
|
38
36
|
console.warn('CoinbaseProvider: connect error', error);
|
|
@@ -52,10 +50,38 @@ export class CoinbaseProvider extends EventEmitter {
|
|
|
52
50
|
getChainId() {
|
|
53
51
|
return this.provider.chainId;
|
|
54
52
|
}
|
|
53
|
+
onChainChanged(hexChainId) {
|
|
54
|
+
const chainId = hexToString(hexChainId);
|
|
55
|
+
this.emit('chainChanged', {
|
|
56
|
+
chainId
|
|
57
|
+
});
|
|
58
|
+
}
|
|
55
59
|
on(event, listener) {
|
|
60
|
+
if (event === 'chainChanged') {
|
|
61
|
+
// Create middleware that formats the chain ID before calling the original listener
|
|
62
|
+
const chainChangedMiddleware = hexChainId => {
|
|
63
|
+
const chainId = hexToString(hexChainId);
|
|
64
|
+
listener(chainId);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// Store the mapping between original listener and middleware
|
|
68
|
+
this.chainChangedListeners.set(listener, chainChangedMiddleware);
|
|
69
|
+
return this.provider.on('chainChanged', chainChangedMiddleware);
|
|
70
|
+
}
|
|
56
71
|
return this.provider.on(event, listener);
|
|
57
72
|
}
|
|
58
73
|
off(event, listener) {
|
|
74
|
+
if (event === 'chainChanged') {
|
|
75
|
+
// Get the middleware wrapper for this listener
|
|
76
|
+
const middleware = this.chainChangedListeners.get(listener);
|
|
77
|
+
if (middleware) {
|
|
78
|
+
// Remove the middleware from the provider
|
|
79
|
+
this.provider.off('chainChanged', middleware);
|
|
80
|
+
// Remove the mapping
|
|
81
|
+
this.chainChangedListeners.delete(listener);
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
59
85
|
return this.provider.off(event, listener);
|
|
60
86
|
}
|
|
61
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventEmitter","configure","WalletMobileSDKEVMProvider","isValidMethod","CoinbaseProvider","constructor","config","hostURL","URL","callbackURL","redirect","hostPackageName","provider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","Error","getChainId","on","event","listener","off"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"AAAA,OAAOA,YAAY,MAAM,QAAQ;AAEjC,SAASC,SAAS,EAAEC,0BAA0B,QAAQ,6BAA6B;AACnF,SAASC,aAAa,QAAQ,UAAU;
|
|
1
|
+
{"version":3,"names":["EventEmitter","configure","WalletMobileSDKEVMProvider","hexToString","isValidMethod","CoinbaseProvider","chainChangedListeners","Map","constructor","config","hostURL","URL","callbackURL","redirect","hostPackageName","provider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","Error","getChainId","onChainChanged","hexChainId","emit","on","event","listener","chainChangedMiddleware","set","off","middleware","get","delete"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { CoinbaseConnectorConfig } from '../types';
|
|
|
4
4
|
export declare class CoinbaseConnector extends WalletConnector {
|
|
5
5
|
private static readonly SUPPORTED_NAMESPACE;
|
|
6
6
|
private config;
|
|
7
|
-
constructor(config
|
|
7
|
+
constructor(config?: CoinbaseConnectorConfig);
|
|
8
8
|
init(ops: ConnectorInitOptions): Promise<void>;
|
|
9
9
|
connect(opts?: ConnectOptions): Promise<Namespaces | undefined>;
|
|
10
10
|
disconnect(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoinbaseConnector.d.ts","sourceRoot":"","sources":["../../../src/connectors/CoinbaseConnector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAElB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,UAAU,EAEhB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAmB,MAAM,UAAU,CAAC;AAIzE,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAA4B;IACvE,OAAO,CAAC,MAAM,CAA0B;gBAE5B,MAAM,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"CoinbaseConnector.d.ts","sourceRoot":"","sources":["../../../src/connectors/CoinbaseConnector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,aAAa,EAElB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,UAAU,EAEhB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAmB,MAAM,UAAU,CAAC;AAIzE,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAA4B;IACvE,OAAO,CAAC,MAAM,CAA0B;gBAE5B,MAAM,CAAC,EAAE,uBAAuB;IAK7B,IAAI,CAAC,GAAG,EAAE,oBAAoB;IAgB9B,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAU/D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC,WAAW,IAAI,gBAAgB;IAQ/B,aAAa,IAAI,UAAU;IAQ3B,UAAU,IAAI,aAAa,GAAG,SAAS;IAOvC,aAAa,IAAI,UAAU,GAAG,SAAS;IASvC,aAAa,IAAI,oBAAoB,GAAG,SAAS;IAI3C,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCnE,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAKJ,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAajD,OAAO,CAAC,UAAU;CAOnB"}
|
|
@@ -5,11 +5,13 @@ import type { CoinbaseProviderConfig } from '../types';
|
|
|
5
5
|
export declare class CoinbaseProvider extends EventEmitter implements Provider {
|
|
6
6
|
private readonly config;
|
|
7
7
|
private provider;
|
|
8
|
+
private chainChangedListeners;
|
|
8
9
|
constructor(config: CoinbaseProviderConfig);
|
|
9
10
|
connect<T = string[]>(): Promise<T>;
|
|
10
11
|
disconnect(): Promise<void>;
|
|
11
12
|
request<T = unknown>(args: RequestArguments): Promise<T>;
|
|
12
13
|
getChainId(): `0x${string}`;
|
|
14
|
+
onChainChanged(hexChainId: `0x${string}`): void;
|
|
13
15
|
on(event: string, listener: (args?: any) => void): any;
|
|
14
16
|
off(event: string, listener: (args?: any) => void): any;
|
|
15
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoinbaseProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/CoinbaseProvider.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAA6B;
|
|
1
|
+
{"version":3,"file":"CoinbaseProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/CoinbaseProvider.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,qBAAqB,CAGzB;gBAEQ,MAAM,EAAE,sBAAsB;IAgBpC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;IAqBnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAQxD,UAAU,IAAI,KAAK,MAAM,EAAE;IAI3B,cAAc,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI;IAKtC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;IAiBtD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;CAgBjE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reown/appkit-coinbase-react-native",
|
|
3
|
-
"version": "0.0.0-feat-coinbase-
|
|
3
|
+
"version": "0.0.0-feat-coinbase-20250722202925",
|
|
4
4
|
"main": "lib/commonjs/index.js",
|
|
5
5
|
"types": "lib/typescript/index.d.ts",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@reown/appkit-common-react-native": "0.0.0-feat-coinbase-
|
|
38
|
+
"@reown/appkit-common-react-native": "0.0.0-feat-coinbase-20250722202925"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@coinbase/wallet-mobile-sdk": ">=1.1.2"
|
|
@@ -20,9 +20,9 @@ export class CoinbaseConnector extends WalletConnector {
|
|
|
20
20
|
private static readonly SUPPORTED_NAMESPACE: ChainNamespace = 'eip155';
|
|
21
21
|
private config: CoinbaseConnectorConfig;
|
|
22
22
|
|
|
23
|
-
constructor(config
|
|
23
|
+
constructor(config?: CoinbaseConnectorConfig) {
|
|
24
24
|
super({ type: 'coinbase' });
|
|
25
|
-
this.config = config;
|
|
25
|
+
this.config = config ?? {};
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
override async init(ops: ConnectorInitOptions) {
|
|
@@ -134,17 +134,17 @@ export class CoinbaseConnector extends WalletConnector {
|
|
|
134
134
|
|
|
135
135
|
private saveSession(namespaces: Namespaces): void {
|
|
136
136
|
const storage = this.getStorage();
|
|
137
|
-
storage.setItem(SESSION_KEY,
|
|
137
|
+
storage.setItem<CoinbaseSession>(SESSION_KEY, { namespaces });
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
override async restoreSession(): Promise<boolean> {
|
|
141
141
|
const storage = this.getStorage();
|
|
142
|
-
const session = await storage.getItem<
|
|
142
|
+
const session = await storage.getItem<CoinbaseSession>(SESSION_KEY);
|
|
143
143
|
if (!session) {
|
|
144
144
|
return false;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
const { namespaces } =
|
|
147
|
+
const { namespaces } = session;
|
|
148
148
|
this.namespaces = namespaces;
|
|
149
149
|
|
|
150
150
|
return true;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
2
|
import type { Provider, RequestArguments } from '@reown/appkit-common-react-native';
|
|
3
3
|
import { configure, WalletMobileSDKEVMProvider } from '@coinbase/wallet-mobile-sdk';
|
|
4
|
-
import { isValidMethod } from '../utils';
|
|
4
|
+
import { hexToString, isValidMethod } from '../utils';
|
|
5
5
|
import type { CoinbaseProviderConfig } from '../types';
|
|
6
6
|
|
|
7
7
|
export class CoinbaseProvider extends EventEmitter implements Provider {
|
|
8
8
|
private readonly config: CoinbaseProviderConfig;
|
|
9
9
|
private provider: WalletMobileSDKEVMProvider;
|
|
10
|
+
private chainChangedListeners = new Map<
|
|
11
|
+
(args?: any) => void,
|
|
12
|
+
(hexChainId: `0x${string}`) => void
|
|
13
|
+
>();
|
|
10
14
|
|
|
11
15
|
constructor(config: CoinbaseProviderConfig) {
|
|
12
16
|
super();
|
|
@@ -38,8 +42,6 @@ export class CoinbaseProvider extends EventEmitter implements Provider {
|
|
|
38
42
|
accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
|
|
39
43
|
}
|
|
40
44
|
|
|
41
|
-
//TODO: check switch chain
|
|
42
|
-
|
|
43
45
|
return accounts as T;
|
|
44
46
|
} catch (error) {
|
|
45
47
|
console.warn('CoinbaseProvider: connect error', error);
|
|
@@ -65,11 +67,42 @@ export class CoinbaseProvider extends EventEmitter implements Provider {
|
|
|
65
67
|
return this.provider.chainId as `0x${string}`;
|
|
66
68
|
}
|
|
67
69
|
|
|
70
|
+
onChainChanged(hexChainId: `0x${string}`): void {
|
|
71
|
+
const chainId = hexToString(hexChainId);
|
|
72
|
+
this.emit('chainChanged', { chainId });
|
|
73
|
+
}
|
|
74
|
+
|
|
68
75
|
override on(event: string, listener: (args?: any) => void): any {
|
|
76
|
+
if (event === 'chainChanged') {
|
|
77
|
+
// Create middleware that formats the chain ID before calling the original listener
|
|
78
|
+
const chainChangedMiddleware = (hexChainId: `0x${string}`) => {
|
|
79
|
+
const chainId = hexToString(hexChainId);
|
|
80
|
+
listener(chainId);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// Store the mapping between original listener and middleware
|
|
84
|
+
this.chainChangedListeners.set(listener, chainChangedMiddleware);
|
|
85
|
+
|
|
86
|
+
return this.provider.on('chainChanged', chainChangedMiddleware);
|
|
87
|
+
}
|
|
88
|
+
|
|
69
89
|
return this.provider.on(event, listener);
|
|
70
90
|
}
|
|
71
91
|
|
|
72
92
|
override off(event: string, listener: (args?: any) => void): any {
|
|
93
|
+
if (event === 'chainChanged') {
|
|
94
|
+
// Get the middleware wrapper for this listener
|
|
95
|
+
const middleware = this.chainChangedListeners.get(listener);
|
|
96
|
+
if (middleware) {
|
|
97
|
+
// Remove the middleware from the provider
|
|
98
|
+
this.provider.off('chainChanged', middleware);
|
|
99
|
+
// Remove the mapping
|
|
100
|
+
this.chainChangedListeners.delete(listener);
|
|
101
|
+
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
73
106
|
return this.provider.off(event, listener);
|
|
74
107
|
}
|
|
75
108
|
}
|