@reown/appkit-core-react-native 2.0.0 → 2.0.1

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 (282) hide show
  1. package/lib/commonjs/controllers/ApiController.js +148 -82
  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 +127 -134
  6. package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
  7. package/lib/commonjs/controllers/ConnectionsController.js +280 -60
  8. package/lib/commonjs/controllers/ConnectionsController.js.map +1 -1
  9. package/lib/commonjs/controllers/EnsController.js +6 -4
  10. package/lib/commonjs/controllers/EnsController.js.map +1 -1
  11. package/lib/commonjs/controllers/EventsController.js +55 -5
  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 +134 -53
  18. package/lib/commonjs/controllers/OnRampController.js.map +1 -1
  19. package/lib/commonjs/controllers/OptionsController.js +20 -7
  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 +115 -99
  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 +119 -119
  29. package/lib/commonjs/controllers/SwapController.js.map +1 -1
  30. package/lib/commonjs/controllers/ThemeController.js +5 -0
  31. package/lib/commonjs/controllers/ThemeController.js.map +1 -1
  32. package/lib/commonjs/controllers/TransactionsController.js +25 -19
  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 +30 -37
  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 -17
  48. package/lib/commonjs/utils/AssetUtil.js.map +1 -1
  49. package/lib/commonjs/utils/ConstantsUtil.js +14 -431
  50. package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
  51. package/lib/commonjs/utils/CoreHelperUtil.js +33 -10
  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 +41 -12
  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 +119 -172
  59. package/lib/commonjs/utils/StorageUtil.js.map +1 -1
  60. package/lib/commonjs/utils/SwapApiUtil.js +2 -17
  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 +150 -82
  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 +128 -133
  70. package/lib/module/controllers/BlockchainApiController.js.map +1 -1
  71. package/lib/module/controllers/ConnectionsController.js +282 -60
  72. package/lib/module/controllers/ConnectionsController.js.map +1 -1
  73. package/lib/module/controllers/EnsController.js +6 -2
  74. package/lib/module/controllers/EnsController.js.map +1 -1
  75. package/lib/module/controllers/EventsController.js +54 -2
  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 +135 -52
  82. package/lib/module/controllers/OnRampController.js.map +1 -1
  83. package/lib/module/controllers/OptionsController.js +22 -7
  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 +114 -96
  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 +121 -119
  94. package/lib/module/controllers/SwapController.js.map +1 -1
  95. package/lib/module/controllers/ThemeController.js +7 -0
  96. package/lib/module/controllers/ThemeController.js.map +1 -1
  97. package/lib/module/controllers/TransactionsController.js +25 -17
  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 +12 -7
  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 -17
  112. package/lib/module/utils/AssetUtil.js.map +1 -1
  113. package/lib/module/utils/ConstantsUtil.js +16 -431
  114. package/lib/module/utils/ConstantsUtil.js.map +1 -1
  115. package/lib/module/utils/CoreHelperUtil.js +35 -8
  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 +44 -12
  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 +122 -172
  124. package/lib/module/utils/StorageUtil.js.map +1 -1
  125. package/lib/module/utils/SwapApiUtil.js +4 -17
  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 +8 -7
  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 +21 -13
  136. package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
  137. package/lib/typescript/controllers/ConnectionsController.d.ts +22 -18
  138. package/lib/typescript/controllers/ConnectionsController.d.ts.map +1 -1
  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 +1 -1
  146. package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
  147. package/lib/typescript/controllers/OnRampController.d.ts +4 -3
  148. package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
  149. package/lib/typescript/controllers/OptionsController.d.ts +8 -6
  150. package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
  151. package/lib/typescript/controllers/RouterController.d.ts +6 -21
  152. package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
  153. package/lib/typescript/controllers/SendController.d.ts +5 -7
  154. package/lib/typescript/controllers/SendController.d.ts.map +1 -1
  155. package/lib/typescript/controllers/SnackController.d.ts +3 -3
  156. package/lib/typescript/controllers/SnackController.d.ts.map +1 -1
  157. package/lib/typescript/controllers/SwapController.d.ts +11 -11
  158. package/lib/typescript/controllers/SwapController.d.ts.map +1 -1
  159. package/lib/typescript/controllers/ThemeController.d.ts +2 -0
  160. package/lib/typescript/controllers/ThemeController.d.ts.map +1 -1
  161. package/lib/typescript/controllers/TransactionsController.d.ts +3 -3
  162. package/lib/typescript/controllers/TransactionsController.d.ts.map +1 -1
  163. package/lib/typescript/controllers/WcController.d.ts +27 -0
  164. package/lib/typescript/controllers/WcController.d.ts.map +1 -0
  165. package/lib/typescript/features/reown-authentication/ReownAuthentication.d.ts +174 -0
  166. package/lib/typescript/features/reown-authentication/ReownAuthentication.d.ts.map +1 -0
  167. package/lib/typescript/features/reown-authentication/ReownAuthenticationMessenger.d.ts +16 -0
  168. package/lib/typescript/features/reown-authentication/ReownAuthenticationMessenger.d.ts.map +1 -0
  169. package/lib/typescript/features/reown-authentication/index.d.ts +3 -0
  170. package/lib/typescript/features/reown-authentication/index.d.ts.map +1 -0
  171. package/lib/typescript/index.d.ts +6 -8
  172. package/lib/typescript/index.d.ts.map +1 -1
  173. package/lib/typescript/utils/ApiUtil.d.ts +1 -1
  174. package/lib/typescript/utils/AssetUtil.d.ts +3 -4
  175. package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
  176. package/lib/typescript/utils/ConstantsUtil.d.ts +7 -416
  177. package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
  178. package/lib/typescript/utils/CoreHelperUtil.d.ts +8 -6
  179. package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
  180. package/lib/typescript/utils/EventUtil.d.ts +1 -1
  181. package/lib/typescript/utils/EventUtil.d.ts.map +1 -1
  182. package/lib/typescript/utils/FetchUtil.d.ts +3 -3
  183. package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
  184. package/lib/typescript/utils/LogUtils.d.ts +15 -0
  185. package/lib/typescript/utils/LogUtils.d.ts.map +1 -0
  186. package/lib/typescript/utils/StorageUtil.d.ts +8 -19
  187. package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
  188. package/lib/typescript/utils/SwapApiUtil.d.ts +3 -4
  189. package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
  190. package/lib/typescript/utils/SwapCalculationUtil.d.ts +1 -1
  191. package/lib/typescript/utils/SwapCalculationUtil.d.ts.map +1 -1
  192. package/lib/typescript/utils/WalletUtil.d.ts +5 -0
  193. package/lib/typescript/utils/WalletUtil.d.ts.map +1 -0
  194. package/package.json +12 -25
  195. package/src/controllers/ApiController.ts +158 -80
  196. package/src/controllers/AssetController.ts +0 -6
  197. package/src/controllers/BlockchainApiController.ts +109 -144
  198. package/src/controllers/ConnectionsController.ts +372 -88
  199. package/src/controllers/EnsController.ts +5 -3
  200. package/src/controllers/EventsController.ts +74 -3
  201. package/src/controllers/LogController.ts +250 -0
  202. package/src/controllers/ModalController.ts +11 -9
  203. package/src/controllers/OnRampController.ts +195 -82
  204. package/src/controllers/OptionsController.ts +40 -13
  205. package/src/controllers/RouterController.ts +20 -58
  206. package/src/controllers/SendController.ts +148 -112
  207. package/src/controllers/SnackController.ts +31 -5
  208. package/src/controllers/SwapController.ts +140 -148
  209. package/src/controllers/ThemeController.ts +7 -0
  210. package/src/controllers/TransactionsController.ts +26 -18
  211. package/src/controllers/WcController.ts +93 -0
  212. package/src/features/reown-authentication/ReownAuthentication.ts +475 -0
  213. package/src/features/reown-authentication/ReownAuthenticationMessenger.ts +80 -0
  214. package/src/features/reown-authentication/index.ts +2 -0
  215. package/src/index.ts +15 -22
  216. package/src/utils/ApiUtil.ts +1 -1
  217. package/src/utils/AssetUtil.ts +9 -20
  218. package/src/utils/ConstantsUtil.ts +16 -435
  219. package/src/utils/CoreHelperUtil.ts +62 -11
  220. package/src/utils/EventUtil.ts +1 -1
  221. package/src/utils/FetchUtil.ts +50 -14
  222. package/src/utils/LogUtils.ts +179 -0
  223. package/src/utils/StorageUtil.ts +171 -199
  224. package/src/utils/SwapApiUtil.ts +18 -37
  225. package/src/utils/SwapCalculationUtil.ts +1 -2
  226. package/src/utils/WalletUtil.ts +14 -0
  227. package/lib/commonjs/controllers/AccountController.js +0 -93
  228. package/lib/commonjs/controllers/AccountController.js.map +0 -1
  229. package/lib/commonjs/controllers/ConnectionController.js +0 -132
  230. package/lib/commonjs/controllers/ConnectionController.js.map +0 -1
  231. package/lib/commonjs/controllers/ConnectorController.js +0 -50
  232. package/lib/commonjs/controllers/ConnectorController.js.map +0 -1
  233. package/lib/commonjs/controllers/NetworkController.js +0 -90
  234. package/lib/commonjs/controllers/NetworkController.js.map +0 -1
  235. package/lib/commonjs/controllers/WebviewController.js +0 -52
  236. package/lib/commonjs/controllers/WebviewController.js.map +0 -1
  237. package/lib/commonjs/utils/NetworkUtil.js +0 -46
  238. package/lib/commonjs/utils/NetworkUtil.js.map +0 -1
  239. package/lib/commonjs/utils/RouterUtil.js +0 -25
  240. package/lib/commonjs/utils/RouterUtil.js.map +0 -1
  241. package/lib/commonjs/utils/TypeUtil.js +0 -6
  242. package/lib/commonjs/utils/TypeUtil.js.map +0 -1
  243. package/lib/module/controllers/AccountController.js +0 -88
  244. package/lib/module/controllers/AccountController.js.map +0 -1
  245. package/lib/module/controllers/ConnectionController.js +0 -127
  246. package/lib/module/controllers/ConnectionController.js.map +0 -1
  247. package/lib/module/controllers/ConnectorController.js +0 -45
  248. package/lib/module/controllers/ConnectorController.js.map +0 -1
  249. package/lib/module/controllers/NetworkController.js +0 -85
  250. package/lib/module/controllers/NetworkController.js.map +0 -1
  251. package/lib/module/controllers/WebviewController.js +0 -47
  252. package/lib/module/controllers/WebviewController.js.map +0 -1
  253. package/lib/module/utils/NetworkUtil.js +0 -40
  254. package/lib/module/utils/NetworkUtil.js.map +0 -1
  255. package/lib/module/utils/RouterUtil.js +0 -19
  256. package/lib/module/utils/RouterUtil.js.map +0 -1
  257. package/lib/module/utils/TypeUtil.js +0 -2
  258. package/lib/module/utils/TypeUtil.js.map +0 -1
  259. package/lib/typescript/controllers/AccountController.d.ts +0 -33
  260. package/lib/typescript/controllers/AccountController.d.ts.map +0 -1
  261. package/lib/typescript/controllers/ConnectionController.d.ts +0 -68
  262. package/lib/typescript/controllers/ConnectionController.d.ts.map +0 -1
  263. package/lib/typescript/controllers/ConnectorController.d.ts +0 -18
  264. package/lib/typescript/controllers/ConnectorController.d.ts.map +0 -1
  265. package/lib/typescript/controllers/NetworkController.d.ts +0 -34
  266. package/lib/typescript/controllers/NetworkController.d.ts.map +0 -1
  267. package/lib/typescript/controllers/WebviewController.d.ts +0 -21
  268. package/lib/typescript/controllers/WebviewController.d.ts.map +0 -1
  269. package/lib/typescript/utils/NetworkUtil.d.ts +0 -8
  270. package/lib/typescript/utils/NetworkUtil.d.ts.map +0 -1
  271. package/lib/typescript/utils/RouterUtil.d.ts +0 -5
  272. package/lib/typescript/utils/RouterUtil.d.ts.map +0 -1
  273. package/lib/typescript/utils/TypeUtil.d.ts +0 -817
  274. package/lib/typescript/utils/TypeUtil.d.ts.map +0 -1
  275. package/src/controllers/AccountController.ts +0 -128
  276. package/src/controllers/ConnectionController.ts +0 -208
  277. package/src/controllers/ConnectorController.ts +0 -64
  278. package/src/controllers/NetworkController.ts +0 -120
  279. package/src/controllers/WebviewController.ts +0 -63
  280. package/src/utils/NetworkUtil.ts +0 -33
  281. package/src/utils/RouterUtil.ts +0 -21
  282. package/src/utils/TypeUtil.ts +0 -995
@@ -1,6 +1,12 @@
1
1
  import { subscribeKey as subKey } from 'valtio/utils';
2
2
  import { proxy, subscribe as sub } from 'valtio';
3
- import { NumberUtil, type CaipAddress } from '@reown/appkit-common-react-native';
3
+ import {
4
+ NumberUtil,
5
+ type CaipAddress,
6
+ type CaipNetworkId,
7
+ type SwapInputTarget,
8
+ type SwapTokenWithBalance
9
+ } from '@reown/appkit-common-react-native';
4
10
 
5
11
  import { ConstantsUtil } from '../utils/ConstantsUtil';
6
12
  import { SwapApiUtil } from '../utils/SwapApiUtil';
@@ -8,10 +14,8 @@ import { BlockchainApiController } from './BlockchainApiController';
8
14
  import { OptionsController } from './OptionsController';
9
15
  import { SwapCalculationUtil } from '../utils/SwapCalculationUtil';
10
16
  import { SnackController } from './SnackController';
17
+ import { LogController } from './LogController';
11
18
  import { RouterController } from './RouterController';
12
- import type { SwapInputTarget, SwapTokenWithBalance } from '../utils/TypeUtil';
13
- import { ConnectorController } from './ConnectorController';
14
- import { AccountController } from './AccountController';
15
19
  import { CoreHelperUtil } from '../utils/CoreHelperUtil';
16
20
  import { TransactionsController } from './TransactionsController';
17
21
  import { EventsController } from './EventsController';
@@ -43,8 +47,7 @@ class TransactionError extends Error {
43
47
 
44
48
  export interface SwapControllerState {
45
49
  // Loading states
46
- initializing: boolean;
47
- initialized: boolean;
50
+ loadingTokens: boolean;
48
51
  loadingPrices: boolean;
49
52
  loadingQuote?: boolean;
50
53
  loadingApprovalTransaction?: boolean;
@@ -67,7 +70,6 @@ export interface SwapControllerState {
67
70
  toTokenAmount: string;
68
71
  toTokenPriceInUSD: number;
69
72
  networkPrice: string;
70
- networkBalanceInUSD: string;
71
73
  networkTokenSymbol: string;
72
74
  inputError: string | undefined;
73
75
 
@@ -95,8 +97,7 @@ type StateKey = keyof SwapControllerState;
95
97
  // -- State --------------------------------------------- //
96
98
  const initialState: SwapControllerState = {
97
99
  // Loading states
98
- initializing: false,
99
- initialized: false,
100
+ loadingTokens: false,
100
101
  loadingPrices: false,
101
102
  loadingQuote: false,
102
103
  loadingApprovalTransaction: false,
@@ -119,7 +120,6 @@ const initialState: SwapControllerState = {
119
120
  toTokenAmount: '',
120
121
  toTokenPriceInUSD: 0,
121
122
  networkPrice: '0',
122
- networkBalanceInUSD: '0',
123
123
  networkTokenSymbol: '',
124
124
  inputError: undefined,
125
125
 
@@ -142,7 +142,7 @@ const initialState: SwapControllerState = {
142
142
  providerFee: undefined
143
143
  };
144
144
 
145
- const state = proxy<SwapControllerState>(initialState);
145
+ const state = proxy<SwapControllerState>({ ...initialState });
146
146
 
147
147
  // -- Controller ---------------------------------------- //
148
148
  export const SwapController = {
@@ -157,7 +157,8 @@ export const SwapController = {
157
157
  },
158
158
 
159
159
  getParams() {
160
- const { activeAddress, activeNamespace, activeNetwork } = ConnectionsController.state;
160
+ const { activeAddress, activeNamespace, activeNetwork, connection } =
161
+ ConnectionsController.state;
161
162
  const address = CoreHelperUtil.getPlainAddress(activeAddress);
162
163
 
163
164
  if (!activeNamespace || !activeNetwork) {
@@ -166,8 +167,6 @@ export const SwapController = {
166
167
 
167
168
  const networkAddress: CaipAddress = `${activeNetwork.caipNetworkId}:${ConstantsUtil.NATIVE_TOKEN_ADDRESS[activeNamespace]}`;
168
169
 
169
- const type = ConnectorController.state.connectedConnector;
170
-
171
170
  if (!address) {
172
171
  throw new Error('No address found to swap the tokens from.');
173
172
  }
@@ -182,6 +181,7 @@ export const SwapController = {
182
181
 
183
182
  return {
184
183
  networkAddress,
184
+ network: activeNetwork,
185
185
  fromAddress: address,
186
186
  fromCaipAddress: activeAddress,
187
187
  sourceTokenAddress: state.sourceToken?.address,
@@ -195,12 +195,12 @@ export const SwapController = {
195
195
  invalidSourceTokenAmount,
196
196
  availableToSwap:
197
197
  activeAddress && !invalidToToken && !invalidSourceToken && !invalidSourceTokenAmount,
198
- isAuthConnector: type === 'AUTH'
198
+ isAuthConnector: !!connection?.properties?.provider
199
199
  };
200
200
  },
201
201
 
202
202
  switchTokens() {
203
- if (state.initializing || !state.initialized) {
203
+ if (state.loadingTokens) {
204
204
  return;
205
205
  }
206
206
 
@@ -225,41 +225,37 @@ export const SwapController = {
225
225
  this.swapTokens();
226
226
  },
227
227
 
228
- resetState() {
229
- state.myTokensWithBalance = initialState.myTokensWithBalance;
230
- state.tokensPriceMap = initialState.tokensPriceMap;
231
- state.initialized = initialState.initialized;
232
- state.sourceToken = initialState.sourceToken;
233
- state.sourceTokenAmount = initialState.sourceTokenAmount;
234
- state.sourceTokenPriceInUSD = initialState.sourceTokenPriceInUSD;
235
- state.toToken = initialState.toToken;
236
- state.toTokenAmount = initialState.toTokenAmount;
237
- state.toTokenPriceInUSD = initialState.toTokenPriceInUSD;
238
- state.networkPrice = initialState.networkPrice;
239
- state.networkTokenSymbol = initialState.networkTokenSymbol;
240
- state.networkBalanceInUSD = initialState.networkBalanceInUSD;
241
- state.inputError = initialState.inputError;
242
- },
243
-
244
228
  async fetchTokens() {
245
- const { networkAddress } = this.getParams();
229
+ try {
230
+ const { networkAddress } = this.getParams();
246
231
 
247
- await this.getTokenList();
248
- await this.getNetworkTokenPrice();
249
- await this.getMyTokensWithBalance();
232
+ state.loadingTokens = true;
233
+ await this.getTokenList();
234
+ await this.getNetworkTokenPrice();
235
+ await this.getMyTokensWithBalance();
250
236
 
251
- const networkToken = state.tokens?.find(token => token.address === networkAddress);
237
+ const networkToken = state.tokens?.find(token => token.address === networkAddress);
252
238
 
253
- if (networkToken) {
254
- state.networkTokenSymbol = networkToken.symbol;
255
- }
239
+ if (networkToken) {
240
+ state.networkTokenSymbol = networkToken.symbol;
241
+ }
256
242
 
257
- const sourceToken =
258
- state.myTokensWithBalance?.find(token => token.address.startsWith(networkAddress)) ||
259
- state.myTokensWithBalance?.[0];
243
+ // Set default source token if not set
244
+ if (!state.sourceToken && state.myTokensWithBalance?.length) {
245
+ const sourceToken =
246
+ state.myTokensWithBalance?.find(token => token.address.startsWith(networkAddress)) ||
247
+ state.myTokensWithBalance?.[0];
260
248
 
261
- this.setSourceToken(sourceToken);
262
- this.setSourceTokenAmount('1');
249
+ this.setSourceToken(sourceToken);
250
+ this.setSourceTokenAmount('1');
251
+ }
252
+ } catch (error) {
253
+ LogController.sendError(error, 'SwapController.ts', 'initializeState');
254
+ SnackController.showError('Failed to initialize swap');
255
+ RouterController.goBack();
256
+ } finally {
257
+ state.loadingTokens = false;
258
+ }
263
259
  },
264
260
 
265
261
  async getTokenList() {
@@ -285,20 +281,23 @@ export const SwapController = {
285
281
  }, {});
286
282
  },
287
283
 
288
- async getMyTokensWithBalance(forceUpdate?: string) {
289
- const balances = await SwapApiUtil.getMyTokensWithBalance(forceUpdate);
290
- if (!balances) {
284
+ async getMyTokensWithBalance(forceUpdate?: CaipAddress[]) {
285
+ await ConnectionsController.fetchBalance(forceUpdate);
286
+ const swapBalances = SwapApiUtil.mapBalancesToSwapTokens(ConnectionsController.state.balances);
287
+ if (!swapBalances) {
291
288
  return;
292
289
  }
293
290
 
294
291
  await this.getInitialGasPrice();
295
- this.setBalances(balances);
292
+ this.setBalances(swapBalances);
296
293
  },
297
294
 
298
- getFilteredPopularTokens() {
299
- return state.popularTokens?.filter(
300
- token => !state.myTokensWithBalance?.some(t => t.address === token.address)
301
- );
295
+ getFilteredPopularTokens(balances?: SwapTokenWithBalance[]) {
296
+ if (!balances) {
297
+ return state.popularTokens;
298
+ }
299
+
300
+ return state.popularTokens?.filter(token => !balances.some(t => t.address === token.address));
302
301
  },
303
302
 
304
303
  setSourceToken(sourceToken: SwapTokenWithBalance | undefined) {
@@ -322,26 +321,10 @@ export const SwapController = {
322
321
  }
323
322
  },
324
323
 
325
- async initializeState() {
326
- if (state.initializing) {
327
- return;
328
- }
329
-
330
- state.initializing = true;
331
- if (!state.initialized) {
332
- try {
333
- await this.fetchTokens();
334
- state.initialized = true;
335
- } catch (error) {
336
- state.initialized = false;
337
- SnackController.showError('Failed to initialize swap');
338
- RouterController.goBack();
339
- }
340
- }
341
- state.initializing = false;
342
- },
324
+ async getAddressPrice(address: CaipAddress) {
325
+ const [namespace, chain] = address.split(':');
326
+ const networkId: CaipNetworkId = `${namespace}:${chain}`;
343
327
 
344
- async getAddressPrice(address: string) {
345
328
  const existPrice = state.tokensPriceMap[address];
346
329
 
347
330
  if (existPrice) {
@@ -350,7 +333,8 @@ export const SwapController = {
350
333
 
351
334
  const response = await BlockchainApiController.fetchTokenPrice({
352
335
  projectId: OptionsController.state.projectId,
353
- addresses: [address]
336
+ addresses: [address],
337
+ caipNetworkId: networkId
354
338
  });
355
339
  const fungibles = response?.fungibles || [];
356
340
  const allTokens = [...(state.tokens || []), ...(state.myTokensWithBalance || [])];
@@ -365,10 +349,13 @@ export const SwapController = {
365
349
 
366
350
  async getNetworkTokenPrice() {
367
351
  const { networkAddress } = this.getParams();
352
+ const [namespace, chain] = networkAddress.split(':');
353
+ const networkId: CaipNetworkId = `${namespace}:${chain}`;
368
354
 
369
355
  const response = await BlockchainApiController.fetchTokenPrice({
370
356
  projectId: OptionsController.state.projectId,
371
- addresses: [networkAddress]
357
+ addresses: [networkAddress],
358
+ caipNetworkId: networkId
372
359
  });
373
360
 
374
361
  const token = response?.fungibles?.[0];
@@ -404,26 +391,11 @@ export const SwapController = {
404
391
  },
405
392
 
406
393
  setBalances(balances: SwapTokenWithBalance[]) {
407
- const { networkAddress } = this.getParams();
408
- const caipNetwork = ConnectionsController.state.activeNetwork;
409
-
410
- if (!caipNetwork) {
411
- return;
412
- }
413
-
414
- const networkToken = balances.find(token => token.address === networkAddress);
394
+ state.myTokensWithBalance = balances;
415
395
 
416
396
  balances.forEach(token => {
417
397
  state.tokensPriceMap[token.address] = token.price || 0;
418
398
  });
419
-
420
- state.myTokensWithBalance = balances.filter(
421
- token => token.address?.startsWith(caipNetwork.caipNetworkId)
422
- );
423
-
424
- state.networkBalanceInUSD = networkToken
425
- ? NumberUtil.multiply(networkToken.quantity.numeric, networkToken.price).toString()
426
- : '0';
427
399
  },
428
400
 
429
401
  setToToken(toToken: SwapTokenWithBalance | undefined) {
@@ -445,7 +417,7 @@ export const SwapController = {
445
417
  : '';
446
418
  },
447
419
 
448
- async setTokenPrice(address: string, target: SwapInputTarget) {
420
+ async setTokenPrice(address: CaipAddress, target: SwapInputTarget) {
449
421
  let price = state.tokensPriceMap[address] || 0;
450
422
 
451
423
  if (!price) {
@@ -495,11 +467,11 @@ export const SwapController = {
495
467
  amount: amountDecimal.toString()
496
468
  });
497
469
 
498
- state.loadingQuote = false;
499
-
500
470
  const quoteToAmount = quoteResponse?.quotes?.[0]?.toAmount;
501
471
 
502
472
  if (!quoteToAmount) {
473
+ state.loadingQuote = false;
474
+
503
475
  return;
504
476
  }
505
477
 
@@ -521,7 +493,9 @@ export const SwapController = {
521
493
  this.setTransactionDetails();
522
494
  }
523
495
  } catch (error) {
496
+ LogController.sendError(error, 'SwapController.ts', 'getQuote');
524
497
  SnackController.showError('Failed to get swap quote');
498
+ } finally {
525
499
  state.loadingQuote = false;
526
500
  }
527
501
  },
@@ -694,22 +668,10 @@ export const SwapController = {
694
668
  },
695
669
 
696
670
  async sendTransactionForApproval(data: TransactionParams) {
697
- const { fromAddress, isAuthConnector } = this.getParams();
698
-
671
+ const { fromAddress, network } = this.getParams();
699
672
  state.loadingApprovalTransaction = true;
700
- const approveLimitMessage = `Approve limit increase in your wallet`;
701
-
702
- if (isAuthConnector) {
703
- RouterController.pushTransactionStack({
704
- view: null,
705
- goBack: true,
706
- onSuccess() {
707
- SnackController.showLoading(approveLimitMessage);
708
- }
709
- });
710
- } else {
711
- SnackController.showLoading(approveLimitMessage);
712
- }
673
+
674
+ SnackController.showLoading('Approve limit increase in your wallet');
713
675
 
714
676
  try {
715
677
  await ConnectionsController.sendTransaction({
@@ -718,18 +680,20 @@ export const SwapController = {
718
680
  data: data.data as `0x${string}`,
719
681
  value: BigInt(data.value),
720
682
  gasPrice: BigInt(data.gasPrice),
721
- chainNamespace: ConnectionsController.state.activeNamespace
683
+ chainNamespace: ConnectionsController.state.activeNamespace,
684
+ network
722
685
  });
723
686
 
724
687
  await this.swapTokens();
725
688
  await this.getTransaction();
726
689
  state.approvalTransaction = undefined;
727
- state.loadingApprovalTransaction = false;
728
690
  } catch (err) {
729
691
  const error = err as TransactionError;
730
692
  state.transactionError = error?.shortMessage as unknown as string;
731
- state.loadingApprovalTransaction = false;
693
+
732
694
  SnackController.showError(error?.shortMessage ?? 'Transaction error');
695
+ } finally {
696
+ state.loadingApprovalTransaction = false;
733
697
  }
734
698
  },
735
699
 
@@ -737,32 +701,19 @@ export const SwapController = {
737
701
  if (!data) {
738
702
  return undefined;
739
703
  }
740
- const { fromAddress, toTokenAmount, isAuthConnector } = this.getParams();
704
+ const { fromAddress, isAuthConnector, network } = this.getParams();
741
705
 
742
706
  state.loadingTransaction = true;
743
707
 
744
- const snackbarPendingMessage = `Swapping ${state.sourceToken
745
- ?.symbol} to ${NumberUtil.formatNumberToLocalString(toTokenAmount, 3)} ${state.toToken
746
- ?.symbol}`;
747
- const snackbarSuccessMessage = `Swapped ${state.sourceToken
748
- ?.symbol} to ${NumberUtil.formatNumberToLocalString(toTokenAmount, 3)} ${state.toToken
749
- ?.symbol}`;
750
-
751
- if (isAuthConnector) {
752
- RouterController.pushTransactionStack({
753
- view: 'Account',
754
- goBack: false,
755
- onSuccess() {
756
- SnackController.showLoading(snackbarPendingMessage);
757
- SwapController.resetState();
758
- }
759
- });
760
- } else {
761
- SnackController.showLoading('Confirm transaction in your wallet');
762
- }
708
+ const snackbarSuccessMessage = `Swapped ${state.sourceToken?.symbol} to ${state.toToken?.symbol}`;
709
+
710
+ SnackController.showLoading('Confirm transaction in your wallet');
763
711
 
764
712
  try {
765
- const forceUpdateAddresses = [state.sourceToken?.address, state.toToken?.address].join(',');
713
+ const forceUpdateAddresses = [state.sourceToken?.address, state.toToken?.address].filter(
714
+ Boolean
715
+ ) as CaipAddress[];
716
+
766
717
  const transactionHash = await ConnectionsController.sendTransaction({
767
718
  address: fromAddress as `0x${string}`,
768
719
  to: data.to as `0x${string}`,
@@ -770,39 +721,43 @@ export const SwapController = {
770
721
  gas: data.gas,
771
722
  gasPrice: BigInt(data.gasPrice),
772
723
  value: data.value,
773
- chainNamespace: ConnectionsController.state.activeNamespace
724
+ chainNamespace: ConnectionsController.state.activeNamespace,
725
+ network
774
726
  });
775
727
 
776
728
  state.loadingTransaction = false;
777
- SnackController.showSuccess(snackbarSuccessMessage);
729
+
730
+ SnackController.showSuccess(snackbarSuccessMessage, true);
778
731
  EventsController.sendEvent({
779
732
  type: 'track',
780
733
  event: 'SWAP_SUCCESS',
781
734
  properties: {
782
- network: ConnectionsController.state.activeNetwork?.caipNetworkId || '',
735
+ network: ConnectionsController.state.activeNetwork?.caipNetworkId,
783
736
  swapFromToken: this.state.sourceToken?.symbol || '',
784
737
  swapToToken: this.state.toToken?.symbol || '',
785
738
  swapFromAmount: this.state.sourceTokenAmount || '',
786
739
  swapToAmount: this.state.toTokenAmount || '',
787
- isSmartAccount: AccountController.state.preferredAccountType === 'smartAccount'
740
+ isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
788
741
  }
789
742
  });
790
- SwapController.resetState();
791
-
792
- if (!isAuthConnector) {
793
- RouterController.replace('AccountDefault');
794
- }
795
-
743
+ RouterController.replace(isAuthConnector ? 'Account' : 'AccountDefault');
744
+ SwapController.clearTokens();
796
745
  SwapController.getMyTokensWithBalance(forceUpdateAddresses);
797
- AccountController.fetchTokenBalance();
798
746
 
799
747
  setTimeout(() => {
800
- TransactionsController.fetchTransactions(AccountController.state.address, true);
748
+ if (ConnectionsController.state.activeAddress) {
749
+ TransactionsController.fetchTransactions(ConnectionsController.state.activeAddress, true);
750
+ }
801
751
  }, 5000);
802
752
 
803
753
  return transactionHash;
804
754
  } catch (err) {
805
755
  const error = err as TransactionError;
756
+ LogController.sendError(error, 'SwapController.ts', 'sendTransactionForSwap', {
757
+ sourceToken: this.state.sourceToken?.symbol,
758
+ toToken: this.state.toToken?.symbol,
759
+ amount: this.state.sourceTokenAmount
760
+ });
806
761
  state.transactionError = error?.shortMessage;
807
762
  state.loadingTransaction = false;
808
763
  SnackController.showError(error?.shortMessage ?? 'Transaction error');
@@ -811,12 +766,12 @@ export const SwapController = {
811
766
  event: 'SWAP_ERROR',
812
767
  properties: {
813
768
  message: error?.shortMessage ?? error?.message ?? 'Unknown',
814
- network: ConnectionsController.state.activeNetwork?.caipNetworkId || '',
769
+ network: ConnectionsController.state.activeNetwork?.caipNetworkId,
815
770
  swapFromToken: this.state.sourceToken?.symbol || '',
816
771
  swapToToken: this.state.toToken?.symbol || '',
817
772
  swapFromAmount: this.state.sourceTokenAmount || '',
818
773
  swapToAmount: this.state.toTokenAmount || '',
819
- isSmartAccount: AccountController.state.preferredAccountType === 'smartAccount'
774
+ isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
820
775
  }
821
776
  });
822
777
 
@@ -824,8 +779,45 @@ export const SwapController = {
824
779
  }
825
780
  },
826
781
 
782
+ clearTransactionLoaders() {
783
+ state.loadingApprovalTransaction = false;
784
+ state.loadingBuildTransaction = false;
785
+ state.loadingTransaction = false;
786
+ },
787
+
788
+ clearTokens() {
789
+ state.sourceToken = initialState.sourceToken;
790
+ state.sourceTokenAmount = initialState.sourceTokenAmount;
791
+ state.sourceTokenPriceInUSD = initialState.sourceTokenPriceInUSD;
792
+ state.toToken = initialState.toToken;
793
+ state.toTokenAmount = initialState.toTokenAmount;
794
+ state.toTokenPriceInUSD = initialState.toTokenPriceInUSD;
795
+ state.inputError = initialState.inputError;
796
+ state.loadingApprovalTransaction = initialState.loadingApprovalTransaction;
797
+ state.loadingBuildTransaction = initialState.loadingBuildTransaction;
798
+ state.loadingTransaction = initialState.loadingTransaction;
799
+ state.fetchError = initialState.fetchError;
800
+ state.transactionError = initialState.transactionError;
801
+ state.swapTransaction = initialState.swapTransaction;
802
+ state.approvalTransaction = initialState.approvalTransaction;
803
+ },
804
+
805
+ resetState() {
806
+ this.clearTokens();
807
+ state.myTokensWithBalance = initialState.myTokensWithBalance;
808
+ state.tokensPriceMap = initialState.tokensPriceMap;
809
+ state.networkPrice = initialState.networkPrice;
810
+ state.networkTokenSymbol = initialState.networkTokenSymbol;
811
+ },
812
+
827
813
  // -- Checks -------------------------------------------- //
828
814
  hasInsufficientToken(sourceTokenAmount: string, sourceTokenAddress: string) {
815
+ const { balances } = ConnectionsController.state;
816
+ const networkToken = balances?.find(t => t.address === undefined);
817
+ const networkBalanceInUSD = networkToken
818
+ ? NumberUtil.multiply(networkToken.quantity?.numeric ?? '0', networkToken.price).toString()
819
+ : '0';
820
+
829
821
  const isInsufficientSourceTokenForSwap = SwapCalculationUtil.isInsufficientSourceTokenForSwap(
830
822
  sourceTokenAmount,
831
823
  sourceTokenAddress,
@@ -833,12 +825,12 @@ export const SwapController = {
833
825
  );
834
826
 
835
827
  let insufficientNetworkTokenForGas = true;
836
- if (AccountController.state.preferredAccountType === 'smartAccount') {
828
+ if (ConnectionsController.state.accountType === 'smartAccount') {
837
829
  // Smart Accounts may pay gas in any ERC20 token
838
830
  insufficientNetworkTokenForGas = false;
839
831
  } else {
840
832
  insufficientNetworkTokenForGas = SwapCalculationUtil.isInsufficientNetworkTokenForGas(
841
- state.networkBalanceInUSD,
833
+ networkBalanceInUSD,
842
834
  state.gasPriceInUSD
843
835
  );
844
836
  }
@@ -5,12 +5,14 @@ import type { ThemeMode, ThemeVariables } from '@reown/appkit-common-react-nativ
5
5
  // -- Types --------------------------------------------- //
6
6
  export interface ThemeControllerState {
7
7
  themeMode?: ThemeMode;
8
+ defaultThemeMode?: ThemeMode;
8
9
  themeVariables?: ThemeVariables;
9
10
  }
10
11
 
11
12
  // -- State --------------------------------------------- //
12
13
  const state = proxy<ThemeControllerState>({
13
14
  themeMode: undefined,
15
+ defaultThemeMode: undefined,
14
16
  themeVariables: {}
15
17
  });
16
18
 
@@ -30,6 +32,11 @@ export const ThemeController = {
30
32
  }
31
33
  },
32
34
 
35
+ setDefaultThemeMode(themeMode: ThemeControllerState['defaultThemeMode']) {
36
+ state.defaultThemeMode = themeMode;
37
+ this.setThemeMode(themeMode);
38
+ },
39
+
33
40
  setThemeVariables(themeVariables: ThemeControllerState['themeVariables']) {
34
41
  if (!themeVariables) {
35
42
  state.themeVariables = {};
@@ -1,11 +1,11 @@
1
- import type { Transaction } from '@reown/appkit-common-react-native';
2
- import { proxy, subscribe as sub } from 'valtio/vanilla';
1
+ import type { CaipAddress, Transaction } from '@reown/appkit-common-react-native';
2
+ import { proxy, subscribe as sub } from 'valtio';
3
3
  import { OptionsController } from './OptionsController';
4
4
  import { EventsController } from './EventsController';
5
5
  import { SnackController } from './SnackController';
6
6
  import { BlockchainApiController } from './BlockchainApiController';
7
- import { AccountController } from './AccountController';
8
7
  import { ConnectionsController } from './ConnectionsController';
8
+ import { LogController } from './LogController';
9
9
 
10
10
  // -- Types --------------------------------------------- //
11
11
  type TransactionByMonthMap = Record<string, Transaction[]>;
@@ -34,22 +34,29 @@ export const TransactionsController = {
34
34
  return sub(state, () => callback(state));
35
35
  },
36
36
 
37
- async fetchTransactions(accountAddress?: string, reset?: boolean) {
38
- const { projectId } = OptionsController.state;
37
+ async fetchTransactions(accountAddress: CaipAddress, reset?: boolean) {
38
+ try {
39
+ const { projectId } = OptionsController.state;
39
40
 
40
- if (!projectId || !accountAddress) {
41
- throw new Error("Transactions can't be fetched without a projectId and an accountAddress");
42
- }
41
+ if (!projectId || !accountAddress) {
42
+ throw new Error("Transactions can't be fetched without a projectId and an accountAddress");
43
+ }
43
44
 
44
- state.loading = true;
45
+ state.loading = true;
45
46
 
46
- if (reset) {
47
- state.next = undefined;
48
- }
47
+ if (reset) {
48
+ state.next = undefined;
49
+ }
50
+
51
+ const [namespace, chain, address] = accountAddress?.split(':') ?? [];
52
+
53
+ if (!namespace || !chain || !address) {
54
+ throw new Error('Invalid address');
55
+ }
49
56
 
50
- try {
51
57
  const response = await BlockchainApiController.fetchTransactions({
52
- account: accountAddress,
58
+ account: address,
59
+ chainId: `${namespace}:${chain}`,
53
60
  projectId,
54
61
  cursor: state.next
55
62
  });
@@ -68,14 +75,15 @@ export const TransactionsController = {
68
75
  state.empty = nonSpamTransactions.length === 0;
69
76
  state.next = response?.next ? response.next : undefined;
70
77
  } catch (error) {
78
+ LogController.sendError(error, 'TransactionsController.ts', 'fetchTransactions');
71
79
  EventsController.sendEvent({
72
80
  type: 'track',
73
81
  event: 'ERROR_FETCH_TRANSACTIONS',
74
82
  properties: {
75
- address: accountAddress,
76
- projectId,
83
+ address: accountAddress ?? '',
84
+ projectId: OptionsController.state.projectId,
77
85
  cursor: state.next,
78
- isSmartAccount: AccountController.state.preferredAccountType === 'smartAccount'
86
+ isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
79
87
  }
80
88
  });
81
89
  SnackController.showError('Failed to fetch transactions');
@@ -133,7 +141,7 @@ export const TransactionsController = {
133
141
  state.next = undefined;
134
142
  },
135
143
 
136
- resetTransactions() {
144
+ resetState() {
137
145
  state.transactions = [];
138
146
  state.loading = false;
139
147
  state.empty = false;