@reown/appkit-core-react-native 0.0.0-develop-20250728141602 → 0.0.0-develop-20251008155354

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 (291) hide show
  1. package/lib/commonjs/controllers/ApiController.js +157 -91
  2. package/lib/commonjs/controllers/ApiController.js.map +1 -1
  3. package/lib/commonjs/controllers/AssetController.js +0 -4
  4. package/lib/commonjs/controllers/AssetController.js.map +1 -1
  5. package/lib/commonjs/controllers/BlockchainApiController.js +180 -78
  6. package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
  7. package/lib/commonjs/controllers/ConnectionsController.js +425 -0
  8. package/lib/commonjs/controllers/ConnectionsController.js.map +1 -0
  9. package/lib/commonjs/controllers/EnsController.js +2 -0
  10. package/lib/commonjs/controllers/EnsController.js.map +1 -1
  11. package/lib/commonjs/controllers/EventsController.js +51 -1
  12. package/lib/commonjs/controllers/EventsController.js.map +1 -1
  13. package/lib/commonjs/controllers/LogController.js +188 -0
  14. package/lib/commonjs/controllers/LogController.js.map +1 -0
  15. package/lib/commonjs/controllers/ModalController.js +9 -7
  16. package/lib/commonjs/controllers/ModalController.js.map +1 -1
  17. package/lib/commonjs/controllers/OnRampController.js +47 -20
  18. package/lib/commonjs/controllers/OnRampController.js.map +1 -1
  19. package/lib/commonjs/controllers/OptionsController.js +28 -10
  20. package/lib/commonjs/controllers/OptionsController.js.map +1 -1
  21. package/lib/commonjs/controllers/PublicStateController.js.map +1 -1
  22. package/lib/commonjs/controllers/RouterController.js +7 -22
  23. package/lib/commonjs/controllers/RouterController.js.map +1 -1
  24. package/lib/commonjs/controllers/SendController.js +111 -95
  25. package/lib/commonjs/controllers/SendController.js.map +1 -1
  26. package/lib/commonjs/controllers/SnackController.js +29 -5
  27. package/lib/commonjs/controllers/SnackController.js.map +1 -1
  28. package/lib/commonjs/controllers/SwapController.js +162 -151
  29. package/lib/commonjs/controllers/SwapController.js.map +1 -1
  30. package/lib/commonjs/controllers/ThemeController.js +14 -1
  31. package/lib/commonjs/controllers/ThemeController.js.map +1 -1
  32. package/lib/commonjs/controllers/TransactionsController.js +24 -18
  33. package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
  34. package/lib/commonjs/controllers/WcController.js +73 -0
  35. package/lib/commonjs/controllers/WcController.js.map +1 -0
  36. package/lib/commonjs/features/reown-authentication/ReownAuthentication.js +272 -0
  37. package/lib/commonjs/features/reown-authentication/ReownAuthentication.js.map +1 -0
  38. package/lib/commonjs/features/reown-authentication/ReownAuthenticationMessenger.js +48 -0
  39. package/lib/commonjs/features/reown-authentication/ReownAuthenticationMessenger.js.map +1 -0
  40. package/lib/commonjs/features/reown-authentication/index.js +28 -0
  41. package/lib/commonjs/features/reown-authentication/index.js.map +1 -0
  42. package/lib/commonjs/index.js +33 -40
  43. package/lib/commonjs/index.js.map +1 -1
  44. package/lib/commonjs/package.json +1 -0
  45. package/lib/commonjs/utils/ApiUtil.js +1 -1
  46. package/lib/commonjs/utils/ApiUtil.js.map +1 -1
  47. package/lib/commonjs/utils/AssetUtil.js +8 -18
  48. package/lib/commonjs/utils/AssetUtil.js.map +1 -1
  49. package/lib/commonjs/utils/ConstantsUtil.js +117 -5
  50. package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
  51. package/lib/commonjs/utils/CoreHelperUtil.js +32 -9
  52. package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
  53. package/lib/commonjs/utils/EventUtil.js.map +1 -1
  54. package/lib/commonjs/utils/FetchUtil.js +7 -2
  55. package/lib/commonjs/utils/FetchUtil.js.map +1 -1
  56. package/lib/commonjs/utils/LogUtils.js +131 -0
  57. package/lib/commonjs/utils/LogUtils.js.map +1 -0
  58. package/lib/commonjs/utils/StorageUtil.js +131 -150
  59. package/lib/commonjs/utils/StorageUtil.js.map +1 -1
  60. package/lib/commonjs/utils/SwapApiUtil.js +15 -21
  61. package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
  62. package/lib/commonjs/utils/SwapCalculationUtil.js.map +1 -1
  63. package/lib/commonjs/utils/WalletUtil.js +23 -0
  64. package/lib/commonjs/utils/WalletUtil.js.map +1 -0
  65. package/lib/module/controllers/ApiController.js +159 -91
  66. package/lib/module/controllers/ApiController.js.map +1 -1
  67. package/lib/module/controllers/AssetController.js +2 -4
  68. package/lib/module/controllers/AssetController.js.map +1 -1
  69. package/lib/module/controllers/BlockchainApiController.js +182 -78
  70. package/lib/module/controllers/BlockchainApiController.js.map +1 -1
  71. package/lib/module/controllers/ConnectionsController.js +422 -0
  72. package/lib/module/controllers/ConnectionsController.js.map +1 -0
  73. package/lib/module/controllers/EnsController.js +4 -0
  74. package/lib/module/controllers/EnsController.js.map +1 -1
  75. package/lib/module/controllers/EventsController.js +53 -1
  76. package/lib/module/controllers/EventsController.js.map +1 -1
  77. package/lib/module/controllers/LogController.js +185 -0
  78. package/lib/module/controllers/LogController.js.map +1 -0
  79. package/lib/module/controllers/ModalController.js +11 -7
  80. package/lib/module/controllers/ModalController.js.map +1 -1
  81. package/lib/module/controllers/OnRampController.js +45 -16
  82. package/lib/module/controllers/OnRampController.js.map +1 -1
  83. package/lib/module/controllers/OptionsController.js +30 -10
  84. package/lib/module/controllers/OptionsController.js.map +1 -1
  85. package/lib/module/controllers/PublicStateController.js +2 -0
  86. package/lib/module/controllers/PublicStateController.js.map +1 -1
  87. package/lib/module/controllers/RouterController.js +9 -22
  88. package/lib/module/controllers/RouterController.js.map +1 -1
  89. package/lib/module/controllers/SendController.js +113 -95
  90. package/lib/module/controllers/SendController.js.map +1 -1
  91. package/lib/module/controllers/SnackController.js +31 -5
  92. package/lib/module/controllers/SnackController.js.map +1 -1
  93. package/lib/module/controllers/SwapController.js +164 -151
  94. package/lib/module/controllers/SwapController.js.map +1 -1
  95. package/lib/module/controllers/ThemeController.js +16 -1
  96. package/lib/module/controllers/ThemeController.js.map +1 -1
  97. package/lib/module/controllers/TransactionsController.js +26 -18
  98. package/lib/module/controllers/TransactionsController.js.map +1 -1
  99. package/lib/module/controllers/WcController.js +70 -0
  100. package/lib/module/controllers/WcController.js.map +1 -0
  101. package/lib/module/features/reown-authentication/ReownAuthentication.js +268 -0
  102. package/lib/module/features/reown-authentication/ReownAuthentication.js.map +1 -0
  103. package/lib/module/features/reown-authentication/ReownAuthenticationMessenger.js +43 -0
  104. package/lib/module/features/reown-authentication/ReownAuthenticationMessenger.js.map +1 -0
  105. package/lib/module/features/reown-authentication/index.js +5 -0
  106. package/lib/module/features/reown-authentication/index.js.map +1 -0
  107. package/lib/module/index.js +13 -8
  108. package/lib/module/index.js.map +1 -1
  109. package/lib/module/utils/ApiUtil.js +3 -1
  110. package/lib/module/utils/ApiUtil.js.map +1 -1
  111. package/lib/module/utils/AssetUtil.js +10 -18
  112. package/lib/module/utils/AssetUtil.js.map +1 -1
  113. package/lib/module/utils/ConstantsUtil.js +119 -5
  114. package/lib/module/utils/ConstantsUtil.js.map +1 -1
  115. package/lib/module/utils/CoreHelperUtil.js +34 -7
  116. package/lib/module/utils/CoreHelperUtil.js.map +1 -1
  117. package/lib/module/utils/EventUtil.js +2 -0
  118. package/lib/module/utils/EventUtil.js.map +1 -1
  119. package/lib/module/utils/FetchUtil.js +10 -2
  120. package/lib/module/utils/FetchUtil.js.map +1 -1
  121. package/lib/module/utils/LogUtils.js +121 -0
  122. package/lib/module/utils/LogUtils.js.map +1 -0
  123. package/lib/module/utils/StorageUtil.js +134 -150
  124. package/lib/module/utils/StorageUtil.js.map +1 -1
  125. package/lib/module/utils/SwapApiUtil.js +17 -21
  126. package/lib/module/utils/SwapApiUtil.js.map +1 -1
  127. package/lib/module/utils/SwapCalculationUtil.js +3 -0
  128. package/lib/module/utils/SwapCalculationUtil.js.map +1 -1
  129. package/lib/module/utils/WalletUtil.js +19 -0
  130. package/lib/module/utils/WalletUtil.js.map +1 -0
  131. package/lib/typescript/controllers/ApiController.d.ts +9 -8
  132. package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
  133. package/lib/typescript/controllers/AssetController.d.ts +0 -2
  134. package/lib/typescript/controllers/AssetController.d.ts.map +1 -1
  135. package/lib/typescript/controllers/BlockchainApiController.d.ts +29 -11
  136. package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
  137. package/lib/typescript/controllers/ConnectionsController.d.ts +47 -0
  138. package/lib/typescript/controllers/ConnectionsController.d.ts.map +1 -0
  139. package/lib/typescript/controllers/EnsController.d.ts +1 -1
  140. package/lib/typescript/controllers/EnsController.d.ts.map +1 -1
  141. package/lib/typescript/controllers/EventsController.d.ts +13 -1
  142. package/lib/typescript/controllers/EventsController.d.ts.map +1 -1
  143. package/lib/typescript/controllers/LogController.d.ts +65 -0
  144. package/lib/typescript/controllers/LogController.d.ts.map +1 -0
  145. package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
  146. package/lib/typescript/controllers/OnRampController.d.ts +2 -2
  147. package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
  148. package/lib/typescript/controllers/OptionsController.d.ts +11 -6
  149. package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
  150. package/lib/typescript/controllers/PublicStateController.d.ts +1 -1
  151. package/lib/typescript/controllers/PublicStateController.d.ts.map +1 -1
  152. package/lib/typescript/controllers/RouterController.d.ts +6 -20
  153. package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
  154. package/lib/typescript/controllers/SendController.d.ts +5 -7
  155. package/lib/typescript/controllers/SendController.d.ts.map +1 -1
  156. package/lib/typescript/controllers/SnackController.d.ts +3 -3
  157. package/lib/typescript/controllers/SnackController.d.ts.map +1 -1
  158. package/lib/typescript/controllers/SwapController.d.ts +12 -12
  159. package/lib/typescript/controllers/SwapController.d.ts.map +1 -1
  160. package/lib/typescript/controllers/ThemeController.d.ts +3 -1
  161. package/lib/typescript/controllers/ThemeController.d.ts.map +1 -1
  162. package/lib/typescript/controllers/TransactionsController.d.ts +3 -3
  163. package/lib/typescript/controllers/TransactionsController.d.ts.map +1 -1
  164. package/lib/typescript/controllers/WcController.d.ts +27 -0
  165. package/lib/typescript/controllers/WcController.d.ts.map +1 -0
  166. package/lib/typescript/features/reown-authentication/ReownAuthentication.d.ts +174 -0
  167. package/lib/typescript/features/reown-authentication/ReownAuthentication.d.ts.map +1 -0
  168. package/lib/typescript/features/reown-authentication/ReownAuthenticationMessenger.d.ts +16 -0
  169. package/lib/typescript/features/reown-authentication/ReownAuthenticationMessenger.d.ts.map +1 -0
  170. package/lib/typescript/features/reown-authentication/index.d.ts +3 -0
  171. package/lib/typescript/features/reown-authentication/index.d.ts.map +1 -0
  172. package/lib/typescript/index.d.ts +7 -9
  173. package/lib/typescript/index.d.ts.map +1 -1
  174. package/lib/typescript/utils/ApiUtil.d.ts +1 -1
  175. package/lib/typescript/utils/AssetUtil.d.ts +3 -4
  176. package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
  177. package/lib/typescript/utils/ConstantsUtil.d.ts +11 -2
  178. package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
  179. package/lib/typescript/utils/CoreHelperUtil.d.ts +8 -6
  180. package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
  181. package/lib/typescript/utils/EventUtil.d.ts +1 -1
  182. package/lib/typescript/utils/EventUtil.d.ts.map +1 -1
  183. package/lib/typescript/utils/FetchUtil.d.ts +4 -4
  184. package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
  185. package/lib/typescript/utils/LogUtils.d.ts +15 -0
  186. package/lib/typescript/utils/LogUtils.d.ts.map +1 -0
  187. package/lib/typescript/utils/StorageUtil.d.ts +15 -16
  188. package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
  189. package/lib/typescript/utils/SwapApiUtil.d.ts +3 -4
  190. package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
  191. package/lib/typescript/utils/SwapCalculationUtil.d.ts +1 -1
  192. package/lib/typescript/utils/SwapCalculationUtil.d.ts.map +1 -1
  193. package/lib/typescript/utils/WalletUtil.d.ts +5 -0
  194. package/lib/typescript/utils/WalletUtil.d.ts.map +1 -0
  195. package/package.json +11 -24
  196. package/src/controllers/ApiController.ts +167 -84
  197. package/src/controllers/AssetController.ts +0 -6
  198. package/src/controllers/BlockchainApiController.ts +168 -66
  199. package/src/controllers/ConnectionsController.ts +575 -0
  200. package/src/controllers/EnsController.ts +3 -1
  201. package/src/controllers/EventsController.ts +73 -2
  202. package/src/controllers/LogController.ts +250 -0
  203. package/src/controllers/ModalController.ts +10 -7
  204. package/src/controllers/OnRampController.ts +54 -19
  205. package/src/controllers/OptionsController.ts +46 -18
  206. package/src/controllers/PublicStateController.ts +1 -1
  207. package/src/controllers/RouterController.ts +20 -57
  208. package/src/controllers/SendController.ts +147 -111
  209. package/src/controllers/SnackController.ts +31 -5
  210. package/src/controllers/SwapController.ts +185 -183
  211. package/src/controllers/ThemeController.ts +18 -2
  212. package/src/controllers/TransactionsController.ts +27 -19
  213. package/src/controllers/WcController.ts +93 -0
  214. package/src/features/reown-authentication/ReownAuthentication.ts +475 -0
  215. package/src/features/reown-authentication/ReownAuthenticationMessenger.ts +80 -0
  216. package/src/features/reown-authentication/index.ts +2 -0
  217. package/src/index.ts +17 -20
  218. package/src/utils/ApiUtil.ts +1 -1
  219. package/src/utils/AssetUtil.ts +9 -22
  220. package/src/utils/ConstantsUtil.ts +121 -6
  221. package/src/utils/CoreHelperUtil.ts +66 -10
  222. package/src/utils/EventUtil.ts +1 -1
  223. package/src/utils/FetchUtil.ts +14 -5
  224. package/src/utils/LogUtils.ts +179 -0
  225. package/src/utils/StorageUtil.ts +191 -176
  226. package/src/utils/SwapApiUtil.ts +30 -37
  227. package/src/utils/SwapCalculationUtil.ts +1 -2
  228. package/src/utils/WalletUtil.ts +14 -0
  229. package/lib/commonjs/controllers/AccountController.js +0 -93
  230. package/lib/commonjs/controllers/AccountController.js.map +0 -1
  231. package/lib/commonjs/controllers/ConnectionController.js +0 -126
  232. package/lib/commonjs/controllers/ConnectionController.js.map +0 -1
  233. package/lib/commonjs/controllers/ConnectorController.js +0 -49
  234. package/lib/commonjs/controllers/ConnectorController.js.map +0 -1
  235. package/lib/commonjs/controllers/NetworkController.js +0 -90
  236. package/lib/commonjs/controllers/NetworkController.js.map +0 -1
  237. package/lib/commonjs/controllers/WebviewController.js +0 -52
  238. package/lib/commonjs/controllers/WebviewController.js.map +0 -1
  239. package/lib/commonjs/utils/ConnectionUtil.js +0 -33
  240. package/lib/commonjs/utils/ConnectionUtil.js.map +0 -1
  241. package/lib/commonjs/utils/NetworkUtil.js +0 -46
  242. package/lib/commonjs/utils/NetworkUtil.js.map +0 -1
  243. package/lib/commonjs/utils/RouterUtil.js +0 -25
  244. package/lib/commonjs/utils/RouterUtil.js.map +0 -1
  245. package/lib/commonjs/utils/TypeUtil.js +0 -35
  246. package/lib/commonjs/utils/TypeUtil.js.map +0 -1
  247. package/lib/module/controllers/AccountController.js +0 -88
  248. package/lib/module/controllers/AccountController.js.map +0 -1
  249. package/lib/module/controllers/ConnectionController.js +0 -121
  250. package/lib/module/controllers/ConnectionController.js.map +0 -1
  251. package/lib/module/controllers/ConnectorController.js +0 -44
  252. package/lib/module/controllers/ConnectorController.js.map +0 -1
  253. package/lib/module/controllers/NetworkController.js +0 -85
  254. package/lib/module/controllers/NetworkController.js.map +0 -1
  255. package/lib/module/controllers/WebviewController.js +0 -47
  256. package/lib/module/controllers/WebviewController.js.map +0 -1
  257. package/lib/module/utils/ConnectionUtil.js +0 -27
  258. package/lib/module/utils/ConnectionUtil.js.map +0 -1
  259. package/lib/module/utils/NetworkUtil.js +0 -40
  260. package/lib/module/utils/NetworkUtil.js.map +0 -1
  261. package/lib/module/utils/RouterUtil.js +0 -19
  262. package/lib/module/utils/RouterUtil.js.map +0 -1
  263. package/lib/module/utils/TypeUtil.js +0 -28
  264. package/lib/module/utils/TypeUtil.js.map +0 -1
  265. package/lib/typescript/controllers/AccountController.d.ts +0 -33
  266. package/lib/typescript/controllers/AccountController.d.ts.map +0 -1
  267. package/lib/typescript/controllers/ConnectionController.d.ts +0 -66
  268. package/lib/typescript/controllers/ConnectionController.d.ts.map +0 -1
  269. package/lib/typescript/controllers/ConnectorController.d.ts +0 -18
  270. package/lib/typescript/controllers/ConnectorController.d.ts.map +0 -1
  271. package/lib/typescript/controllers/NetworkController.d.ts +0 -34
  272. package/lib/typescript/controllers/NetworkController.d.ts.map +0 -1
  273. package/lib/typescript/controllers/WebviewController.d.ts +0 -21
  274. package/lib/typescript/controllers/WebviewController.d.ts.map +0 -1
  275. package/lib/typescript/utils/ConnectionUtil.d.ts +0 -4
  276. package/lib/typescript/utils/ConnectionUtil.d.ts.map +0 -1
  277. package/lib/typescript/utils/NetworkUtil.d.ts +0 -8
  278. package/lib/typescript/utils/NetworkUtil.d.ts.map +0 -1
  279. package/lib/typescript/utils/RouterUtil.d.ts +0 -5
  280. package/lib/typescript/utils/RouterUtil.d.ts.map +0 -1
  281. package/lib/typescript/utils/TypeUtil.d.ts +0 -849
  282. package/lib/typescript/utils/TypeUtil.d.ts.map +0 -1
  283. package/src/controllers/AccountController.ts +0 -128
  284. package/src/controllers/ConnectionController.ts +0 -200
  285. package/src/controllers/ConnectorController.ts +0 -63
  286. package/src/controllers/NetworkController.ts +0 -120
  287. package/src/controllers/WebviewController.ts +0 -63
  288. package/src/utils/ConnectionUtil.ts +0 -27
  289. package/src/utils/NetworkUtil.ts +0 -33
  290. package/src/utils/RouterUtil.ts +0 -21
  291. package/src/utils/TypeUtil.ts +0 -1036
@@ -1,20 +1,20 @@
1
+ "use strict";
2
+
1
3
  import { subscribeKey as subKey } from 'valtio/utils';
2
4
  import { proxy, subscribe as sub } from 'valtio';
3
5
  import { NumberUtil } from '@reown/appkit-common-react-native';
4
6
  import { ConstantsUtil } from '../utils/ConstantsUtil';
5
7
  import { SwapApiUtil } from '../utils/SwapApiUtil';
6
- import { NetworkController } from './NetworkController';
7
8
  import { BlockchainApiController } from './BlockchainApiController';
8
9
  import { OptionsController } from './OptionsController';
9
10
  import { SwapCalculationUtil } from '../utils/SwapCalculationUtil';
10
11
  import { SnackController } from './SnackController';
12
+ import { LogController } from './LogController';
11
13
  import { RouterController } from './RouterController';
12
- import { ConnectorController } from './ConnectorController';
13
- import { AccountController } from './AccountController';
14
14
  import { CoreHelperUtil } from '../utils/CoreHelperUtil';
15
- import { ConnectionController } from './ConnectionController';
16
15
  import { TransactionsController } from './TransactionsController';
17
16
  import { EventsController } from './EventsController';
17
+ import { ConnectionsController } from './ConnectionsController';
18
18
 
19
19
  // -- Constants ---------------------------------------- //
20
20
  export const INITIAL_GAS_LIMIT = 150000;
@@ -32,8 +32,7 @@ class TransactionError extends Error {
32
32
  // -- State --------------------------------------------- //
33
33
  const initialState = {
34
34
  // Loading states
35
- initializing: false,
36
- initialized: false,
35
+ loadingTokens: false,
37
36
  loadingPrices: false,
38
37
  loadingQuote: false,
39
38
  loadingApprovalTransaction: false,
@@ -53,7 +52,6 @@ const initialState = {
53
52
  toTokenAmount: '',
54
53
  toTokenPriceInUSD: 0,
55
54
  networkPrice: '0',
56
- networkBalanceInUSD: '0',
57
55
  networkTokenSymbol: '',
58
56
  inputError: undefined,
59
57
  // Request values
@@ -72,7 +70,9 @@ const initialState = {
72
70
  maxSlippage: undefined,
73
71
  providerFee: undefined
74
72
  };
75
- const state = proxy(initialState);
73
+ const state = proxy({
74
+ ...initialState
75
+ });
76
76
 
77
77
  // -- Controller ---------------------------------------- //
78
78
  export const SwapController = {
@@ -84,10 +84,17 @@ export const SwapController = {
84
84
  return subKey(state, key, callback);
85
85
  },
86
86
  getParams() {
87
- const caipAddress = AccountController.state.caipAddress;
88
- const address = CoreHelperUtil.getPlainAddress(caipAddress);
89
- const networkAddress = NetworkController.getActiveNetworkTokenAddress();
90
- const type = ConnectorController.state.connectedConnector;
87
+ const {
88
+ activeAddress,
89
+ activeNamespace,
90
+ activeNetwork,
91
+ connection
92
+ } = ConnectionsController.state;
93
+ const address = CoreHelperUtil.getPlainAddress(activeAddress);
94
+ if (!activeNamespace || !activeNetwork) {
95
+ throw new Error('No active namespace or network found to swap the tokens from.');
96
+ }
97
+ const networkAddress = `${activeNetwork.caipNetworkId}:${ConstantsUtil.NATIVE_TOKEN_ADDRESS[activeNamespace]}`;
91
98
  if (!address) {
92
99
  throw new Error('No address found to swap the tokens from.');
93
100
  }
@@ -96,8 +103,9 @@ export const SwapController = {
96
103
  const invalidSourceTokenAmount = !state.sourceTokenAmount;
97
104
  return {
98
105
  networkAddress,
106
+ network: activeNetwork,
99
107
  fromAddress: address,
100
- fromCaipAddress: caipAddress,
108
+ fromCaipAddress: activeAddress,
101
109
  sourceTokenAddress: state.sourceToken?.address,
102
110
  toTokenAddress: state.toToken?.address,
103
111
  toTokenAmount: state.toTokenAmount,
@@ -107,12 +115,12 @@ export const SwapController = {
107
115
  invalidToToken,
108
116
  invalidSourceToken,
109
117
  invalidSourceTokenAmount,
110
- availableToSwap: caipAddress && !invalidToToken && !invalidSourceToken && !invalidSourceTokenAmount,
111
- isAuthConnector: type === 'AUTH'
118
+ availableToSwap: activeAddress && !invalidToToken && !invalidSourceToken && !invalidSourceTokenAmount,
119
+ isAuthConnector: !!connection?.properties?.provider
112
120
  };
113
121
  },
114
122
  switchTokens() {
115
- if (state.initializing || !state.initialized) {
123
+ if (state.loadingTokens) {
116
124
  return;
117
125
  }
118
126
  let newSourceToken = state.toToken ? {
@@ -132,35 +140,33 @@ export const SwapController = {
132
140
  this.setToTokenAmount('');
133
141
  this.swapTokens();
134
142
  },
135
- resetState() {
136
- state.myTokensWithBalance = initialState.myTokensWithBalance;
137
- state.tokensPriceMap = initialState.tokensPriceMap;
138
- state.initialized = initialState.initialized;
139
- state.sourceToken = initialState.sourceToken;
140
- state.sourceTokenAmount = initialState.sourceTokenAmount;
141
- state.sourceTokenPriceInUSD = initialState.sourceTokenPriceInUSD;
142
- state.toToken = initialState.toToken;
143
- state.toTokenAmount = initialState.toTokenAmount;
144
- state.toTokenPriceInUSD = initialState.toTokenPriceInUSD;
145
- state.networkPrice = initialState.networkPrice;
146
- state.networkTokenSymbol = initialState.networkTokenSymbol;
147
- state.networkBalanceInUSD = initialState.networkBalanceInUSD;
148
- state.inputError = initialState.inputError;
149
- },
150
143
  async fetchTokens() {
151
- const {
152
- networkAddress
153
- } = this.getParams();
154
- await this.getTokenList();
155
- await this.getNetworkTokenPrice();
156
- await this.getMyTokensWithBalance();
157
- const networkToken = state.tokens?.find(token => token.address === networkAddress);
158
- if (networkToken) {
159
- state.networkTokenSymbol = networkToken.symbol;
144
+ try {
145
+ const {
146
+ networkAddress
147
+ } = this.getParams();
148
+ state.loadingTokens = true;
149
+ await this.getTokenList();
150
+ await this.getNetworkTokenPrice();
151
+ await this.getMyTokensWithBalance();
152
+ const networkToken = state.tokens?.find(token => token.address === networkAddress);
153
+ if (networkToken) {
154
+ state.networkTokenSymbol = networkToken.symbol;
155
+ }
156
+
157
+ // Set default source token if not set
158
+ if (!state.sourceToken && state.myTokensWithBalance?.length) {
159
+ const sourceToken = state.myTokensWithBalance?.find(token => token.address.startsWith(networkAddress)) || state.myTokensWithBalance?.[0];
160
+ this.setSourceToken(sourceToken);
161
+ this.setSourceTokenAmount('1');
162
+ }
163
+ } catch (error) {
164
+ LogController.sendError(error, 'SwapController.ts', 'initializeState');
165
+ SnackController.showError('Failed to initialize swap');
166
+ RouterController.goBack();
167
+ } finally {
168
+ state.loadingTokens = false;
160
169
  }
161
- const sourceToken = state.myTokensWithBalance?.find(token => token.address.startsWith(networkAddress)) || state.myTokensWithBalance?.[0];
162
- this.setSourceToken(sourceToken);
163
- this.setSourceTokenAmount('1');
164
170
  },
165
171
  async getTokenList() {
166
172
  const tokens = await SwapApiUtil.getTokenList();
@@ -182,15 +188,19 @@ export const SwapController = {
182
188
  }, {});
183
189
  },
184
190
  async getMyTokensWithBalance(forceUpdate) {
185
- const balances = await SwapApiUtil.getMyTokensWithBalance(forceUpdate);
186
- if (!balances) {
191
+ await ConnectionsController.fetchBalance(forceUpdate);
192
+ const swapBalances = SwapApiUtil.mapBalancesToSwapTokens(ConnectionsController.state.balances);
193
+ if (!swapBalances) {
187
194
  return;
188
195
  }
189
196
  await this.getInitialGasPrice();
190
- this.setBalances(balances);
197
+ this.setBalances(swapBalances);
191
198
  },
192
- getFilteredPopularTokens() {
193
- return state.popularTokens?.filter(token => !state.myTokensWithBalance?.some(t => t.address === token.address));
199
+ getFilteredPopularTokens(balances) {
200
+ if (!balances) {
201
+ return state.popularTokens;
202
+ }
203
+ return state.popularTokens?.filter(token => !balances.some(t => t.address === token.address));
194
204
  },
195
205
  setSourceToken(sourceToken) {
196
206
  if (!sourceToken) {
@@ -208,31 +218,17 @@ export const SwapController = {
208
218
  state.toTokenAmount = '';
209
219
  }
210
220
  },
211
- async initializeState() {
212
- if (state.initializing) {
213
- return;
214
- }
215
- state.initializing = true;
216
- if (!state.initialized) {
217
- try {
218
- await this.fetchTokens();
219
- state.initialized = true;
220
- } catch (error) {
221
- state.initialized = false;
222
- SnackController.showError('Failed to initialize swap');
223
- RouterController.goBack();
224
- }
225
- }
226
- state.initializing = false;
227
- },
228
221
  async getAddressPrice(address) {
222
+ const [namespace, chain] = address.split(':');
223
+ const networkId = `${namespace}:${chain}`;
229
224
  const existPrice = state.tokensPriceMap[address];
230
225
  if (existPrice) {
231
226
  return existPrice;
232
227
  }
233
228
  const response = await BlockchainApiController.fetchTokenPrice({
234
229
  projectId: OptionsController.state.projectId,
235
- addresses: [address]
230
+ addresses: [address],
231
+ caipNetworkId: networkId
236
232
  });
237
233
  const fungibles = response?.fungibles || [];
238
234
  const allTokens = [...(state.tokens || []), ...(state.myTokensWithBalance || [])];
@@ -246,9 +242,12 @@ export const SwapController = {
246
242
  const {
247
243
  networkAddress
248
244
  } = this.getParams();
245
+ const [namespace, chain] = networkAddress.split(':');
246
+ const networkId = `${namespace}:${chain}`;
249
247
  const response = await BlockchainApiController.fetchTokenPrice({
250
248
  projectId: OptionsController.state.projectId,
251
- addresses: [networkAddress]
249
+ addresses: [networkAddress],
250
+ caipNetworkId: networkId
252
251
  });
253
252
  const token = response?.fungibles?.[0];
254
253
  const price = token?.price.toString() || '0';
@@ -279,19 +278,10 @@ export const SwapController = {
279
278
  return SwapCalculationUtil.getProviderFeePrice(state.sourceTokenAmount, state.sourceTokenPriceInUSD);
280
279
  },
281
280
  setBalances(balances) {
282
- const {
283
- networkAddress
284
- } = this.getParams();
285
- const caipNetwork = NetworkController.state.caipNetwork;
286
- if (!caipNetwork) {
287
- return;
288
- }
289
- const networkToken = balances.find(token => token.address === networkAddress);
281
+ state.myTokensWithBalance = balances;
290
282
  balances.forEach(token => {
291
283
  state.tokensPriceMap[token.address] = token.price || 0;
292
284
  });
293
- state.myTokensWithBalance = balances.filter(token => token.address?.startsWith(caipNetwork.id));
294
- state.networkBalanceInUSD = networkToken ? NumberUtil.multiply(networkToken.quantity.numeric, networkToken.price).toString() : '0';
295
285
  },
296
286
  setToToken(toToken) {
297
287
  if (!toToken) {
@@ -326,36 +316,43 @@ export const SwapController = {
326
316
  },
327
317
  // -- Swap ---------------------------------------------- //
328
318
  async swapTokens() {
329
- const address = AccountController.state.address;
319
+ const address = ConnectionsController.state.activeAddress;
330
320
  const sourceToken = state.sourceToken;
331
321
  const toToken = state.toToken;
332
322
  const haveSourceTokenAmount = NumberUtil.bigNumber(state.sourceTokenAmount).isGreaterThan(0);
333
- if (!toToken || !sourceToken || state.loadingPrices || !haveSourceTokenAmount) {
323
+ if (!toToken || !sourceToken || state.loadingPrices || !haveSourceTokenAmount || !address) {
334
324
  return;
335
325
  }
336
326
  state.loadingQuote = true;
337
327
  const amountDecimal = NumberUtil.bigNumber(state.sourceTokenAmount).multipliedBy(10 ** sourceToken.decimals).integerValue();
338
- const quoteResponse = await BlockchainApiController.fetchSwapQuote({
339
- userAddress: address,
340
- projectId: OptionsController.state.projectId,
341
- from: sourceToken.address,
342
- to: toToken.address,
343
- gasPrice: state.gasFee,
344
- amount: amountDecimal.toString()
345
- });
346
- state.loadingQuote = false;
347
- const quoteToAmount = quoteResponse?.quotes?.[0]?.toAmount;
348
- if (!quoteToAmount) {
349
- return;
350
- }
351
- const toTokenAmount = NumberUtil.bigNumber(quoteToAmount).dividedBy(10 ** toToken.decimals).toString();
352
- this.setToTokenAmount(toTokenAmount);
353
- const isInsufficientToken = this.hasInsufficientToken(state.sourceTokenAmount, sourceToken.address);
354
- if (isInsufficientToken) {
355
- state.inputError = 'Insufficient balance';
356
- } else {
357
- state.inputError = undefined;
358
- this.setTransactionDetails();
328
+ try {
329
+ const quoteResponse = await BlockchainApiController.fetchSwapQuote({
330
+ userAddress: address,
331
+ projectId: OptionsController.state.projectId,
332
+ from: sourceToken.address,
333
+ to: toToken.address,
334
+ gasPrice: state.gasFee,
335
+ amount: amountDecimal.toString()
336
+ });
337
+ const quoteToAmount = quoteResponse?.quotes?.[0]?.toAmount;
338
+ if (!quoteToAmount) {
339
+ state.loadingQuote = false;
340
+ return;
341
+ }
342
+ const toTokenAmount = NumberUtil.bigNumber(quoteToAmount).dividedBy(10 ** toToken.decimals).toString();
343
+ this.setToTokenAmount(toTokenAmount);
344
+ const isInsufficientToken = this.hasInsufficientToken(state.sourceTokenAmount, sourceToken.address);
345
+ if (isInsufficientToken) {
346
+ state.inputError = 'Insufficient balance';
347
+ } else {
348
+ state.inputError = undefined;
349
+ this.setTransactionDetails();
350
+ }
351
+ } catch (error) {
352
+ LogController.sendError(error, 'SwapController.ts', 'getQuote');
353
+ SnackController.showError('Failed to get swap quote');
354
+ } finally {
355
+ state.loadingQuote = false;
359
356
  }
360
357
  },
361
358
  // -- Create Transactions -------------------------------------- //
@@ -419,7 +416,7 @@ export const SwapController = {
419
416
  if (!response) {
420
417
  throw new Error('createAllowanceTransaction - No response from generateApproveCalldata');
421
418
  }
422
- const gasLimit = await ConnectionController.estimateGas({
419
+ const gasLimit = await ConnectionsController.estimateGas({
423
420
  address: fromAddress,
424
421
  to: CoreHelperUtil.getPlainAddress(response.tx.to),
425
422
  data: response.tx.data
@@ -469,7 +466,7 @@ export const SwapController = {
469
466
  if (!fromCaipAddress || !sourceTokenAmount || !sourceToken || !toToken) {
470
467
  return undefined;
471
468
  }
472
- const amount = ConnectionController.parseUnits(sourceTokenAmount, sourceToken.decimals)?.toString();
469
+ const amount = ConnectionsController.parseUnits(sourceTokenAmount, sourceToken.decimals)?.toString();
473
470
  try {
474
471
  const response = await BlockchainApiController.generateSwapCalldata({
475
472
  projectId: OptionsController.state.projectId,
@@ -508,39 +505,29 @@ export const SwapController = {
508
505
  async sendTransactionForApproval(data) {
509
506
  const {
510
507
  fromAddress,
511
- isAuthConnector
508
+ network
512
509
  } = this.getParams();
513
510
  state.loadingApprovalTransaction = true;
514
- const approveLimitMessage = `Approve limit increase in your wallet`;
515
- if (isAuthConnector) {
516
- RouterController.pushTransactionStack({
517
- view: null,
518
- goBack: true,
519
- onSuccess() {
520
- SnackController.showLoading(approveLimitMessage);
521
- }
522
- });
523
- } else {
524
- SnackController.showLoading(approveLimitMessage);
525
- }
511
+ SnackController.showLoading('Approve limit increase in your wallet');
526
512
  try {
527
- await ConnectionController.sendTransaction({
513
+ await ConnectionsController.sendTransaction({
528
514
  address: fromAddress,
529
515
  to: data.to,
530
516
  data: data.data,
531
517
  value: BigInt(data.value),
532
518
  gasPrice: BigInt(data.gasPrice),
533
- chainNamespace: 'eip155'
519
+ chainNamespace: ConnectionsController.state.activeNamespace,
520
+ network
534
521
  });
535
522
  await this.swapTokens();
536
523
  await this.getTransaction();
537
524
  state.approvalTransaction = undefined;
538
- state.loadingApprovalTransaction = false;
539
525
  } catch (err) {
540
526
  const error = err;
541
527
  state.transactionError = error?.shortMessage;
542
- state.loadingApprovalTransaction = false;
543
528
  SnackController.showError(error?.shortMessage ?? 'Transaction error');
529
+ } finally {
530
+ state.loadingApprovalTransaction = false;
544
531
  }
545
532
  },
546
533
  async sendTransactionForSwap(data) {
@@ -549,61 +536,54 @@ export const SwapController = {
549
536
  }
550
537
  const {
551
538
  fromAddress,
552
- toTokenAmount,
553
- isAuthConnector
539
+ isAuthConnector,
540
+ network
554
541
  } = this.getParams();
555
542
  state.loadingTransaction = true;
556
- const snackbarPendingMessage = `Swapping ${state.sourceToken?.symbol} to ${NumberUtil.formatNumberToLocalString(toTokenAmount, 3)} ${state.toToken?.symbol}`;
557
- const snackbarSuccessMessage = `Swapped ${state.sourceToken?.symbol} to ${NumberUtil.formatNumberToLocalString(toTokenAmount, 3)} ${state.toToken?.symbol}`;
558
- if (isAuthConnector) {
559
- RouterController.pushTransactionStack({
560
- view: 'Account',
561
- goBack: false,
562
- onSuccess() {
563
- SnackController.showLoading(snackbarPendingMessage);
564
- SwapController.resetState();
565
- }
566
- });
567
- } else {
568
- SnackController.showLoading('Confirm transaction in your wallet');
569
- }
543
+ const snackbarSuccessMessage = `Swapped ${state.sourceToken?.symbol} to ${state.toToken?.symbol}`;
544
+ SnackController.showLoading('Confirm transaction in your wallet');
570
545
  try {
571
- const forceUpdateAddresses = [state.sourceToken?.address, state.toToken?.address].join(',');
572
- const transactionHash = await ConnectionController.sendTransaction({
546
+ const forceUpdateAddresses = [state.sourceToken?.address, state.toToken?.address].filter(Boolean);
547
+ const transactionHash = await ConnectionsController.sendTransaction({
573
548
  address: fromAddress,
574
549
  to: data.to,
575
550
  data: data.data,
576
551
  gas: data.gas,
577
552
  gasPrice: BigInt(data.gasPrice),
578
553
  value: data.value,
579
- chainNamespace: 'eip155'
554
+ chainNamespace: ConnectionsController.state.activeNamespace,
555
+ network
580
556
  });
581
557
  state.loadingTransaction = false;
582
- SnackController.showSuccess(snackbarSuccessMessage);
558
+ SnackController.showSuccess(snackbarSuccessMessage, true);
583
559
  EventsController.sendEvent({
584
560
  type: 'track',
585
561
  event: 'SWAP_SUCCESS',
586
562
  properties: {
587
- network: NetworkController.state.caipNetwork?.id || '',
563
+ network: ConnectionsController.state.activeNetwork?.caipNetworkId,
588
564
  swapFromToken: this.state.sourceToken?.symbol || '',
589
565
  swapToToken: this.state.toToken?.symbol || '',
590
566
  swapFromAmount: this.state.sourceTokenAmount || '',
591
567
  swapToAmount: this.state.toTokenAmount || '',
592
- isSmartAccount: AccountController.state.preferredAccountType === 'smartAccount'
568
+ isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
593
569
  }
594
570
  });
595
- SwapController.resetState();
596
- if (!isAuthConnector) {
597
- RouterController.replace('AccountDefault');
598
- }
571
+ RouterController.replace(isAuthConnector ? 'Account' : 'AccountDefault');
572
+ SwapController.clearTokens();
599
573
  SwapController.getMyTokensWithBalance(forceUpdateAddresses);
600
- AccountController.fetchTokenBalance();
601
574
  setTimeout(() => {
602
- TransactionsController.fetchTransactions(AccountController.state.address, true);
575
+ if (ConnectionsController.state.activeAddress) {
576
+ TransactionsController.fetchTransactions(ConnectionsController.state.activeAddress, true);
577
+ }
603
578
  }, 5000);
604
579
  return transactionHash;
605
580
  } catch (err) {
606
581
  const error = err;
582
+ LogController.sendError(error, 'SwapController.ts', 'sendTransactionForSwap', {
583
+ sourceToken: this.state.sourceToken?.symbol,
584
+ toToken: this.state.toToken?.symbol,
585
+ amount: this.state.sourceTokenAmount
586
+ });
607
587
  state.transactionError = error?.shortMessage;
608
588
  state.loadingTransaction = false;
609
589
  SnackController.showError(error?.shortMessage ?? 'Transaction error');
@@ -612,26 +592,59 @@ export const SwapController = {
612
592
  event: 'SWAP_ERROR',
613
593
  properties: {
614
594
  message: error?.shortMessage ?? error?.message ?? 'Unknown',
615
- network: NetworkController.state.caipNetwork?.id || '',
595
+ network: ConnectionsController.state.activeNetwork?.caipNetworkId,
616
596
  swapFromToken: this.state.sourceToken?.symbol || '',
617
597
  swapToToken: this.state.toToken?.symbol || '',
618
598
  swapFromAmount: this.state.sourceTokenAmount || '',
619
599
  swapToAmount: this.state.toTokenAmount || '',
620
- isSmartAccount: AccountController.state.preferredAccountType === 'smartAccount'
600
+ isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
621
601
  }
622
602
  });
623
603
  return undefined;
624
604
  }
625
605
  },
606
+ clearTransactionLoaders() {
607
+ state.loadingApprovalTransaction = false;
608
+ state.loadingBuildTransaction = false;
609
+ state.loadingTransaction = false;
610
+ },
611
+ clearTokens() {
612
+ state.sourceToken = initialState.sourceToken;
613
+ state.sourceTokenAmount = initialState.sourceTokenAmount;
614
+ state.sourceTokenPriceInUSD = initialState.sourceTokenPriceInUSD;
615
+ state.toToken = initialState.toToken;
616
+ state.toTokenAmount = initialState.toTokenAmount;
617
+ state.toTokenPriceInUSD = initialState.toTokenPriceInUSD;
618
+ state.inputError = initialState.inputError;
619
+ state.loadingApprovalTransaction = initialState.loadingApprovalTransaction;
620
+ state.loadingBuildTransaction = initialState.loadingBuildTransaction;
621
+ state.loadingTransaction = initialState.loadingTransaction;
622
+ state.fetchError = initialState.fetchError;
623
+ state.transactionError = initialState.transactionError;
624
+ state.swapTransaction = initialState.swapTransaction;
625
+ state.approvalTransaction = initialState.approvalTransaction;
626
+ },
627
+ resetState() {
628
+ this.clearTokens();
629
+ state.myTokensWithBalance = initialState.myTokensWithBalance;
630
+ state.tokensPriceMap = initialState.tokensPriceMap;
631
+ state.networkPrice = initialState.networkPrice;
632
+ state.networkTokenSymbol = initialState.networkTokenSymbol;
633
+ },
626
634
  // -- Checks -------------------------------------------- //
627
635
  hasInsufficientToken(sourceTokenAmount, sourceTokenAddress) {
636
+ const {
637
+ balances
638
+ } = ConnectionsController.state;
639
+ const networkToken = balances?.find(t => t.address === undefined);
640
+ const networkBalanceInUSD = networkToken ? NumberUtil.multiply(networkToken.quantity?.numeric ?? '0', networkToken.price).toString() : '0';
628
641
  const isInsufficientSourceTokenForSwap = SwapCalculationUtil.isInsufficientSourceTokenForSwap(sourceTokenAmount, sourceTokenAddress, state.myTokensWithBalance);
629
642
  let insufficientNetworkTokenForGas = true;
630
- if (AccountController.state.preferredAccountType === 'smartAccount') {
643
+ if (ConnectionsController.state.accountType === 'smartAccount') {
631
644
  // Smart Accounts may pay gas in any ERC20 token
632
645
  insufficientNetworkTokenForGas = false;
633
646
  } else {
634
- insufficientNetworkTokenForGas = SwapCalculationUtil.isInsufficientNetworkTokenForGas(state.networkBalanceInUSD, state.gasPriceInUSD);
647
+ insufficientNetworkTokenForGas = SwapCalculationUtil.isInsufficientNetworkTokenForGas(networkBalanceInUSD, state.gasPriceInUSD);
635
648
  }
636
649
  return insufficientNetworkTokenForGas || isInsufficientSourceTokenForSwap;
637
650
  },