@reown/appkit-coinbase-react-native 0.0.1 → 2.0.0-alpha.3

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.
@@ -14,16 +14,17 @@ 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);
21
- if (!ops.metadata.redirect?.universal) {
22
- throw new Error('CoinbaseConnector: Universal link not found in metadata');
21
+ const redirect = ops.metadata.redirect?.universal ?? ops.metadata.redirect?.native;
22
+ if (!redirect) {
23
+ throw new Error('CoinbaseConnector: Redirect link not found in metadata');
23
24
  }
24
25
  this.provider = new _CoinbaseProvider.CoinbaseProvider({
25
- redirect: ops.metadata.redirect.universal,
26
- // use config storage only, as it needs to be mmkv-compatible
26
+ redirect,
27
+ // use config storage, as it needs to be mmkv-compatible
27
28
  storage: this.config.storage
28
29
  });
29
30
  await this.restoreSession();
@@ -53,11 +54,10 @@ class CoinbaseConnector extends _appkitCommonReactNative.WalletConnector {
53
54
  }
54
55
  getChainId() {
55
56
  const hexChainId = this.getProvider().getChainId();
56
- const chainId = (0, _utils.hexToString)(hexChainId);
57
+ const chainId = _appkitCommonReactNative.StringUtil.hexToString(hexChainId);
57
58
  return `${CoinbaseConnector.SUPPORTED_NAMESPACE}:${chainId}`;
58
59
  }
59
60
  getWalletInfo() {
60
- // TODO: Add icon
61
61
  return {
62
62
  name: 'Coinbase Wallet',
63
63
  description: 'Your home to everything onchain',
@@ -69,7 +69,7 @@ class CoinbaseConnector extends _appkitCommonReactNative.WalletConnector {
69
69
  }
70
70
  async switchNetwork(network) {
71
71
  const provider = this.getProvider();
72
- const chainId_ = (0, _utils.numberToHex)(network.id);
72
+ const chainId_ = _appkitCommonReactNative.NumberUtil.convertNumericToHexString(network.id);
73
73
  try {
74
74
  await provider.request({
75
75
  method: 'wallet_switchEthereumChain',
@@ -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, JSON.stringify({
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
- } = JSON.parse(session);
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","JSON","stringify","session","getItem","parse","exports"],"sourceRoot":"../../../src","sources":["connectors/CoinbaseConnector.ts"],"mappings":"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"}
1
+ {"version":3,"names":["_appkitCommonReactNative","require","_utils","_CoinbaseProvider","SESSION_KEY","CoinbaseConnector","WalletConnector","SUPPORTED_NAMESPACE","constructor","config","type","init","ops","redirect","metadata","universal","native","Error","provider","CoinbaseProvider","storage","restoreSession","connect","opts","accounts","getProvider","namespaces","getCoinbaseNamespace","saveSession","disconnect","deleteSession","getNamespaces","getChainId","hexChainId","chainId","StringUtil","hexToString","getWalletInfo","name","description","url","getProperties","undefined","switchNetwork","network","chainId_","NumberUtil","convertNumericToHexString","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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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_CoinbaseConnector","require"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA"}
1
+ {"version":3,"names":["_CoinbaseConnector","require"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,kBAAA,GAAAC,OAAA","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -5,10 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.CoinbaseProvider = void 0;
7
7
  var _events = _interopRequireDefault(require("events"));
8
+ var _appkitCommonReactNative = require("@reown/appkit-common-react-native");
8
9
  var _walletMobileSdk = require("@coinbase/wallet-mobile-sdk");
9
10
  var _utils = require("../utils");
10
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
12
  class CoinbaseProvider extends _events.default {
13
+ chainChangedListeners = new Map();
12
14
  constructor(config) {
13
15
  super();
14
16
  this.config = config;
@@ -37,9 +39,6 @@ class CoinbaseProvider extends _events.default {
37
39
  } else {
38
40
  accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
39
41
  }
40
-
41
- //TODO: check switch chain
42
-
43
42
  return accounts;
44
43
  } catch (error) {
45
44
  console.warn('CoinbaseProvider: connect error', error);
@@ -59,10 +58,38 @@ class CoinbaseProvider extends _events.default {
59
58
  getChainId() {
60
59
  return this.provider.chainId;
61
60
  }
61
+ onChainChanged(hexChainId) {
62
+ const chainId = _appkitCommonReactNative.StringUtil.hexToString(hexChainId);
63
+ this.emit('chainChanged', {
64
+ chainId
65
+ });
66
+ }
62
67
  on(event, listener) {
68
+ if (event === 'chainChanged') {
69
+ // Create middleware that formats the chain ID before calling the original listener
70
+ const chainChangedMiddleware = hexChainId => {
71
+ const chainId = _appkitCommonReactNative.StringUtil.hexToString(hexChainId);
72
+ listener(chainId);
73
+ };
74
+
75
+ // Store the mapping between original listener and middleware
76
+ this.chainChangedListeners.set(listener, chainChangedMiddleware);
77
+ return this.provider.on('chainChanged', chainChangedMiddleware);
78
+ }
63
79
  return this.provider.on(event, listener);
64
80
  }
65
81
  off(event, listener) {
82
+ if (event === 'chainChanged') {
83
+ // Get the middleware wrapper for this listener
84
+ const middleware = this.chainChangedListeners.get(listener);
85
+ if (middleware) {
86
+ // Remove the middleware from the provider
87
+ this.provider.off('chainChanged', middleware);
88
+ // Remove the mapping
89
+ this.chainChangedListeners.delete(listener);
90
+ return this;
91
+ }
92
+ }
66
93
  return this.provider.off(event, listener);
67
94
  }
68
95
  }
@@ -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;AAAyC,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAGlC,MAAMG,gBAAgB,SAASC,eAAY,CAAqB;EAIrEC,WAAWA,CAACC,MAA8B,EAAE;IAC1C,KAAK,CAAC,CAAC;IACP,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAAC,0BAAS,EAAC;MACRC,OAAO,EAAE,IAAIC,GAAG,CAAC,oCAAoC,CAAC;MACtDC,WAAW,EAAE,IAAID,GAAG,CAAC,IAAI,CAACH,MAAM,CAACK,QAAQ,CAAC;MAAE;MAC5CC,eAAe,EAAE;IACnB,CAAC,CAAC;IACF,IAAI,CAACC,QAAQ,GAAG,IAAIC,2CAA0B,CAAC;MAC7C,GAAG,IAAI,CAACR,MAAM;MACdS,UAAU,EAAE,IAAI,CAACT,MAAM,CAACU,MAAM;MAC9BC,OAAO,EAAE,IAAI,CAACX,MAAM,CAACY,YAAY;MACjCC,OAAO,EAAE,IAAI,CAACb,MAAM,CAACa;IACvB,CAAC,CAAC;EACJ;EAEA,MAAMC,OAAOA,CAAA,EAA6B;IACxC,IAAI;MACF,IAAIC,QAAkB,GAAG,EAAE;MAC3B,MAAMC,WAAW,GAAG,IAAI,CAACT,QAAQ,CAACU,SAAS;MAE3C,IAAI,CAACD,WAAW,EAAE;QAChBD,QAAQ,GAAG,MAAM,IAAI,CAACR,QAAQ,CAACW,OAAO,CAAC;UACrCC,MAAM,EAAE,qBAAqB;UAC7BC,MAAM,EAAE;QACV,CAAC,CAAC;MACJ,CAAC,MAAM;QACLL,QAAQ,GAAG,IAAI,CAACR,QAAQ,CAACc,eAAe,GAAG,CAAC,IAAI,CAACd,QAAQ,CAACc,eAAe,CAAC,GAAG,EAAE;MACjF;;MAEA;;MAEA,OAAON,QAAQ;IACjB,CAAC,CAAC,OAAOO,KAAK,EAAE;MACdC,OAAO,CAACC,IAAI,CAAC,iCAAiC,EAAEF,KAAK,CAAC;MAEtD,MAAMA,KAAK;IACb;EACF;EACA,MAAMG,UAAUA,CAAA,EAAkB;IAChC,IAAI,CAAClB,QAAQ,CAACkB,UAAU,CAAC,CAAC;IAE1B,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAT,OAAOA,CAAcU,IAAsB,EAAc;IACvD,IAAI,CAAC,IAAAC,oBAAa,EAACD,IAAI,CAACT,MAAM,CAAC,EAAE;MAC/B,MAAM,IAAIW,KAAK,CAAE,qCAAoCF,IAAI,CAACT,MAAO,EAAC,CAAC;IACrE;IAEA,OAAO,IAAI,CAACZ,QAAQ,CAACW,OAAO,CAACU,IAAI,CAAC;EACpC;EAEAG,UAAUA,CAAA,EAAkB;IAC1B,OAAO,IAAI,CAACxB,QAAQ,CAACI,OAAO;EAC9B;EAESqB,EAAEA,CAACC,KAAa,EAAEC,QAA8B,EAAO;IAC9D,OAAO,IAAI,CAAC3B,QAAQ,CAACyB,EAAE,CAACC,KAAK,EAAEC,QAAQ,CAAC;EAC1C;EAESC,GAAGA,CAACF,KAAa,EAAEC,QAA8B,EAAO;IAC/D,OAAO,IAAI,CAAC3B,QAAQ,CAAC4B,GAAG,CAACF,KAAK,EAAEC,QAAQ,CAAC;EAC3C;AACF;AAACE,OAAA,CAAAvC,gBAAA,GAAAA,gBAAA"}
1
+ {"version":3,"names":["_events","_interopRequireDefault","require","_appkitCommonReactNative","_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","StringUtil","hexToString","emit","on","event","listener","chainChangedMiddleware","set","off","middleware","get","delete","exports"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":""}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.COINBASE_METHODS = void 0;
7
7
  exports.getCoinbaseNamespace = getCoinbaseNamespace;
8
- exports.hexToString = hexToString;
9
8
  exports.isValidMethod = isValidMethod;
10
- exports.numberToHex = numberToHex;
11
9
  const COINBASE_METHODS = exports.COINBASE_METHODS = {
12
10
  REQUEST_ACCOUNTS: 'eth_requestAccounts',
13
11
  SIGN_TRANSACTION: 'eth_signTransaction',
@@ -44,16 +42,4 @@ function getCoinbaseNamespace(namespaces, accounts) {
44
42
  }
45
43
  };
46
44
  }
47
- function numberToHex(value) {
48
- // Convert string to number first, then to hex
49
- const num = typeof value === 'string' ? parseInt(value, 10) : value;
50
- return `0x${num.toString(16)}`;
51
- }
52
- function hexToString(hexValue) {
53
- // Remove 0x prefix if present
54
- const cleanHex = hexValue.startsWith('0x') ? hexValue.slice(2) : hexValue;
55
- // Convert hex to decimal number, then to string
56
-
57
- return parseInt(cleanHex, 16).toString();
58
- }
59
45
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["COINBASE_METHODS","exports","REQUEST_ACCOUNTS","SIGN_TRANSACTION","SEND_TRANSACTION","SIGN_MESSAGE","SIGN_TYPED_DATA_V3","SIGN_TYPED_DATA_V4","SWITCH_CHAIN","ADD_ETHEREUM_CHAIN","WATCH_ASSET","isValidMethod","method","Object","values","includes","getCoinbaseNamespace","namespaces","accounts","Error","namespace","caipAddresses","account","chains","forEach","chain","push","methods","numberToHex","value","num","parseInt","toString","hexToString","hexValue","cleanHex","startsWith","slice"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":";;;;;;;;;;AAOO,MAAMA,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG;EAC9BE,gBAAgB,EAAE,qBAAqB;EACvCC,gBAAgB,EAAE,qBAAqB;EACvCC,gBAAgB,EAAE,qBAAqB;EACvCC,YAAY,EAAE,eAAe;EAC7BC,kBAAkB,EAAE,sBAAsB;EAC1CC,kBAAkB,EAAE,sBAAsB;EAC1CC,YAAY,EAAE,4BAA4B;EAC1CC,kBAAkB,EAAE,yBAAyB;EAC7CC,WAAW,EAAE;AACf,CAAU;AAEH,SAASC,aAAaA,CAACC,MAAc,EAA4B;EACtE,OAAOC,MAAM,CAACC,MAAM,CAACd,gBAAgB,CAAC,CAACe,QAAQ,CAACH,MAAwB,CAAC;AAC3E;AAEO,SAASI,oBAAoBA,CAClCC,UAA+B,EAC/BC,QAAmB,EACP;EACZ,IAAI,CAACD,UAAU,IAAI,CAACC,QAAQ,EAAE;IAC5B,MAAM,IAAIC,KAAK,CAAC,qDAAqD,CAAC;EACxE;EAEA,MAAMC,SAAS,GAAGH,UAAU,CAAC,QAAQ,CAAC;EAEtC,IAAI,CAACG,SAAS,EAAE;IACd,MAAM,IAAID,KAAK,CAAC,wCAAwC,CAAC;EAC3D;EAEA,IAAIE,aAA4B,GAAG,EAAE;EAErC,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAAE;IAC9BE,SAAS,CAACG,MAAM,EAAEC,OAAO,CAACC,KAAK,IAAI;MACjCJ,aAAa,CAACK,IAAI,CAAE,GAAED,KAAM,IAAGH,OAAQ,EAAC,CAAC;IAC3C,CAAC,CAAC;EACJ;EAEA,OAAO;IACL,CAAC,QAAQ,GAAG;MACV,GAAGF,SAAS;MACZO,OAAO,EAAEd,MAAM,CAACC,MAAM,CAACd,gBAAgB,CAAC;MACxCkB,QAAQ,EAAEG;IACZ;EACF,CAAC;AACH;AAEO,SAASO,WAAWA,CAACC,KAAsB,EAAE;EAClD;EACA,MAAMC,GAAG,GAAG,OAAOD,KAAK,KAAK,QAAQ,GAAGE,QAAQ,CAACF,KAAK,EAAE,EAAE,CAAC,GAAGA,KAAK;EAEnE,OAAQ,KAAIC,GAAG,CAACE,QAAQ,CAAC,EAAE,CAAE,EAAC;AAChC;AAEO,SAASC,WAAWA,CAACC,QAAgB,EAAE;EAC5C;EACA,MAAMC,QAAQ,GAAGD,QAAQ,CAACE,UAAU,CAAC,IAAI,CAAC,GAAGF,QAAQ,CAACG,KAAK,CAAC,CAAC,CAAC,GAAGH,QAAQ;EACzE;;EAEA,OAAOH,QAAQ,CAACI,QAAQ,EAAE,EAAE,CAAC,CAACH,QAAQ,CAAC,CAAC;AAC1C"}
1
+ {"version":3,"names":["COINBASE_METHODS","exports","REQUEST_ACCOUNTS","SIGN_TRANSACTION","SEND_TRANSACTION","SIGN_MESSAGE","SIGN_TYPED_DATA_V3","SIGN_TYPED_DATA_V4","SWITCH_CHAIN","ADD_ETHEREUM_CHAIN","WATCH_ASSET","isValidMethod","method","Object","values","includes","getCoinbaseNamespace","namespaces","accounts","Error","namespace","caipAddresses","account","chains","forEach","chain","push","methods"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":";;;;;;;;AAOO,MAAMA,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG;EAC9BE,gBAAgB,EAAE,qBAAqB;EACvCC,gBAAgB,EAAE,qBAAqB;EACvCC,gBAAgB,EAAE,qBAAqB;EACvCC,YAAY,EAAE,eAAe;EAC7BC,kBAAkB,EAAE,sBAAsB;EAC1CC,kBAAkB,EAAE,sBAAsB;EAC1CC,YAAY,EAAE,4BAA4B;EAC1CC,kBAAkB,EAAE,yBAAyB;EAC7CC,WAAW,EAAE;AACf,CAAU;AAEH,SAASC,aAAaA,CAACC,MAAc,EAA4B;EACtE,OAAOC,MAAM,CAACC,MAAM,CAACd,gBAAgB,CAAC,CAACe,QAAQ,CAACH,MAAwB,CAAC;AAC3E;AAEO,SAASI,oBAAoBA,CAClCC,UAA+B,EAC/BC,QAAmB,EACP;EACZ,IAAI,CAACD,UAAU,IAAI,CAACC,QAAQ,EAAE;IAC5B,MAAM,IAAIC,KAAK,CAAC,qDAAqD,CAAC;EACxE;EAEA,MAAMC,SAAS,GAAGH,UAAU,CAAC,QAAQ,CAAC;EAEtC,IAAI,CAACG,SAAS,EAAE;IACd,MAAM,IAAID,KAAK,CAAC,wCAAwC,CAAC;EAC3D;EAEA,IAAIE,aAA4B,GAAG,EAAE;EAErC,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAAE;IAC9BE,SAAS,CAACG,MAAM,EAAEC,OAAO,CAACC,KAAK,IAAI;MACjCJ,aAAa,CAACK,IAAI,CAAC,GAAGD,KAAK,IAAIH,OAAO,EAAE,CAAC;IAC3C,CAAC,CAAC;EACJ;EAEA,OAAO;IACL,CAAC,QAAQ,GAAG;MACV,GAAGF,SAAS;MACZO,OAAO,EAAEd,MAAM,CAACC,MAAM,CAACd,gBAAgB,CAAC;MACxCkB,QAAQ,EAAEG;IACZ;EACF,CAAC;AACH","ignoreList":[]}
@@ -1,5 +1,7 @@
1
- import { WalletConnector } from '@reown/appkit-common-react-native';
2
- import { getCoinbaseNamespace, hexToString, numberToHex } from '../utils';
1
+ "use strict";
2
+
3
+ import { WalletConnector, NumberUtil, StringUtil } from '@reown/appkit-common-react-native';
4
+ import { getCoinbaseNamespace } from '../utils';
3
5
  import { CoinbaseProvider } from '../providers/CoinbaseProvider';
4
6
  const SESSION_KEY = '@appkit/coinbase-connector/session';
5
7
  export class CoinbaseConnector extends WalletConnector {
@@ -8,16 +10,17 @@ export class CoinbaseConnector extends WalletConnector {
8
10
  super({
9
11
  type: 'coinbase'
10
12
  });
11
- this.config = config;
13
+ this.config = config ?? {};
12
14
  }
13
15
  async init(ops) {
14
16
  super.init(ops);
15
- if (!ops.metadata.redirect?.universal) {
16
- throw new Error('CoinbaseConnector: Universal link not found in metadata');
17
+ const redirect = ops.metadata.redirect?.universal ?? ops.metadata.redirect?.native;
18
+ if (!redirect) {
19
+ throw new Error('CoinbaseConnector: Redirect link not found in metadata');
17
20
  }
18
21
  this.provider = new CoinbaseProvider({
19
- redirect: ops.metadata.redirect.universal,
20
- // use config storage only, as it needs to be mmkv-compatible
22
+ redirect,
23
+ // use config storage, as it needs to be mmkv-compatible
21
24
  storage: this.config.storage
22
25
  });
23
26
  await this.restoreSession();
@@ -47,11 +50,10 @@ export class CoinbaseConnector extends WalletConnector {
47
50
  }
48
51
  getChainId() {
49
52
  const hexChainId = this.getProvider().getChainId();
50
- const chainId = hexToString(hexChainId);
53
+ const chainId = StringUtil.hexToString(hexChainId);
51
54
  return `${CoinbaseConnector.SUPPORTED_NAMESPACE}:${chainId}`;
52
55
  }
53
56
  getWalletInfo() {
54
- // TODO: Add icon
55
57
  return {
56
58
  name: 'Coinbase Wallet',
57
59
  description: 'Your home to everything onchain',
@@ -63,7 +65,7 @@ export class CoinbaseConnector extends WalletConnector {
63
65
  }
64
66
  async switchNetwork(network) {
65
67
  const provider = this.getProvider();
66
- const chainId_ = numberToHex(network.id);
68
+ const chainId_ = NumberUtil.convertNumericToHexString(network.id);
67
69
  try {
68
70
  await provider.request({
69
71
  method: 'wallet_switchEthereumChain',
@@ -100,9 +102,9 @@ export class CoinbaseConnector extends WalletConnector {
100
102
  }
101
103
  saveSession(namespaces) {
102
104
  const storage = this.getStorage();
103
- storage.setItem(SESSION_KEY, JSON.stringify({
105
+ storage.setItem(SESSION_KEY, {
104
106
  namespaces
105
- }));
107
+ });
106
108
  }
107
109
  async restoreSession() {
108
110
  const storage = this.getStorage();
@@ -112,7 +114,7 @@ export class CoinbaseConnector extends WalletConnector {
112
114
  }
113
115
  const {
114
116
  namespaces
115
- } = JSON.parse(session);
117
+ } = session;
116
118
  this.namespaces = namespaces;
117
119
  return true;
118
120
  }
@@ -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","JSON","stringify","session","getItem","parse"],"sourceRoot":"../../../src","sources":["connectors/CoinbaseConnector.ts"],"mappings":"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"}
1
+ {"version":3,"names":["WalletConnector","NumberUtil","StringUtil","getCoinbaseNamespace","CoinbaseProvider","SESSION_KEY","CoinbaseConnector","SUPPORTED_NAMESPACE","constructor","config","type","init","ops","redirect","metadata","universal","native","Error","provider","storage","restoreSession","connect","opts","accounts","getProvider","namespaces","saveSession","disconnect","deleteSession","getNamespaces","getChainId","hexChainId","chainId","hexToString","getWalletInfo","name","description","url","getProperties","undefined","switchNetwork","network","chainId_","convertNumericToHexString","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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","ignoreList":[]}
@@ -1,2 +1,4 @@
1
+ "use strict";
2
+
1
3
  export { CoinbaseConnector } from './connectors/CoinbaseConnector';
2
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["CoinbaseConnector"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,gCAAgC"}
1
+ {"version":3,"names":["CoinbaseConnector"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,gCAAgC","ignoreList":[]}
@@ -1,7 +1,11 @@
1
+ "use strict";
2
+
1
3
  import EventEmitter from 'events';
4
+ import { StringUtil } from '@reown/appkit-common-react-native';
2
5
  import { configure, WalletMobileSDKEVMProvider } from '@coinbase/wallet-mobile-sdk';
3
6
  import { isValidMethod } from '../utils';
4
7
  export class CoinbaseProvider extends EventEmitter {
8
+ chainChangedListeners = new Map();
5
9
  constructor(config) {
6
10
  super();
7
11
  this.config = config;
@@ -30,9 +34,6 @@ export class CoinbaseProvider extends EventEmitter {
30
34
  } else {
31
35
  accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
32
36
  }
33
-
34
- //TODO: check switch chain
35
-
36
37
  return accounts;
37
38
  } catch (error) {
38
39
  console.warn('CoinbaseProvider: connect error', error);
@@ -52,10 +53,38 @@ export class CoinbaseProvider extends EventEmitter {
52
53
  getChainId() {
53
54
  return this.provider.chainId;
54
55
  }
56
+ onChainChanged(hexChainId) {
57
+ const chainId = StringUtil.hexToString(hexChainId);
58
+ this.emit('chainChanged', {
59
+ chainId
60
+ });
61
+ }
55
62
  on(event, listener) {
63
+ if (event === 'chainChanged') {
64
+ // Create middleware that formats the chain ID before calling the original listener
65
+ const chainChangedMiddleware = hexChainId => {
66
+ const chainId = StringUtil.hexToString(hexChainId);
67
+ listener(chainId);
68
+ };
69
+
70
+ // Store the mapping between original listener and middleware
71
+ this.chainChangedListeners.set(listener, chainChangedMiddleware);
72
+ return this.provider.on('chainChanged', chainChangedMiddleware);
73
+ }
56
74
  return this.provider.on(event, listener);
57
75
  }
58
76
  off(event, listener) {
77
+ if (event === 'chainChanged') {
78
+ // Get the middleware wrapper for this listener
79
+ const middleware = this.chainChangedListeners.get(listener);
80
+ if (middleware) {
81
+ // Remove the middleware from the provider
82
+ this.provider.off('chainChanged', middleware);
83
+ // Remove the mapping
84
+ this.chainChangedListeners.delete(listener);
85
+ return this;
86
+ }
87
+ }
59
88
  return this.provider.off(event, listener);
60
89
  }
61
90
  }
@@ -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;AAGxC,OAAO,MAAMC,gBAAgB,SAASJ,YAAY,CAAqB;EAIrEK,WAAWA,CAACC,MAA8B,EAAE;IAC1C,KAAK,CAAC,CAAC;IACP,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpBL,SAAS,CAAC;MACRM,OAAO,EAAE,IAAIC,GAAG,CAAC,oCAAoC,CAAC;MACtDC,WAAW,EAAE,IAAID,GAAG,CAAC,IAAI,CAACF,MAAM,CAACI,QAAQ,CAAC;MAAE;MAC5CC,eAAe,EAAE;IACnB,CAAC,CAAC;IACF,IAAI,CAACC,QAAQ,GAAG,IAAIV,0BAA0B,CAAC;MAC7C,GAAG,IAAI,CAACI,MAAM;MACdO,UAAU,EAAE,IAAI,CAACP,MAAM,CAACQ,MAAM;MAC9BC,OAAO,EAAE,IAAI,CAACT,MAAM,CAACU,YAAY;MACjCC,OAAO,EAAE,IAAI,CAACX,MAAM,CAACW;IACvB,CAAC,CAAC;EACJ;EAEA,MAAMC,OAAOA,CAAA,EAA6B;IACxC,IAAI;MACF,IAAIC,QAAkB,GAAG,EAAE;MAC3B,MAAMC,WAAW,GAAG,IAAI,CAACR,QAAQ,CAACS,SAAS;MAE3C,IAAI,CAACD,WAAW,EAAE;QAChBD,QAAQ,GAAG,MAAM,IAAI,CAACP,QAAQ,CAACU,OAAO,CAAC;UACrCC,MAAM,EAAE,qBAAqB;UAC7BC,MAAM,EAAE;QACV,CAAC,CAAC;MACJ,CAAC,MAAM;QACLL,QAAQ,GAAG,IAAI,CAACP,QAAQ,CAACa,eAAe,GAAG,CAAC,IAAI,CAACb,QAAQ,CAACa,eAAe,CAAC,GAAG,EAAE;MACjF;;MAEA;;MAEA,OAAON,QAAQ;IACjB,CAAC,CAAC,OAAOO,KAAK,EAAE;MACdC,OAAO,CAACC,IAAI,CAAC,iCAAiC,EAAEF,KAAK,CAAC;MAEtD,MAAMA,KAAK;IACb;EACF;EACA,MAAMG,UAAUA,CAAA,EAAkB;IAChC,IAAI,CAACjB,QAAQ,CAACiB,UAAU,CAAC,CAAC;IAE1B,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;EAC1B;EAEAT,OAAOA,CAAcU,IAAsB,EAAc;IACvD,IAAI,CAAC7B,aAAa,CAAC6B,IAAI,CAACT,MAAM,CAAC,EAAE;MAC/B,MAAM,IAAIU,KAAK,CAAE,qCAAoCD,IAAI,CAACT,MAAO,EAAC,CAAC;IACrE;IAEA,OAAO,IAAI,CAACX,QAAQ,CAACU,OAAO,CAACU,IAAI,CAAC;EACpC;EAEAE,UAAUA,CAAA,EAAkB;IAC1B,OAAO,IAAI,CAACtB,QAAQ,CAACG,OAAO;EAC9B;EAESoB,EAAEA,CAACC,KAAa,EAAEC,QAA8B,EAAO;IAC9D,OAAO,IAAI,CAACzB,QAAQ,CAACuB,EAAE,CAACC,KAAK,EAAEC,QAAQ,CAAC;EAC1C;EAESC,GAAGA,CAACF,KAAa,EAAEC,QAA8B,EAAO;IAC/D,OAAO,IAAI,CAACzB,QAAQ,CAAC0B,GAAG,CAACF,KAAK,EAAEC,QAAQ,CAAC;EAC3C;AACF"}
1
+ {"version":3,"names":["EventEmitter","StringUtil","configure","WalletMobileSDKEVMProvider","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","hexToString","emit","on","event","listener","chainChangedMiddleware","set","off","middleware","get","delete"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,4 @@
1
+ "use strict";
2
+
1
3
  export {};
2
4
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":""}
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ "use strict";
2
+
1
3
  export const COINBASE_METHODS = {
2
4
  REQUEST_ACCOUNTS: 'eth_requestAccounts',
3
5
  SIGN_TRANSACTION: 'eth_signTransaction',
@@ -34,16 +36,4 @@ export function getCoinbaseNamespace(namespaces, accounts) {
34
36
  }
35
37
  };
36
38
  }
37
- export function numberToHex(value) {
38
- // Convert string to number first, then to hex
39
- const num = typeof value === 'string' ? parseInt(value, 10) : value;
40
- return `0x${num.toString(16)}`;
41
- }
42
- export function hexToString(hexValue) {
43
- // Remove 0x prefix if present
44
- const cleanHex = hexValue.startsWith('0x') ? hexValue.slice(2) : hexValue;
45
- // Convert hex to decimal number, then to string
46
-
47
- return parseInt(cleanHex, 16).toString();
48
- }
49
39
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["COINBASE_METHODS","REQUEST_ACCOUNTS","SIGN_TRANSACTION","SEND_TRANSACTION","SIGN_MESSAGE","SIGN_TYPED_DATA_V3","SIGN_TYPED_DATA_V4","SWITCH_CHAIN","ADD_ETHEREUM_CHAIN","WATCH_ASSET","isValidMethod","method","Object","values","includes","getCoinbaseNamespace","namespaces","accounts","Error","namespace","caipAddresses","account","chains","forEach","chain","push","methods","numberToHex","value","num","parseInt","toString","hexToString","hexValue","cleanHex","startsWith","slice"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":"AAOA,OAAO,MAAMA,gBAAgB,GAAG;EAC9BC,gBAAgB,EAAE,qBAAqB;EACvCC,gBAAgB,EAAE,qBAAqB;EACvCC,gBAAgB,EAAE,qBAAqB;EACvCC,YAAY,EAAE,eAAe;EAC7BC,kBAAkB,EAAE,sBAAsB;EAC1CC,kBAAkB,EAAE,sBAAsB;EAC1CC,YAAY,EAAE,4BAA4B;EAC1CC,kBAAkB,EAAE,yBAAyB;EAC7CC,WAAW,EAAE;AACf,CAAU;AAEV,OAAO,SAASC,aAAaA,CAACC,MAAc,EAA4B;EACtE,OAAOC,MAAM,CAACC,MAAM,CAACb,gBAAgB,CAAC,CAACc,QAAQ,CAACH,MAAwB,CAAC;AAC3E;AAEA,OAAO,SAASI,oBAAoBA,CAClCC,UAA+B,EAC/BC,QAAmB,EACP;EACZ,IAAI,CAACD,UAAU,IAAI,CAACC,QAAQ,EAAE;IAC5B,MAAM,IAAIC,KAAK,CAAC,qDAAqD,CAAC;EACxE;EAEA,MAAMC,SAAS,GAAGH,UAAU,CAAC,QAAQ,CAAC;EAEtC,IAAI,CAACG,SAAS,EAAE;IACd,MAAM,IAAID,KAAK,CAAC,wCAAwC,CAAC;EAC3D;EAEA,IAAIE,aAA4B,GAAG,EAAE;EAErC,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAAE;IAC9BE,SAAS,CAACG,MAAM,EAAEC,OAAO,CAACC,KAAK,IAAI;MACjCJ,aAAa,CAACK,IAAI,CAAE,GAAED,KAAM,IAAGH,OAAQ,EAAC,CAAC;IAC3C,CAAC,CAAC;EACJ;EAEA,OAAO;IACL,CAAC,QAAQ,GAAG;MACV,GAAGF,SAAS;MACZO,OAAO,EAAEd,MAAM,CAACC,MAAM,CAACb,gBAAgB,CAAC;MACxCiB,QAAQ,EAAEG;IACZ;EACF,CAAC;AACH;AAEA,OAAO,SAASO,WAAWA,CAACC,KAAsB,EAAE;EAClD;EACA,MAAMC,GAAG,GAAG,OAAOD,KAAK,KAAK,QAAQ,GAAGE,QAAQ,CAACF,KAAK,EAAE,EAAE,CAAC,GAAGA,KAAK;EAEnE,OAAQ,KAAIC,GAAG,CAACE,QAAQ,CAAC,EAAE,CAAE,EAAC;AAChC;AAEA,OAAO,SAASC,WAAWA,CAACC,QAAgB,EAAE;EAC5C;EACA,MAAMC,QAAQ,GAAGD,QAAQ,CAACE,UAAU,CAAC,IAAI,CAAC,GAAGF,QAAQ,CAACG,KAAK,CAAC,CAAC,CAAC,GAAGH,QAAQ;EACzE;;EAEA,OAAOH,QAAQ,CAACI,QAAQ,EAAE,EAAE,CAAC,CAACH,QAAQ,CAAC,CAAC;AAC1C"}
1
+ {"version":3,"names":["COINBASE_METHODS","REQUEST_ACCOUNTS","SIGN_TRANSACTION","SEND_TRANSACTION","SIGN_MESSAGE","SIGN_TYPED_DATA_V3","SIGN_TYPED_DATA_V4","SWITCH_CHAIN","ADD_ETHEREUM_CHAIN","WATCH_ASSET","isValidMethod","method","Object","values","includes","getCoinbaseNamespace","namespaces","accounts","Error","namespace","caipAddresses","account","chains","forEach","chain","push","methods"],"sourceRoot":"../../src","sources":["utils.ts"],"mappings":";;AAOA,OAAO,MAAMA,gBAAgB,GAAG;EAC9BC,gBAAgB,EAAE,qBAAqB;EACvCC,gBAAgB,EAAE,qBAAqB;EACvCC,gBAAgB,EAAE,qBAAqB;EACvCC,YAAY,EAAE,eAAe;EAC7BC,kBAAkB,EAAE,sBAAsB;EAC1CC,kBAAkB,EAAE,sBAAsB;EAC1CC,YAAY,EAAE,4BAA4B;EAC1CC,kBAAkB,EAAE,yBAAyB;EAC7CC,WAAW,EAAE;AACf,CAAU;AAEV,OAAO,SAASC,aAAaA,CAACC,MAAc,EAA4B;EACtE,OAAOC,MAAM,CAACC,MAAM,CAACb,gBAAgB,CAAC,CAACc,QAAQ,CAACH,MAAwB,CAAC;AAC3E;AAEA,OAAO,SAASI,oBAAoBA,CAClCC,UAA+B,EAC/BC,QAAmB,EACP;EACZ,IAAI,CAACD,UAAU,IAAI,CAACC,QAAQ,EAAE;IAC5B,MAAM,IAAIC,KAAK,CAAC,qDAAqD,CAAC;EACxE;EAEA,MAAMC,SAAS,GAAGH,UAAU,CAAC,QAAQ,CAAC;EAEtC,IAAI,CAACG,SAAS,EAAE;IACd,MAAM,IAAID,KAAK,CAAC,wCAAwC,CAAC;EAC3D;EAEA,IAAIE,aAA4B,GAAG,EAAE;EAErC,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAAE;IAC9BE,SAAS,CAACG,MAAM,EAAEC,OAAO,CAACC,KAAK,IAAI;MACjCJ,aAAa,CAACK,IAAI,CAAC,GAAGD,KAAK,IAAIH,OAAO,EAAE,CAAC;IAC3C,CAAC,CAAC;EACJ;EAEA,OAAO;IACL,CAAC,QAAQ,GAAG;MACV,GAAGF,SAAS;MACZO,OAAO,EAAEd,MAAM,CAACC,MAAM,CAACb,gBAAgB,CAAC;MACxCiB,QAAQ,EAAEG;IACZ;EACF,CAAC;AACH","ignoreList":[]}
@@ -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: CoinbaseConnectorConfig);
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;IAK5B,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"}
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,EAIhB,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;IAiB9B,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;IAQvC,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"}
@@ -1,15 +1,17 @@
1
1
  /// <reference types="node" />
2
2
  import EventEmitter from 'events';
3
- import type { Provider, RequestArguments } from '@reown/appkit-common-react-native';
3
+ import { type Provider, type RequestArguments } from '@reown/appkit-common-react-native';
4
4
  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;gBAEjC,MAAM,EAAE,sBAAsB;IAgBpC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;IAuBnC,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;IAIlB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;IAItD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;CAGjE"}
1
+ {"version":3,"file":"CoinbaseProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/CoinbaseProvider.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,gBAAgB,EAEtB,MAAM,mCAAmC,CAAC;AAG3C,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"}
@@ -13,6 +13,4 @@ export declare const COINBASE_METHODS: {
13
13
  };
14
14
  export declare function isValidMethod(method: string): method is CoinbaseMethod;
15
15
  export declare function getCoinbaseNamespace(namespaces?: ProposalNamespaces, accounts?: string[]): Namespaces;
16
- export declare function numberToHex(value: string | number): string;
17
- export declare function hexToString(hexValue: string): string;
18
16
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,gBAAgB;;;;;;;;;;CAUnB,CAAC;AAEX,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc,CAEtE;AAED,wBAAgB,oBAAoB,CAClC,UAAU,CAAC,EAAE,kBAAkB,EAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,UAAU,CA0BZ;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,UAKjD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,UAM3C"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,gBAAgB;;;;;;;;;;CAUnB,CAAC;AAEX,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,cAAc,CAEtE;AAED,wBAAgB,oBAAoB,CAClC,UAAU,CAAC,EAAE,kBAAkB,EAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,UAAU,CA0BZ"}
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@reown/appkit-coinbase-react-native",
3
- "version": "0.0.1",
3
+ "version": "2.0.0-alpha.3",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "types": "lib/typescript/index.d.ts",
6
6
  "module": "lib/module/index.js",
7
+ "react-native": "src/index.ts",
7
8
  "source": "src/index.ts",
8
9
  "scripts": {
9
10
  "build": "bob build",
@@ -24,7 +25,7 @@
24
25
  "coinbase"
25
26
  ],
26
27
  "repository": "https://github.com/reown-com/appkit-react-native",
27
- "author": "Reown <support@reown.com> (https://reown.com)",
28
+ "author": "Reown (https://discord.gg/reown)",
28
29
  "homepage": "https://reown.com/appkit",
29
30
  "license": "Apache-2.0",
30
31
  "bugs": {
@@ -35,28 +36,15 @@
35
36
  "access": "public"
36
37
  },
37
38
  "dependencies": {
38
- "@reown/appkit-common-react-native": "2.0.0-alpha.1"
39
+ "@reown/appkit-common-react-native": "2.0.0-alpha.3"
39
40
  },
40
41
  "peerDependencies": {
41
- "@coinbase/wallet-mobile-sdk": ">=1.1.2"
42
- },
43
- "react-native": "src/index.ts",
44
- "react-native-builder-bob": {
45
- "source": "src",
46
- "output": "lib",
47
- "targets": [
48
- "commonjs",
49
- "module",
50
- [
51
- "typescript",
52
- {
53
- "tsc": "../../node_modules/.bin/tsc"
54
- }
55
- ]
56
- ]
42
+ "@coinbase/wallet-mobile-sdk": ">=1.1.2",
43
+ "react": ">=18",
44
+ "react-native": ">=0.72"
57
45
  },
58
46
  "eslintIgnore": [
59
47
  "node_modules/",
60
48
  "lib/"
61
49
  ]
62
- }
50
+ }
@@ -8,9 +8,11 @@ import {
8
8
  type ConnectorInitOptions,
9
9
  type Namespaces,
10
10
  type WalletInfo,
11
- type Storage
11
+ type Storage,
12
+ NumberUtil,
13
+ StringUtil
12
14
  } from '@reown/appkit-common-react-native';
13
- import { getCoinbaseNamespace, hexToString, numberToHex } from '../utils';
15
+ import { getCoinbaseNamespace } from '../utils';
14
16
  import { CoinbaseProvider } from '../providers/CoinbaseProvider';
15
17
  import type { CoinbaseConnectorConfig, CoinbaseSession } from '../types';
16
18
 
@@ -20,21 +22,22 @@ export class CoinbaseConnector extends WalletConnector {
20
22
  private static readonly SUPPORTED_NAMESPACE: ChainNamespace = 'eip155';
21
23
  private config: CoinbaseConnectorConfig;
22
24
 
23
- constructor(config: CoinbaseConnectorConfig) {
25
+ constructor(config?: CoinbaseConnectorConfig) {
24
26
  super({ type: 'coinbase' });
25
- this.config = config;
27
+ this.config = config ?? {};
26
28
  }
27
29
 
28
30
  override async init(ops: ConnectorInitOptions) {
29
31
  super.init(ops);
30
32
 
31
- if (!ops.metadata.redirect?.universal) {
32
- throw new Error('CoinbaseConnector: Universal link not found in metadata');
33
+ const redirect = ops.metadata.redirect?.universal ?? ops.metadata.redirect?.native;
34
+ if (!redirect) {
35
+ throw new Error('CoinbaseConnector: Redirect link not found in metadata');
33
36
  }
34
37
 
35
38
  this.provider = new CoinbaseProvider({
36
- redirect: ops.metadata.redirect.universal,
37
- // use config storage only, as it needs to be mmkv-compatible
39
+ redirect,
40
+ // use config storage, as it needs to be mmkv-compatible
38
41
  storage: this.config.storage
39
42
  });
40
43
 
@@ -74,13 +77,12 @@ export class CoinbaseConnector extends WalletConnector {
74
77
 
75
78
  override getChainId(): CaipNetworkId | undefined {
76
79
  const hexChainId = this.getProvider().getChainId();
77
- const chainId = hexToString(hexChainId);
80
+ const chainId = StringUtil.hexToString(hexChainId);
78
81
 
79
82
  return `${CoinbaseConnector.SUPPORTED_NAMESPACE}:${chainId}` as CaipNetworkId;
80
83
  }
81
84
 
82
85
  override getWalletInfo(): WalletInfo | undefined {
83
- // TODO: Add icon
84
86
  return {
85
87
  name: 'Coinbase Wallet',
86
88
  description: 'Your home to everything onchain',
@@ -94,7 +96,7 @@ export class CoinbaseConnector extends WalletConnector {
94
96
 
95
97
  override async switchNetwork(network: AppKitNetwork): Promise<void> {
96
98
  const provider = this.getProvider();
97
- const chainId_ = numberToHex(network.id);
99
+ const chainId_ = NumberUtil.convertNumericToHexString(network.id);
98
100
 
99
101
  try {
100
102
  await provider.request({
@@ -134,17 +136,17 @@ export class CoinbaseConnector extends WalletConnector {
134
136
 
135
137
  private saveSession(namespaces: Namespaces): void {
136
138
  const storage = this.getStorage();
137
- storage.setItem(SESSION_KEY, JSON.stringify({ namespaces }));
139
+ storage.setItem<CoinbaseSession>(SESSION_KEY, { namespaces });
138
140
  }
139
141
 
140
142
  override async restoreSession(): Promise<boolean> {
141
143
  const storage = this.getStorage();
142
- const session = await storage.getItem<string>(SESSION_KEY);
144
+ const session = await storage.getItem<CoinbaseSession>(SESSION_KEY);
143
145
  if (!session) {
144
146
  return false;
145
147
  }
146
148
 
147
- const { namespaces } = JSON.parse(session) as CoinbaseSession;
149
+ const { namespaces } = session;
148
150
  this.namespaces = namespaces;
149
151
 
150
152
  return true;
@@ -1,5 +1,9 @@
1
1
  import EventEmitter from 'events';
2
- import type { Provider, RequestArguments } from '@reown/appkit-common-react-native';
2
+ import {
3
+ type Provider,
4
+ type RequestArguments,
5
+ StringUtil
6
+ } from '@reown/appkit-common-react-native';
3
7
  import { configure, WalletMobileSDKEVMProvider } from '@coinbase/wallet-mobile-sdk';
4
8
  import { isValidMethod } from '../utils';
5
9
  import type { CoinbaseProviderConfig } from '../types';
@@ -7,6 +11,10 @@ import type { CoinbaseProviderConfig } from '../types';
7
11
  export class CoinbaseProvider extends EventEmitter implements Provider {
8
12
  private readonly config: CoinbaseProviderConfig;
9
13
  private provider: WalletMobileSDKEVMProvider;
14
+ private chainChangedListeners = new Map<
15
+ (args?: any) => void,
16
+ (hexChainId: `0x${string}`) => void
17
+ >();
10
18
 
11
19
  constructor(config: CoinbaseProviderConfig) {
12
20
  super();
@@ -38,8 +46,6 @@ export class CoinbaseProvider extends EventEmitter implements Provider {
38
46
  accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
39
47
  }
40
48
 
41
- //TODO: check switch chain
42
-
43
49
  return accounts as T;
44
50
  } catch (error) {
45
51
  console.warn('CoinbaseProvider: connect error', error);
@@ -65,11 +71,42 @@ export class CoinbaseProvider extends EventEmitter implements Provider {
65
71
  return this.provider.chainId as `0x${string}`;
66
72
  }
67
73
 
74
+ onChainChanged(hexChainId: `0x${string}`): void {
75
+ const chainId = StringUtil.hexToString(hexChainId);
76
+ this.emit('chainChanged', { chainId });
77
+ }
78
+
68
79
  override on(event: string, listener: (args?: any) => void): any {
80
+ if (event === 'chainChanged') {
81
+ // Create middleware that formats the chain ID before calling the original listener
82
+ const chainChangedMiddleware = (hexChainId: `0x${string}`) => {
83
+ const chainId = StringUtil.hexToString(hexChainId);
84
+ listener(chainId);
85
+ };
86
+
87
+ // Store the mapping between original listener and middleware
88
+ this.chainChangedListeners.set(listener, chainChangedMiddleware);
89
+
90
+ return this.provider.on('chainChanged', chainChangedMiddleware);
91
+ }
92
+
69
93
  return this.provider.on(event, listener);
70
94
  }
71
95
 
72
96
  override off(event: string, listener: (args?: any) => void): any {
97
+ if (event === 'chainChanged') {
98
+ // Get the middleware wrapper for this listener
99
+ const middleware = this.chainChangedListeners.get(listener);
100
+ if (middleware) {
101
+ // Remove the middleware from the provider
102
+ this.provider.off('chainChanged', middleware);
103
+ // Remove the mapping
104
+ this.chainChangedListeners.delete(listener);
105
+
106
+ return this;
107
+ }
108
+ }
109
+
73
110
  return this.provider.off(event, listener);
74
111
  }
75
112
  }
package/src/utils.ts CHANGED
@@ -51,18 +51,3 @@ export function getCoinbaseNamespace(
51
51
  }
52
52
  };
53
53
  }
54
-
55
- export function numberToHex(value: string | number) {
56
- // Convert string to number first, then to hex
57
- const num = typeof value === 'string' ? parseInt(value, 10) : value;
58
-
59
- return `0x${num.toString(16)}`;
60
- }
61
-
62
- export function hexToString(hexValue: string) {
63
- // Remove 0x prefix if present
64
- const cleanHex = hexValue.startsWith('0x') ? hexValue.slice(2) : hexValue;
65
- // Convert hex to decimal number, then to string
66
-
67
- return parseInt(cleanHex, 16).toString();
68
- }