@reown/appkit-core-react-native 0.0.0-feat-multichain-20250520183003 → 0.0.0-feat-onramp-20250602135932

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.
Files changed (140) hide show
  1. package/lib/commonjs/controllers/ApiController.js +11 -11
  2. package/lib/commonjs/controllers/ApiController.js.map +1 -1
  3. package/lib/commonjs/controllers/BlockchainApiController.js +14 -102
  4. package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
  5. package/lib/commonjs/controllers/ConnectionController.js +1 -7
  6. package/lib/commonjs/controllers/ConnectionController.js.map +1 -1
  7. package/lib/commonjs/controllers/ConnectorController.js +0 -1
  8. package/lib/commonjs/controllers/ConnectorController.js.map +1 -1
  9. package/lib/commonjs/controllers/ModalController.js.map +1 -1
  10. package/lib/commonjs/controllers/OnRampController.js +2 -1
  11. package/lib/commonjs/controllers/OnRampController.js.map +1 -1
  12. package/lib/commonjs/controllers/OptionsController.js +3 -3
  13. package/lib/commonjs/controllers/OptionsController.js.map +1 -1
  14. package/lib/commonjs/controllers/RouterController.js.map +1 -1
  15. package/lib/commonjs/controllers/SwapController.js +5 -13
  16. package/lib/commonjs/controllers/SwapController.js.map +1 -1
  17. package/lib/commonjs/controllers/ThemeController.js +1 -9
  18. package/lib/commonjs/controllers/ThemeController.js.map +1 -1
  19. package/lib/commonjs/controllers/TransactionsController.js +2 -2
  20. package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
  21. package/lib/commonjs/index.js +3 -3
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/commonjs/utils/AssetUtil.js +6 -5
  24. package/lib/commonjs/utils/AssetUtil.js.map +1 -1
  25. package/lib/commonjs/utils/ConnectionUtil.js +33 -0
  26. package/lib/commonjs/utils/ConnectionUtil.js.map +1 -0
  27. package/lib/commonjs/utils/ConstantsUtil.js +8 -110
  28. package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
  29. package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
  30. package/lib/commonjs/utils/StorageUtil.js +0 -67
  31. package/lib/commonjs/utils/StorageUtil.js.map +1 -1
  32. package/lib/commonjs/utils/SwapApiUtil.js +4 -9
  33. package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
  34. package/lib/module/controllers/ApiController.js +11 -11
  35. package/lib/module/controllers/ApiController.js.map +1 -1
  36. package/lib/module/controllers/BlockchainApiController.js +14 -102
  37. package/lib/module/controllers/BlockchainApiController.js.map +1 -1
  38. package/lib/module/controllers/ConnectionController.js +1 -7
  39. package/lib/module/controllers/ConnectionController.js.map +1 -1
  40. package/lib/module/controllers/ConnectorController.js +0 -1
  41. package/lib/module/controllers/ConnectorController.js.map +1 -1
  42. package/lib/module/controllers/ModalController.js.map +1 -1
  43. package/lib/module/controllers/OnRampController.js +2 -1
  44. package/lib/module/controllers/OnRampController.js.map +1 -1
  45. package/lib/module/controllers/OptionsController.js +3 -3
  46. package/lib/module/controllers/OptionsController.js.map +1 -1
  47. package/lib/module/controllers/RouterController.js.map +1 -1
  48. package/lib/module/controllers/SwapController.js +5 -13
  49. package/lib/module/controllers/SwapController.js.map +1 -1
  50. package/lib/module/controllers/ThemeController.js +1 -9
  51. package/lib/module/controllers/ThemeController.js.map +1 -1
  52. package/lib/module/controllers/TransactionsController.js +2 -2
  53. package/lib/module/controllers/TransactionsController.js.map +1 -1
  54. package/lib/module/index.js +1 -1
  55. package/lib/module/index.js.map +1 -1
  56. package/lib/module/utils/AssetUtil.js +6 -5
  57. package/lib/module/utils/AssetUtil.js.map +1 -1
  58. package/lib/module/utils/ConnectionUtil.js +27 -0
  59. package/lib/module/utils/ConnectionUtil.js.map +1 -0
  60. package/lib/module/utils/ConstantsUtil.js +8 -110
  61. package/lib/module/utils/ConstantsUtil.js.map +1 -1
  62. package/lib/module/utils/CoreHelperUtil.js.map +1 -1
  63. package/lib/module/utils/StorageUtil.js +0 -67
  64. package/lib/module/utils/StorageUtil.js.map +1 -1
  65. package/lib/module/utils/SwapApiUtil.js +4 -9
  66. package/lib/module/utils/SwapApiUtil.js.map +1 -1
  67. package/lib/typescript/controllers/AccountController.d.ts +2 -2
  68. package/lib/typescript/controllers/AccountController.d.ts.map +1 -1
  69. package/lib/typescript/controllers/ApiController.d.ts +1 -1
  70. package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
  71. package/lib/typescript/controllers/BlockchainApiController.d.ts +1 -14
  72. package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
  73. package/lib/typescript/controllers/ConnectionController.d.ts +0 -2
  74. package/lib/typescript/controllers/ConnectionController.d.ts.map +1 -1
  75. package/lib/typescript/controllers/ConnectorController.d.ts.map +1 -1
  76. package/lib/typescript/controllers/ModalController.d.ts +1 -1
  77. package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
  78. package/lib/typescript/controllers/NetworkController.d.ts +1 -1
  79. package/lib/typescript/controllers/NetworkController.d.ts.map +1 -1
  80. package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
  81. package/lib/typescript/controllers/OptionsController.d.ts +2 -3
  82. package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
  83. package/lib/typescript/controllers/PublicStateController.d.ts +1 -1
  84. package/lib/typescript/controllers/PublicStateController.d.ts.map +1 -1
  85. package/lib/typescript/controllers/RouterController.d.ts +1 -2
  86. package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
  87. package/lib/typescript/controllers/SwapController.d.ts.map +1 -1
  88. package/lib/typescript/controllers/ThemeController.d.ts +1 -1
  89. package/lib/typescript/controllers/ThemeController.d.ts.map +1 -1
  90. package/lib/typescript/index.d.ts +1 -1
  91. package/lib/typescript/index.d.ts.map +1 -1
  92. package/lib/typescript/utils/AssetUtil.d.ts +2 -2
  93. package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
  94. package/lib/typescript/utils/ConnectionUtil.d.ts +4 -0
  95. package/lib/typescript/utils/ConnectionUtil.d.ts.map +1 -0
  96. package/lib/typescript/utils/ConstantsUtil.d.ts +1 -102
  97. package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
  98. package/lib/typescript/utils/CoreHelperUtil.d.ts +2 -2
  99. package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
  100. package/lib/typescript/utils/FetchUtil.d.ts +1 -1
  101. package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
  102. package/lib/typescript/utils/NetworkUtil.d.ts +1 -1
  103. package/lib/typescript/utils/NetworkUtil.d.ts.map +1 -1
  104. package/lib/typescript/utils/StorageUtil.d.ts +1 -13
  105. package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
  106. package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
  107. package/lib/typescript/utils/TypeUtil.d.ts +14 -3
  108. package/lib/typescript/utils/TypeUtil.d.ts.map +1 -1
  109. package/package.json +2 -2
  110. package/src/controllers/AccountController.ts +2 -2
  111. package/src/controllers/ApiController.ts +7 -12
  112. package/src/controllers/BlockchainApiController.ts +14 -134
  113. package/src/controllers/ConnectionController.ts +1 -9
  114. package/src/controllers/ConnectorController.ts +0 -1
  115. package/src/controllers/ModalController.ts +1 -2
  116. package/src/controllers/NetworkController.ts +1 -1
  117. package/src/controllers/OnRampController.ts +5 -1
  118. package/src/controllers/OptionsController.ts +6 -7
  119. package/src/controllers/PublicStateController.ts +1 -1
  120. package/src/controllers/RouterController.ts +1 -2
  121. package/src/controllers/SwapController.ts +5 -14
  122. package/src/controllers/ThemeController.ts +2 -11
  123. package/src/controllers/TransactionsController.ts +2 -2
  124. package/src/index.ts +1 -5
  125. package/src/utils/AssetUtil.ts +7 -5
  126. package/src/utils/ConnectionUtil.ts +27 -0
  127. package/src/utils/ConstantsUtil.ts +8 -112
  128. package/src/utils/CoreHelperUtil.ts +3 -8
  129. package/src/utils/FetchUtil.ts +1 -1
  130. package/src/utils/NetworkUtil.ts +1 -1
  131. package/src/utils/StorageUtil.ts +1 -82
  132. package/src/utils/SwapApiUtil.ts +4 -10
  133. package/src/utils/TypeUtil.ts +19 -5
  134. package/lib/commonjs/controllers/ConnectionsController.js +0 -156
  135. package/lib/commonjs/controllers/ConnectionsController.js.map +0 -1
  136. package/lib/module/controllers/ConnectionsController.js +0 -151
  137. package/lib/module/controllers/ConnectionsController.js.map +0 -1
  138. package/lib/typescript/controllers/ConnectionsController.d.ts +0 -41
  139. package/lib/typescript/controllers/ConnectionsController.d.ts.map +0 -1
  140. package/src/controllers/ConnectionsController.ts +0 -236
@@ -1,6 +1,4 @@
1
1
  import { type EventEmitter } from 'events';
2
- import type { CaipAddress, CaipNetworkId } from '@reown/appkit-common-react-native';
3
-
4
2
  import type {
5
3
  Balance,
6
4
  SocialProvider,
@@ -8,13 +6,23 @@ import type {
8
6
  Transaction,
9
7
  ConnectorType
10
8
  } from '@reown/appkit-common-react-native';
11
-
12
9
  import { OnRampErrorType } from './ConstantsUtil';
13
10
 
14
11
  export interface BaseError {
15
12
  message?: string;
16
13
  }
17
14
 
15
+ export type CaipAddress = `${string}:${string}:${string}`;
16
+
17
+ export type CaipNetworkId = `${string}:${string}`;
18
+
19
+ export interface CaipNetwork {
20
+ id: CaipNetworkId;
21
+ name?: string;
22
+ imageId?: string;
23
+ imageUrl?: string;
24
+ }
25
+
18
26
  export type ConnectedWalletInfo =
19
27
  | {
20
28
  name?: string;
@@ -171,7 +179,6 @@ export interface BlockchainApiTransactionsRequest {
171
179
  onramp?: 'coinbase';
172
180
  signal?: AbortSignal;
173
181
  cache?: RequestCache;
174
- chainId?: CaipNetworkId;
175
182
  }
176
183
 
177
184
  export interface BlockchainApiTransactionsResponse {
@@ -339,6 +346,13 @@ export type BlockchainApiOnRampWidgetResponse = {
339
346
  };
340
347
 
341
348
  // -- OptionsController Types ---------------------------------------------------
349
+ export interface Token {
350
+ address: string;
351
+ image?: string;
352
+ }
353
+
354
+ export type Tokens = Record<CaipNetworkId, Token>;
355
+
342
356
  export type Metadata = {
343
357
  name: string;
344
358
  description: string;
@@ -447,7 +461,7 @@ export type Event =
447
461
  type: 'track';
448
462
  event: 'SWITCH_NETWORK';
449
463
  properties: {
450
- network: number | string;
464
+ network: string;
451
465
  };
452
466
  }
453
467
  | {
@@ -1,156 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.ConnectionsController = void 0;
7
- var _valtio = require("valtio");
8
- var _utils = require("valtio/utils");
9
- var _StorageUtil = require("../utils/StorageUtil");
10
- // -- Types --------------------------------------------- //
11
-
12
- //TODO: balance could be elsewhere
13
-
14
- // -- State --------------------------------------------- //
15
- const baseState = (0, _valtio.proxy)({
16
- activeNamespace: undefined,
17
- connections: {},
18
- networks: []
19
- });
20
- const derivedState = (0, _utils.derive)({
21
- activeAddress: get => {
22
- const snap = get(baseState);
23
- if (!snap.activeNamespace) return undefined;
24
- const connection = snap.connections[snap.activeNamespace];
25
- if (!connection || !connection.accounts || connection.accounts.length === 0) {
26
- return undefined;
27
- }
28
-
29
- //TODO: what happens if there are several accounts on the same chain?
30
- const activeAccount = connection.accounts.find(account => account.startsWith(connection.activeChain));
31
- return activeAccount;
32
- },
33
- activeBalance: get => {
34
- const snap = get(baseState);
35
- if (!snap.activeNamespace) return undefined;
36
- const connection = snap.connections[snap.activeNamespace];
37
- if (!connection || !connection.accounts || connection.accounts.length === 0) {
38
- return undefined;
39
- }
40
- const activeAccount = connection.accounts.find(account => account.startsWith(connection.activeChain));
41
- if (!connection || !connection.balances || !activeAccount || Object.keys(connection.balances).length === 0) {
42
- return undefined;
43
- }
44
- return connection.balances[activeAccount];
45
- },
46
- activeNetwork: get => {
47
- const snap = get(baseState);
48
- if (!snap.activeNamespace) return undefined;
49
- const connection = snap.connections[snap.activeNamespace];
50
- if (!connection) return undefined;
51
- return snap.networks.find(network => network.chainNamespace === snap.activeNamespace && network.id?.toString() === connection.activeChain?.split(':')[1]);
52
- },
53
- activeCaipNetworkId: get => {
54
- const snap = get(baseState);
55
- if (!snap.activeNamespace) return undefined;
56
- const connection = snap.connections[snap.activeNamespace];
57
- if (!connection) return undefined;
58
- return connection.activeChain;
59
- },
60
- walletInfo: get => {
61
- const snap = get(baseState);
62
- if (!snap.activeNamespace) return undefined;
63
- return snap.connections[snap.activeNamespace]?.wallet;
64
- }
65
- }, {
66
- proxy: baseState // Link derived proxy to the base state proxy
67
- });
68
-
69
- // -- Controller ---------------------------------------- //
70
- const ConnectionsController = exports.ConnectionsController = {
71
- state: derivedState,
72
- setActiveNamespace(namespace) {
73
- baseState.activeNamespace = namespace;
74
- _StorageUtil.StorageUtil.setActiveNamespace(namespace);
75
- },
76
- storeConnection({
77
- namespace,
78
- adapter,
79
- accounts,
80
- chains,
81
- wallet,
82
- activeChain
83
- }) {
84
- baseState.connections[namespace] = {
85
- balances: {},
86
- activeChain: activeChain ?? chains[0],
87
- adapter: (0, _valtio.ref)(adapter),
88
- accounts,
89
- chains,
90
- wallet
91
- };
92
- },
93
- updateAccounts(namespace, accounts) {
94
- const connection = baseState.connections[namespace];
95
- if (!connection) {
96
- return;
97
- }
98
- connection.accounts = accounts;
99
- },
100
- updateBalance(namespace, address, balance) {
101
- const connection = baseState.connections[namespace];
102
- if (!connection) {
103
- return;
104
- }
105
- connection.balances[address] = balance;
106
- },
107
- setActiveChain(namespace, chain) {
108
- const connection = baseState.connections[namespace];
109
- if (!connection) {
110
- return;
111
- }
112
- connection.activeChain = chain;
113
- },
114
- setNetworks(networks) {
115
- baseState.networks = networks;
116
- },
117
- getConnectedNetworks() {
118
- return baseState.networks.filter(network => baseState.connections[network.chainNamespace]?.chains.includes(network.caipNetworkId));
119
- },
120
- async disconnect(namespace, isInternal = true) {
121
- const connection = baseState.connections[namespace];
122
- if (!connection) return;
123
-
124
- // Get the current connector from the adapter
125
- const connector = connection.adapter.connector;
126
- if (!connector) return;
127
-
128
- // Find all namespaces that use the same connector
129
- const namespacesUsingConnector = Object.keys(baseState.connections).filter(ns => baseState.connections[ns]?.adapter.connector === connector);
130
-
131
- // Unsubscribe all event listeners from the adapter
132
- namespacesUsingConnector.forEach(ns => {
133
- const _connection = baseState.connections[ns];
134
- if (_connection?.adapter) {
135
- _connection.adapter.removeAllListeners();
136
- }
137
- });
138
-
139
- // Disconnect the adapter
140
- if (isInternal) {
141
- await connection.adapter.disconnect();
142
- }
143
-
144
- // Remove all namespaces that used this connector
145
- namespacesUsingConnector.forEach(ns => {
146
- delete baseState.connections[ns];
147
- });
148
-
149
- // Remove activeNamespace if it is in the list of namespaces using the connector
150
- if (baseState.activeNamespace && (baseState.activeNamespace === namespace || namespacesUsingConnector.includes(baseState.activeNamespace))) {
151
- baseState.activeNamespace = undefined;
152
- _StorageUtil.StorageUtil.setActiveNamespace(undefined);
153
- }
154
- }
155
- };
156
- //# sourceMappingURL=ConnectionsController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_valtio","require","_utils","_StorageUtil","baseState","proxy","activeNamespace","undefined","connections","networks","derivedState","derive","activeAddress","get","snap","connection","accounts","length","activeAccount","find","account","startsWith","activeChain","activeBalance","balances","Object","keys","activeNetwork","network","chainNamespace","id","toString","split","activeCaipNetworkId","walletInfo","wallet","ConnectionsController","exports","state","setActiveNamespace","namespace","StorageUtil","storeConnection","adapter","chains","ref","updateAccounts","updateBalance","address","balance","setActiveChain","chain","setNetworks","getConnectedNetworks","filter","includes","caipNetworkId","disconnect","isInternal","connector","namespacesUsingConnector","ns","forEach","_connection","removeAllListeners"],"sourceRoot":"../../../src","sources":["controllers/ConnectionsController.ts"],"mappings":"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"}
@@ -1,151 +0,0 @@
1
- import { proxy, ref } from 'valtio';
2
- import { derive } from 'valtio/utils';
3
- import { StorageUtil } from '../utils/StorageUtil';
4
-
5
- // -- Types --------------------------------------------- //
6
-
7
- //TODO: balance could be elsewhere
8
-
9
- // -- State --------------------------------------------- //
10
- const baseState = proxy({
11
- activeNamespace: undefined,
12
- connections: {},
13
- networks: []
14
- });
15
- const derivedState = derive({
16
- activeAddress: get => {
17
- const snap = get(baseState);
18
- if (!snap.activeNamespace) return undefined;
19
- const connection = snap.connections[snap.activeNamespace];
20
- if (!connection || !connection.accounts || connection.accounts.length === 0) {
21
- return undefined;
22
- }
23
-
24
- //TODO: what happens if there are several accounts on the same chain?
25
- const activeAccount = connection.accounts.find(account => account.startsWith(connection.activeChain));
26
- return activeAccount;
27
- },
28
- activeBalance: get => {
29
- const snap = get(baseState);
30
- if (!snap.activeNamespace) return undefined;
31
- const connection = snap.connections[snap.activeNamespace];
32
- if (!connection || !connection.accounts || connection.accounts.length === 0) {
33
- return undefined;
34
- }
35
- const activeAccount = connection.accounts.find(account => account.startsWith(connection.activeChain));
36
- if (!connection || !connection.balances || !activeAccount || Object.keys(connection.balances).length === 0) {
37
- return undefined;
38
- }
39
- return connection.balances[activeAccount];
40
- },
41
- activeNetwork: get => {
42
- const snap = get(baseState);
43
- if (!snap.activeNamespace) return undefined;
44
- const connection = snap.connections[snap.activeNamespace];
45
- if (!connection) return undefined;
46
- return snap.networks.find(network => network.chainNamespace === snap.activeNamespace && network.id?.toString() === connection.activeChain?.split(':')[1]);
47
- },
48
- activeCaipNetworkId: get => {
49
- const snap = get(baseState);
50
- if (!snap.activeNamespace) return undefined;
51
- const connection = snap.connections[snap.activeNamespace];
52
- if (!connection) return undefined;
53
- return connection.activeChain;
54
- },
55
- walletInfo: get => {
56
- const snap = get(baseState);
57
- if (!snap.activeNamespace) return undefined;
58
- return snap.connections[snap.activeNamespace]?.wallet;
59
- }
60
- }, {
61
- proxy: baseState // Link derived proxy to the base state proxy
62
- });
63
-
64
- // -- Controller ---------------------------------------- //
65
- export const ConnectionsController = {
66
- state: derivedState,
67
- setActiveNamespace(namespace) {
68
- baseState.activeNamespace = namespace;
69
- StorageUtil.setActiveNamespace(namespace);
70
- },
71
- storeConnection({
72
- namespace,
73
- adapter,
74
- accounts,
75
- chains,
76
- wallet,
77
- activeChain
78
- }) {
79
- baseState.connections[namespace] = {
80
- balances: {},
81
- activeChain: activeChain ?? chains[0],
82
- adapter: ref(adapter),
83
- accounts,
84
- chains,
85
- wallet
86
- };
87
- },
88
- updateAccounts(namespace, accounts) {
89
- const connection = baseState.connections[namespace];
90
- if (!connection) {
91
- return;
92
- }
93
- connection.accounts = accounts;
94
- },
95
- updateBalance(namespace, address, balance) {
96
- const connection = baseState.connections[namespace];
97
- if (!connection) {
98
- return;
99
- }
100
- connection.balances[address] = balance;
101
- },
102
- setActiveChain(namespace, chain) {
103
- const connection = baseState.connections[namespace];
104
- if (!connection) {
105
- return;
106
- }
107
- connection.activeChain = chain;
108
- },
109
- setNetworks(networks) {
110
- baseState.networks = networks;
111
- },
112
- getConnectedNetworks() {
113
- return baseState.networks.filter(network => baseState.connections[network.chainNamespace]?.chains.includes(network.caipNetworkId));
114
- },
115
- async disconnect(namespace, isInternal = true) {
116
- const connection = baseState.connections[namespace];
117
- if (!connection) return;
118
-
119
- // Get the current connector from the adapter
120
- const connector = connection.adapter.connector;
121
- if (!connector) return;
122
-
123
- // Find all namespaces that use the same connector
124
- const namespacesUsingConnector = Object.keys(baseState.connections).filter(ns => baseState.connections[ns]?.adapter.connector === connector);
125
-
126
- // Unsubscribe all event listeners from the adapter
127
- namespacesUsingConnector.forEach(ns => {
128
- const _connection = baseState.connections[ns];
129
- if (_connection?.adapter) {
130
- _connection.adapter.removeAllListeners();
131
- }
132
- });
133
-
134
- // Disconnect the adapter
135
- if (isInternal) {
136
- await connection.adapter.disconnect();
137
- }
138
-
139
- // Remove all namespaces that used this connector
140
- namespacesUsingConnector.forEach(ns => {
141
- delete baseState.connections[ns];
142
- });
143
-
144
- // Remove activeNamespace if it is in the list of namespaces using the connector
145
- if (baseState.activeNamespace && (baseState.activeNamespace === namespace || namespacesUsingConnector.includes(baseState.activeNamespace))) {
146
- baseState.activeNamespace = undefined;
147
- StorageUtil.setActiveNamespace(undefined);
148
- }
149
- }
150
- };
151
- //# sourceMappingURL=ConnectionsController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["proxy","ref","derive","StorageUtil","baseState","activeNamespace","undefined","connections","networks","derivedState","activeAddress","get","snap","connection","accounts","length","activeAccount","find","account","startsWith","activeChain","activeBalance","balances","Object","keys","activeNetwork","network","chainNamespace","id","toString","split","activeCaipNetworkId","walletInfo","wallet","ConnectionsController","state","setActiveNamespace","namespace","storeConnection","adapter","chains","updateAccounts","updateBalance","address","balance","setActiveChain","chain","setNetworks","getConnectedNetworks","filter","includes","caipNetworkId","disconnect","isInternal","connector","namespacesUsingConnector","ns","forEach","_connection","removeAllListeners"],"sourceRoot":"../../../src","sources":["controllers/ConnectionsController.ts"],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import type { AppKitNetwork, BlockchainAdapter, CaipAddress, CaipNetworkId, ChainNamespace, GetBalanceResponse, WalletInfo } from '@reown/appkit-common-react-native';
2
- type Balance = GetBalanceResponse;
3
- interface Connection {
4
- accounts: CaipAddress[];
5
- balances: Record<CaipAddress, Balance>;
6
- adapter: BlockchainAdapter;
7
- chains: CaipNetworkId[];
8
- activeChain: CaipNetworkId;
9
- wallet?: WalletInfo;
10
- }
11
- export interface ConnectionsControllerState {
12
- activeNamespace?: ChainNamespace;
13
- connections: Record<string, Connection>;
14
- networks: AppKitNetwork[];
15
- }
16
- export declare const ConnectionsController: {
17
- state: ConnectionsControllerState & {
18
- activeAddress: `${string}:${string}:${string}` | undefined;
19
- activeBalance: GetBalanceResponse | undefined;
20
- activeNetwork: AppKitNetwork | undefined;
21
- activeCaipNetworkId: `${string}:${string}` | undefined;
22
- walletInfo: WalletInfo | undefined;
23
- };
24
- setActiveNamespace(namespace?: ChainNamespace): void;
25
- storeConnection({ namespace, adapter, accounts, chains, wallet, activeChain }: {
26
- namespace: string;
27
- adapter: BlockchainAdapter;
28
- accounts: CaipAddress[];
29
- chains: CaipNetworkId[];
30
- wallet?: WalletInfo | undefined;
31
- activeChain?: `${string}:${string}` | undefined;
32
- }): void;
33
- updateAccounts(namespace: string, accounts: CaipAddress[]): void;
34
- updateBalance(namespace: string, address: CaipAddress, balance: Balance): void;
35
- setActiveChain(namespace: string, chain: CaipNetworkId): void;
36
- setNetworks(networks: AppKitNetwork[]): void;
37
- getConnectedNetworks(): AppKitNetwork[];
38
- disconnect(namespace: string, isInternal?: boolean): Promise<void>;
39
- };
40
- export {};
41
- //# sourceMappingURL=ConnectionsController.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionsController.d.ts","sourceRoot":"","sources":["../../../src/controllers/ConnectionsController.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,UAAU,EACX,MAAM,mCAAmC,CAAC;AAI3C,KAAK,OAAO,GAAG,kBAAkB,CAAC;AAGlC,UAAU,UAAU;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,EAAE,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AA8FD,eAAO,MAAM,qBAAqB;;;;;;;;mCAGD,cAAc;;mBAahC,MAAM;iBACR,iBAAiB;kBAChB,WAAW,EAAE;gBACf,aAAa,EAAE;;;;8BAcC,MAAM,YAAY,WAAW,EAAE;6BAQhC,MAAM,WAAW,WAAW,WAAW,OAAO;8BAQ7C,MAAM,SAAS,aAAa;0BAUhC,aAAa,EAAE;;0BAWT,MAAM;CAyCnC,CAAC"}
@@ -1,236 +0,0 @@
1
- import { proxy, ref } from 'valtio';
2
- import { derive } from 'valtio/utils';
3
- import type {
4
- AppKitNetwork,
5
- BlockchainAdapter,
6
- CaipAddress,
7
- CaipNetworkId,
8
- ChainNamespace,
9
- GetBalanceResponse,
10
- WalletInfo
11
- } from '@reown/appkit-common-react-native';
12
- import { StorageUtil } from '../utils/StorageUtil';
13
-
14
- // -- Types --------------------------------------------- //
15
- type Balance = GetBalanceResponse;
16
-
17
- //TODO: balance could be elsewhere
18
- interface Connection {
19
- accounts: CaipAddress[];
20
- balances: Record<CaipAddress, Balance>; //TODO: make this an array of balances
21
- adapter: BlockchainAdapter;
22
- chains: CaipNetworkId[];
23
- activeChain: CaipNetworkId;
24
- wallet?: WalletInfo;
25
- }
26
-
27
- export interface ConnectionsControllerState {
28
- activeNamespace?: ChainNamespace;
29
- connections: Record<string, Connection>;
30
- networks: AppKitNetwork[];
31
- }
32
-
33
- // -- State --------------------------------------------- //
34
- const baseState = proxy<ConnectionsControllerState>({
35
- activeNamespace: undefined,
36
- connections: {},
37
- networks: []
38
- });
39
-
40
- const derivedState = derive(
41
- {
42
- activeAddress: (get): CaipAddress | undefined => {
43
- const snap = get(baseState);
44
-
45
- if (!snap.activeNamespace) return undefined;
46
-
47
- const connection = snap.connections[snap.activeNamespace];
48
-
49
- if (!connection || !connection.accounts || connection.accounts.length === 0) {
50
- return undefined;
51
- }
52
-
53
- //TODO: what happens if there are several accounts on the same chain?
54
- const activeAccount = connection.accounts.find(account =>
55
- account.startsWith(connection.activeChain)
56
- );
57
-
58
- return activeAccount;
59
- },
60
- activeBalance: (get): Balance | undefined => {
61
- const snap = get(baseState);
62
-
63
- if (!snap.activeNamespace) return undefined;
64
- const connection = snap.connections[snap.activeNamespace];
65
-
66
- if (!connection || !connection.accounts || connection.accounts.length === 0) {
67
- return undefined;
68
- }
69
-
70
- const activeAccount = connection.accounts.find(account =>
71
- account.startsWith(connection.activeChain)
72
- );
73
-
74
- if (
75
- !connection ||
76
- !connection.balances ||
77
- !activeAccount ||
78
- Object.keys(connection.balances).length === 0
79
- ) {
80
- return undefined;
81
- }
82
-
83
- return connection.balances[activeAccount];
84
- },
85
- activeNetwork: (get): AppKitNetwork | undefined => {
86
- const snap = get(baseState);
87
-
88
- if (!snap.activeNamespace) return undefined;
89
-
90
- const connection = snap.connections[snap.activeNamespace];
91
-
92
- if (!connection) return undefined;
93
-
94
- return snap.networks.find(
95
- network =>
96
- network.chainNamespace === snap.activeNamespace &&
97
- network.id?.toString() === connection.activeChain?.split(':')[1]
98
- );
99
- },
100
- activeCaipNetworkId: (get): CaipNetworkId | undefined => {
101
- const snap = get(baseState);
102
-
103
- if (!snap.activeNamespace) return undefined;
104
-
105
- const connection = snap.connections[snap.activeNamespace];
106
-
107
- if (!connection) return undefined;
108
-
109
- return connection.activeChain;
110
- },
111
- walletInfo: (get): WalletInfo | undefined => {
112
- const snap = get(baseState);
113
-
114
- if (!snap.activeNamespace) return undefined;
115
-
116
- return snap.connections[snap.activeNamespace]?.wallet;
117
- }
118
- },
119
- {
120
- proxy: baseState // Link derived proxy to the base state proxy
121
- }
122
- );
123
-
124
- // -- Controller ---------------------------------------- //
125
- export const ConnectionsController = {
126
- state: derivedState,
127
-
128
- setActiveNamespace(namespace?: ChainNamespace) {
129
- baseState.activeNamespace = namespace;
130
- StorageUtil.setActiveNamespace(namespace);
131
- },
132
-
133
- storeConnection({
134
- namespace,
135
- adapter,
136
- accounts,
137
- chains,
138
- wallet,
139
- activeChain
140
- }: {
141
- namespace: string;
142
- adapter: BlockchainAdapter;
143
- accounts: CaipAddress[];
144
- chains: CaipNetworkId[];
145
- wallet?: WalletInfo;
146
- activeChain?: CaipNetworkId;
147
- }) {
148
- baseState.connections[namespace] = {
149
- balances: {},
150
- activeChain: activeChain ?? chains[0]!,
151
- adapter: ref(adapter),
152
- accounts,
153
- chains,
154
- wallet
155
- };
156
- },
157
-
158
- updateAccounts(namespace: string, accounts: CaipAddress[]) {
159
- const connection = baseState.connections[namespace];
160
- if (!connection) {
161
- return;
162
- }
163
- connection.accounts = accounts;
164
- },
165
-
166
- updateBalance(namespace: string, address: CaipAddress, balance: Balance) {
167
- const connection = baseState.connections[namespace];
168
- if (!connection) {
169
- return;
170
- }
171
- connection.balances[address] = balance;
172
- },
173
-
174
- setActiveChain(namespace: string, chain: CaipNetworkId) {
175
- const connection = baseState.connections[namespace];
176
-
177
- if (!connection) {
178
- return;
179
- }
180
-
181
- connection.activeChain = chain;
182
- },
183
-
184
- setNetworks(networks: AppKitNetwork[]) {
185
- baseState.networks = networks;
186
- },
187
-
188
- getConnectedNetworks() {
189
- return baseState.networks.filter(
190
- network =>
191
- baseState.connections[network.chainNamespace]?.chains.includes(network.caipNetworkId)
192
- );
193
- },
194
-
195
- async disconnect(namespace: string, isInternal = true) {
196
- const connection = baseState.connections[namespace];
197
- if (!connection) return;
198
-
199
- // Get the current connector from the adapter
200
- const connector = connection.adapter.connector;
201
- if (!connector) return;
202
-
203
- // Find all namespaces that use the same connector
204
- const namespacesUsingConnector = Object.keys(baseState.connections).filter(
205
- ns => baseState.connections[ns]?.adapter.connector === connector
206
- );
207
-
208
- // Unsubscribe all event listeners from the adapter
209
- namespacesUsingConnector.forEach(ns => {
210
- const _connection = baseState.connections[ns];
211
- if (_connection?.adapter) {
212
- _connection.adapter.removeAllListeners();
213
- }
214
- });
215
-
216
- // Disconnect the adapter
217
- if (isInternal) {
218
- await connection.adapter.disconnect();
219
- }
220
-
221
- // Remove all namespaces that used this connector
222
- namespacesUsingConnector.forEach(ns => {
223
- delete baseState.connections[ns];
224
- });
225
-
226
- // Remove activeNamespace if it is in the list of namespaces using the connector
227
- if (
228
- baseState.activeNamespace &&
229
- (baseState.activeNamespace === namespace ||
230
- namespacesUsingConnector.includes(baseState.activeNamespace))
231
- ) {
232
- baseState.activeNamespace = undefined;
233
- StorageUtil.setActiveNamespace(undefined);
234
- }
235
- }
236
- };