@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
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+
3
+ import { proxy } from 'valtio';
4
+ import { OptionsController } from './OptionsController';
5
+ import { sanitizeString, sanitizeStackTrace, sanitizeValue, sanitizeData } from '../utils/LogUtils';
6
+ import { CoreHelperUtil } from '../utils/CoreHelperUtil';
7
+
8
+ // -- Types --------------------------------------------- //
9
+
10
+ // -- Constants ----------------------------------------- //
11
+ const MAX_LOGS_COUNT = 300; // Prevent memory issues
12
+
13
+ // -- State --------------------------------------------- //
14
+ const state = proxy({
15
+ logs: []
16
+ });
17
+ const generateLogId = () => {
18
+ return CoreHelperUtil.getUUID();
19
+ };
20
+ const logToConsole = entry => {
21
+ const {
22
+ debug
23
+ } = OptionsController.state;
24
+ if (!debug) {
25
+ return;
26
+ }
27
+ const location = entry.fileName && entry.functionName ? `[${entry.fileName}:${entry.functionName}]` : entry.fileName ? `[${entry.fileName}]` : '';
28
+ const logMessage = `[AppKit] ${location} ${entry.message}`;
29
+ switch (entry.level) {
30
+ case 'error':
31
+ // eslint-disable-next-line no-console
32
+ console.error(logMessage);
33
+ break;
34
+ case 'warn':
35
+ console.warn(logMessage);
36
+ break;
37
+ case 'debug':
38
+ // eslint-disable-next-line no-console
39
+ console.debug(logMessage);
40
+ break;
41
+ case 'info':
42
+ default:
43
+ // eslint-disable-next-line no-console
44
+ console.log(logMessage);
45
+ break;
46
+ }
47
+ };
48
+
49
+ // -- Controller ---------------------------------------- //
50
+ export const LogController = {
51
+ state,
52
+ /**
53
+ * Destroy the LogController (cleanup resources)
54
+ */
55
+ destroy() {
56
+ // Clear all logs
57
+ state.logs = [];
58
+ },
59
+ /**
60
+ * Send a general log entry
61
+ */
62
+ sendLog(level, message, fileName, functionName, data) {
63
+ if (!OptionsController.state.debug) {
64
+ return;
65
+ }
66
+ const entry = {
67
+ id: generateLogId(),
68
+ timestamp: Date.now(),
69
+ level,
70
+ message: sanitizeString(message),
71
+ fileName,
72
+ functionName,
73
+ data: sanitizeData(data)
74
+ };
75
+ state.logs.push(entry);
76
+
77
+ // Enforce maximum log count
78
+ if (state.logs.length > MAX_LOGS_COUNT) {
79
+ state.logs = state.logs.slice(-MAX_LOGS_COUNT);
80
+ }
81
+ logToConsole(entry);
82
+ },
83
+ /**
84
+ * Send an error log entry - convenience method for try/catch blocks
85
+ */
86
+ sendError(error, fileName, functionName, additionalData) {
87
+ let message;
88
+ let data = sanitizeData(additionalData) || {};
89
+ if (error instanceof Error) {
90
+ message = error.message || 'Error occurred';
91
+ // Sanitize stack trace to remove sensitive file paths
92
+ data['stack'] = error.stack ? sanitizeStackTrace(error.stack) : undefined;
93
+ data['name'] = error.name;
94
+
95
+ // Sanitize any additional properties on the error object
96
+ const errorProps = {};
97
+ Object.getOwnPropertyNames(error).forEach(prop => {
98
+ if (prop !== 'message' && prop !== 'stack' && prop !== 'name') {
99
+ errorProps[prop] = error[prop];
100
+ }
101
+ });
102
+ if (Object.keys(errorProps).length > 0) {
103
+ Object.assign(data, sanitizeValue(errorProps));
104
+ }
105
+ } else if (typeof error === 'string') {
106
+ message = error;
107
+ } else if (error && typeof error === 'object' && 'message' in error) {
108
+ // Handle error-like objects (e.g., RPC errors, custom error objects)
109
+ message = String(error.message) || 'Error occurred';
110
+ // Include all properties of the error object
111
+ Object.assign(data, sanitizeValue(error));
112
+ } else {
113
+ message = 'Unknown error occurred';
114
+ // Sanitize the original error object
115
+ data['originalError'] = sanitizeValue(error);
116
+ }
117
+
118
+ // Note: sanitization happens in sendLog method
119
+ this.sendLog('error', message, fileName, functionName, data);
120
+ },
121
+ /**
122
+ * Send an info log entry
123
+ */
124
+ sendInfo(message, fileName, functionName, data) {
125
+ this.sendLog('info', message, fileName, functionName, data);
126
+ },
127
+ /**
128
+ * Send a warning log entry
129
+ */
130
+ sendWarn(message, fileName, functionName, data) {
131
+ this.sendLog('warn', message, fileName, functionName, data);
132
+ },
133
+ /**
134
+ * Send a debug log entry
135
+ */
136
+ sendDebug(message, fileName, functionName, data) {
137
+ this.sendLog('debug', message, fileName, functionName, data);
138
+ },
139
+ /**
140
+ * Get all logs
141
+ */
142
+ getLogs() {
143
+ return [...state.logs];
144
+ },
145
+ /**
146
+ * Get logs by level
147
+ */
148
+ getLogsByLevel(level) {
149
+ return state.logs.filter(log => log.level === level);
150
+ },
151
+ /**
152
+ * Get recent logs (last N entries)
153
+ */
154
+ getRecentLogs(count = 100) {
155
+ return state.logs.slice(-count);
156
+ },
157
+ /**
158
+ * Clear all logs
159
+ */
160
+ clearLogs() {
161
+ state.logs = [];
162
+ },
163
+ /**
164
+ * Export logs as JSON string for debugging
165
+ */
166
+ exportLogs() {
167
+ return JSON.stringify(state.logs, null, 2);
168
+ },
169
+ /**
170
+ * Get logs count by level
171
+ */
172
+ getLogsStats() {
173
+ const stats = {
174
+ info: 0,
175
+ warn: 0,
176
+ error: 0,
177
+ debug: 0
178
+ };
179
+ state.logs.forEach(log => {
180
+ stats[log.level]++;
181
+ });
182
+ return stats;
183
+ }
184
+ };
185
+ //# sourceMappingURL=LogController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["proxy","OptionsController","sanitizeString","sanitizeStackTrace","sanitizeValue","sanitizeData","CoreHelperUtil","MAX_LOGS_COUNT","state","logs","generateLogId","getUUID","logToConsole","entry","debug","location","fileName","functionName","logMessage","message","level","console","error","warn","log","LogController","destroy","sendLog","data","id","timestamp","Date","now","push","length","slice","sendError","additionalData","Error","stack","undefined","name","errorProps","Object","getOwnPropertyNames","forEach","prop","keys","assign","String","sendInfo","sendWarn","sendDebug","getLogs","getLogsByLevel","filter","getRecentLogs","count","clearLogs","exportLogs","JSON","stringify","getLogsStats","stats","info"],"sourceRoot":"../../../src","sources":["controllers/LogController.ts"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,11 @@
1
+ "use strict";
2
+
1
3
  import { proxy } from 'valtio';
2
- import { AccountController } from './AccountController';
3
4
  import { RouterController } from './RouterController';
4
5
  import { PublicStateController } from './PublicStateController';
5
6
  import { EventsController } from './EventsController';
6
7
  import { ApiController } from './ApiController';
7
- import { ConnectorController } from './ConnectorController';
8
+ import { ConnectionsController } from './ConnectionsController';
8
9
 
9
10
  // -- Types --------------------------------------------- //
10
11
 
@@ -19,11 +20,14 @@ export const ModalController = {
19
20
  state,
20
21
  async open(options) {
21
22
  await ApiController.state.prefetchPromise;
22
- const connected = AccountController.state.isConnected;
23
+ const isConnected = ConnectionsController.state.isConnected;
24
+ const isUniversalWallet = !!ConnectionsController.state.connection?.properties?.provider;
23
25
  if (options?.view) {
26
+ if (options.view === 'Account' && !isUniversalWallet) {
27
+ options.view = 'AccountDefault';
28
+ }
24
29
  RouterController.reset(options.view);
25
- } else if (AccountController.state.isConnected) {
26
- const isUniversalWallet = ConnectorController.state.connectedConnector === 'AUTH';
30
+ } else if (isConnected) {
27
31
  RouterController.reset(isUniversalWallet ? 'Account' : 'AccountDefault');
28
32
  } else {
29
33
  RouterController.reset('Connect');
@@ -36,12 +40,12 @@ export const ModalController = {
36
40
  type: 'track',
37
41
  event: 'MODAL_OPEN',
38
42
  properties: {
39
- connected
43
+ connected: isConnected
40
44
  }
41
45
  });
42
46
  },
43
47
  close() {
44
- const connected = AccountController.state.isConnected;
48
+ const connected = ConnectionsController.state.isConnected;
45
49
  state.open = false;
46
50
  PublicStateController.set({
47
51
  open: false
@@ -1 +1 @@
1
- {"version":3,"names":["proxy","AccountController","RouterController","PublicStateController","EventsController","ApiController","ConnectorController","state","open","loading","ModalController","options","prefetchPromise","connected","isConnected","view","reset","isUniversalWallet","connectedConnector","set","sendEvent","type","event","properties","close","setLoading"],"sourceRoot":"../../../src","sources":["controllers/ModalController.ts"],"mappings":"AAAA,SAASA,KAAK,QAAQ,QAAQ;AAC9B,SAASC,iBAAiB,QAAQ,qBAAqB;AAEvD,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,mBAAmB,QAAQ,uBAAuB;;AAE3D;;AAYA;AACA,MAAMC,KAAK,GAAGP,KAAK,CAAuB;EACxCQ,IAAI,EAAE,KAAK;EACXC,OAAO,EAAE;AACX,CAAC,CAAC;;AAEF;AACA,OAAO,MAAMC,eAAe,GAAG;EAC7BH,KAAK;EAEL,MAAMC,IAAIA,CAACG,OAA0C,EAAE;IACrD,MAAMN,aAAa,CAACE,KAAK,CAACK,eAAe;IACzC,MAAMC,SAAS,GAAGZ,iBAAiB,CAACM,KAAK,CAACO,WAAW;IACrD,IAAIH,OAAO,EAAEI,IAAI,EAAE;MACjBb,gBAAgB,CAACc,KAAK,CAACL,OAAO,CAACI,IAAI,CAAC;IACtC,CAAC,MAAM,IAAId,iBAAiB,CAACM,KAAK,CAACO,WAAW,EAAE;MAC9C,MAAMG,iBAAiB,GAAGX,mBAAmB,CAACC,KAAK,CAACW,kBAAkB,KAAK,MAAM;MACjFhB,gBAAgB,CAACc,KAAK,CAACC,iBAAiB,GAAG,SAAS,GAAG,gBAAgB,CAAC;IAC1E,CAAC,MAAM;MACLf,gBAAgB,CAACc,KAAK,CAAC,SAAS,CAAC;IACnC;IACAT,KAAK,CAACC,IAAI,GAAG,IAAI;IACjBL,qBAAqB,CAACgB,GAAG,CAAC;MAAEX,IAAI,EAAE;IAAK,CAAC,CAAC;IACzCJ,gBAAgB,CAACgB,SAAS,CAAC;MACzBC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,YAAY;MACnBC,UAAU,EAAE;QAAEV;MAAU;IAC1B,CAAC,CAAC;EACJ,CAAC;EAEDW,KAAKA,CAAA,EAAG;IACN,MAAMX,SAAS,GAAGZ,iBAAiB,CAACM,KAAK,CAACO,WAAW;IACrDP,KAAK,CAACC,IAAI,GAAG,KAAK;IAClBL,qBAAqB,CAACgB,GAAG,CAAC;MAAEX,IAAI,EAAE;IAAM,CAAC,CAAC;IAC1CJ,gBAAgB,CAACgB,SAAS,CAAC;MACzBC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,aAAa;MACpBC,UAAU,EAAE;QAAEV;MAAU;IAC1B,CAAC,CAAC;EACJ,CAAC;EAEDY,UAAUA,CAAChB,OAAwC,EAAE;IACnDF,KAAK,CAACE,OAAO,GAAGA,OAAO;EACzB;AACF,CAAC"}
1
+ {"version":3,"names":["proxy","RouterController","PublicStateController","EventsController","ApiController","ConnectionsController","state","open","loading","ModalController","options","prefetchPromise","isConnected","isUniversalWallet","connection","properties","provider","view","reset","set","sendEvent","type","event","connected","close","setLoading"],"sourceRoot":"../../../src","sources":["controllers/ModalController.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,QAAQ;AAC9B,SAASC,gBAAgB,QAAoC,oBAAoB;AACjF,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,qBAAqB,QAAQ,yBAAyB;;AAE/D;;AAYA;AACA,MAAMC,KAAK,GAAGN,KAAK,CAAuB;EACxCO,IAAI,EAAE,KAAK;EACXC,OAAO,EAAE;AACX,CAAC,CAAC;;AAEF;AACA,OAAO,MAAMC,eAAe,GAAG;EAC7BH,KAAK;EAEL,MAAMC,IAAIA,CAACG,OAA0C,EAAE;IACrD,MAAMN,aAAa,CAACE,KAAK,CAACK,eAAe;IACzC,MAAMC,WAAW,GAAGP,qBAAqB,CAACC,KAAK,CAACM,WAAW;IAC3D,MAAMC,iBAAiB,GAAG,CAAC,CAACR,qBAAqB,CAACC,KAAK,CAACQ,UAAU,EAAEC,UAAU,EAAEC,QAAQ;IACxF,IAAIN,OAAO,EAAEO,IAAI,EAAE;MACjB,IAAIP,OAAO,CAACO,IAAI,KAAK,SAAS,IAAI,CAACJ,iBAAiB,EAAE;QACpDH,OAAO,CAACO,IAAI,GAAG,gBAAgB;MACjC;MAEAhB,gBAAgB,CAACiB,KAAK,CAACR,OAAO,CAACO,IAAI,CAAC;IACtC,CAAC,MAAM,IAAIL,WAAW,EAAE;MACtBX,gBAAgB,CAACiB,KAAK,CAACL,iBAAiB,GAAG,SAAS,GAAG,gBAAgB,CAAC;IAC1E,CAAC,MAAM;MACLZ,gBAAgB,CAACiB,KAAK,CAAC,SAAS,CAAC;IACnC;IACAZ,KAAK,CAACC,IAAI,GAAG,IAAI;IACjBL,qBAAqB,CAACiB,GAAG,CAAC;MAAEZ,IAAI,EAAE;IAAK,CAAC,CAAC;IACzCJ,gBAAgB,CAACiB,SAAS,CAAC;MACzBC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,YAAY;MACnBP,UAAU,EAAE;QAAEQ,SAAS,EAAEX;MAAY;IACvC,CAAC,CAAC;EACJ,CAAC;EAEDY,KAAKA,CAAA,EAAG;IACN,MAAMD,SAAS,GAAGlB,qBAAqB,CAACC,KAAK,CAACM,WAAW;IACzDN,KAAK,CAACC,IAAI,GAAG,KAAK;IAClBL,qBAAqB,CAACiB,GAAG,CAAC;MAAEZ,IAAI,EAAE;IAAM,CAAC,CAAC;IAC1CJ,gBAAgB,CAACiB,SAAS,CAAC;MACzBC,IAAI,EAAE,OAAO;MACbC,KAAK,EAAE,aAAa;MACpBP,UAAU,EAAE;QAAEQ;MAAU;IAC1B,CAAC,CAAC;EACJ,CAAC;EAEDE,UAAUA,CAACjB,OAAwC,EAAE;IACnDF,KAAK,CAACE,OAAO,GAAGA,OAAO;EACzB;AACF,CAAC","ignoreList":[]}
@@ -1,14 +1,17 @@
1
- import { subscribeKey as subKey } from 'valtio/vanilla/utils';
2
- import { proxy, subscribe as sub } from 'valtio/vanilla';
1
+ "use strict";
2
+
3
+ import { subscribeKey as subKey } from 'valtio/utils';
4
+ import { proxy, subscribe as sub } from 'valtio';
5
+ import { BlockchainOnRampError } from '@reown/appkit-common-react-native';
3
6
  import { CoreHelperUtil } from '../utils/CoreHelperUtil';
4
- import { NetworkController } from './NetworkController';
5
- import { AccountController } from './AccountController';
6
7
  import { OptionsController } from './OptionsController';
7
8
  import { ConstantsUtil, OnRampErrorType } from '../utils/ConstantsUtil';
8
9
  import { StorageUtil } from '../utils/StorageUtil';
9
10
  import { SnackController } from './SnackController';
11
+ import { LogController } from './LogController';
10
12
  import { EventsController } from './EventsController';
11
- import { BlockchainApiController } from './BlockchainApiController';
13
+ import { BlockchainApiController, EXCLUDED_ONRAMP_PROVIDERS } from './BlockchainApiController';
14
+ import { ConnectionsController } from './ConnectionsController';
12
15
 
13
16
  // -- Helpers ------------------------------------------- //
14
17
 
@@ -20,23 +23,27 @@ const mapErrorMessage = errorCode => {
20
23
  const errorMap = {
21
24
  [OnRampErrorType.AMOUNT_TOO_LOW]: {
22
25
  type: OnRampErrorType.AMOUNT_TOO_LOW,
23
- message: 'Amount is too low'
26
+ message: 'The amount is too low'
24
27
  },
25
28
  [OnRampErrorType.AMOUNT_TOO_HIGH]: {
26
29
  type: OnRampErrorType.AMOUNT_TOO_HIGH,
27
- message: 'Amount is too high'
30
+ message: 'The amount is too high'
28
31
  },
29
32
  [OnRampErrorType.INVALID_AMOUNT]: {
30
33
  type: OnRampErrorType.INVALID_AMOUNT,
31
- message: 'Please adjust amount'
34
+ message: 'Enter a valid amount'
32
35
  },
33
36
  [OnRampErrorType.INCOMPATIBLE_REQUEST]: {
34
37
  type: OnRampErrorType.INCOMPATIBLE_REQUEST,
35
- message: 'Try different amount or payment method'
38
+ message: 'Enter a valid amount'
36
39
  },
37
40
  [OnRampErrorType.BAD_REQUEST]: {
38
41
  type: OnRampErrorType.BAD_REQUEST,
39
- message: 'Try different amount or payment method'
42
+ message: 'Enter a valid amount'
43
+ },
44
+ [OnRampErrorType.NO_VALID_QUOTES]: {
45
+ type: OnRampErrorType.NO_VALID_QUOTES,
46
+ message: 'No quotes available'
40
47
  }
41
48
  };
42
49
  return errorMap[errorCode] || {
@@ -68,22 +75,34 @@ export const OnRampController = {
68
75
  return subKey(state, key, callback);
69
76
  },
70
77
  async setSelectedCountry(country, updateCurrency = true) {
71
- state.selectedCountry = country;
72
- state.loading = true;
73
- if (updateCurrency) {
74
- const currencyCode = ConstantsUtil.COUNTRY_CURRENCIES[country.countryCode] || 'USD';
75
- const currency = state.paymentCurrencies?.find(c => c.currencyCode === currencyCode);
76
- if (currency) {
77
- this.setPaymentCurrency(currency);
78
+ try {
79
+ state.selectedCountry = country;
80
+ state.loading = true;
81
+ if (updateCurrency) {
82
+ const currencyCode = state.countriesDefaults?.find(d => d.countryCode === country.countryCode)?.defaultCurrencyCode || 'USD';
83
+ let currency = state.paymentCurrencies?.find(c => c.currencyCode === currencyCode);
84
+ if (!currency) {
85
+ currency = state.paymentCurrencies?.find(c => c.currencyCode === 'USD');
86
+ }
87
+ if (currency) {
88
+ this.setPaymentCurrency(currency);
89
+ }
78
90
  }
91
+ await Promise.all([this.fetchPaymentMethods(), this.fetchCryptoCurrencies()]);
92
+ this.clearQuotes();
93
+ state.loading = false;
94
+ StorageUtil.setOnRampPreferredCountry(country);
95
+ } catch (error) {
96
+ LogController.sendError(error, 'OnRampController.ts', 'setSelectedCountry');
97
+ state.loading = false;
98
+ state.error = {
99
+ type: OnRampErrorType.FAILED_TO_LOAD_COUNTRIES,
100
+ message: 'Failed to load countries'
101
+ };
79
102
  }
80
- await Promise.all([this.fetchPaymentMethods(), this.fetchCryptoCurrencies()]);
81
- state.loading = false;
82
- StorageUtil.setOnRampPreferredCountry(country);
83
103
  },
84
104
  setSelectedPaymentMethod(paymentMethod) {
85
105
  state.selectedPaymentMethod = paymentMethod;
86
- this.clearQuotes();
87
106
  },
88
107
  setPurchaseCurrency(currency) {
89
108
  state.purchaseCurrency = currency;
@@ -113,11 +132,11 @@ export const OnRampController = {
113
132
  },
114
133
  updateSelectedPurchaseCurrency() {
115
134
  let selectedCurrency;
116
- if (NetworkController.state.caipNetwork?.id) {
117
- const defaultCurrency = ConstantsUtil.NETWORK_DEFAULT_CURRENCIES[NetworkController.state.caipNetwork?.id];
135
+ if (ConnectionsController.state.activeNetwork?.caipNetworkId) {
136
+ const defaultCurrency = ConstantsUtil.NETWORK_DEFAULT_CURRENCIES[ConnectionsController.state.activeNetwork?.caipNetworkId];
118
137
  selectedCurrency = state.purchaseCurrencies?.find(c => c.currencyCode === defaultCurrency);
119
138
  }
120
- state.purchaseCurrency = selectedCurrency || state.purchaseCurrencies?.[0] || undefined;
139
+ state.purchaseCurrency = selectedCurrency ?? undefined;
121
140
  },
122
141
  getServiceProviderImage(serviceProviderName) {
123
142
  if (!serviceProviderName) return undefined;
@@ -145,12 +164,31 @@ export const OnRampController = {
145
164
  state.selectedCountry = countries.find(c => c.countryCode === countryCode) || countries[0] || undefined;
146
165
  }
147
166
  } catch (error) {
167
+ LogController.sendError(error, 'OnRampController.ts', 'fetchCountries');
148
168
  state.error = {
149
169
  type: OnRampErrorType.FAILED_TO_LOAD_COUNTRIES,
150
170
  message: 'Failed to load countries'
151
171
  };
152
172
  }
153
173
  },
174
+ async fetchCountriesDefaults() {
175
+ try {
176
+ let countriesDefaults = await StorageUtil.getOnRampCountriesDefaults();
177
+ if (!countriesDefaults.length) {
178
+ countriesDefaults = (await BlockchainApiController.fetchOnRampCountriesDefaults()) ?? [];
179
+ if (countriesDefaults.length) {
180
+ StorageUtil.setOnRampCountriesDefaults(countriesDefaults);
181
+ }
182
+ }
183
+ state.countriesDefaults = countriesDefaults;
184
+ } catch (error) {
185
+ LogController.sendError(error, 'OnRampController.ts', 'fetchCountriesDefaults');
186
+ state.error = {
187
+ type: OnRampErrorType.FAILED_TO_LOAD_COUNTRIES,
188
+ message: 'Failed to load countries defaults'
189
+ };
190
+ }
191
+ },
154
192
  async fetchServiceProviders() {
155
193
  try {
156
194
  let serviceProviders = await StorageUtil.getOnRampServiceProviders();
@@ -162,6 +200,7 @@ export const OnRampController = {
162
200
  }
163
201
  state.serviceProviders = serviceProviders || [];
164
202
  } catch (error) {
203
+ LogController.sendError(error, 'OnRampController.ts', 'fetchServiceProviders');
165
204
  state.error = {
166
205
  type: OnRampErrorType.FAILED_TO_LOAD_PROVIDERS,
167
206
  message: 'Failed to load service providers'
@@ -173,7 +212,7 @@ export const OnRampController = {
173
212
  const paymentMethods = await BlockchainApiController.fetchOnRampPaymentMethods({
174
213
  countries: state.selectedCountry?.countryCode
175
214
  });
176
- const defaultCountryPaymentMethods = ConstantsUtil.COUNTRY_DEFAULT_PAYMENT_METHOD[state.selectedCountry?.countryCode];
215
+ const defaultCountryPaymentMethods = state.countriesDefaults?.find(d => d.countryCode === state.selectedCountry?.countryCode)?.defaultPaymentMethods || [];
177
216
  state.paymentMethods = paymentMethods?.sort((a, b) => {
178
217
  const aIndex = defaultCountryPaymentMethods?.indexOf(a.paymentMethod);
179
218
  const bIndex = defaultCountryPaymentMethods?.indexOf(b.paymentMethod);
@@ -182,9 +221,9 @@ export const OnRampController = {
182
221
  if (bIndex === -1) return -1;
183
222
  return aIndex - bIndex;
184
223
  }) || [];
185
- state.selectedPaymentMethod = paymentMethods?.[0] || undefined;
186
- this.clearQuotes();
224
+ state.selectedPaymentMethod = state.paymentMethods[0];
187
225
  } catch (error) {
226
+ LogController.sendError(error, 'OnRampController.ts', 'fetchPaymentMethods');
188
227
  state.error = {
189
228
  type: OnRampErrorType.FAILED_TO_LOAD_METHODS,
190
229
  message: 'Failed to load payment methods'
@@ -200,12 +239,13 @@ export const OnRampController = {
200
239
  });
201
240
  state.purchaseCurrencies = cryptoCurrencies || [];
202
241
  let selectedCurrency;
203
- if (NetworkController.state.caipNetwork?.id) {
204
- const defaultCurrency = ConstantsUtil.NETWORK_DEFAULT_CURRENCIES[NetworkController.state.caipNetwork?.id] || 'ETH';
242
+ if (ConnectionsController.state.activeNetwork?.caipNetworkId) {
243
+ const defaultCurrency = ConstantsUtil.NETWORK_DEFAULT_CURRENCIES[ConnectionsController.state.activeNetwork?.caipNetworkId];
205
244
  selectedCurrency = state.purchaseCurrencies?.find(c => c.currencyCode === defaultCurrency);
206
245
  }
207
- state.purchaseCurrency = selectedCurrency || cryptoCurrencies?.[0] || undefined;
246
+ state.purchaseCurrency = selectedCurrency || undefined;
208
247
  } catch (error) {
248
+ LogController.sendError(error, 'OnRampController.ts', 'fetchCryptoCurrencies');
209
249
  state.error = {
210
250
  type: OnRampErrorType.FAILED_TO_LOAD_CURRENCIES,
211
251
  message: 'Failed to load crypto currencies'
@@ -227,7 +267,7 @@ export const OnRampController = {
227
267
  }
228
268
  state.paymentCurrencies = fiatCurrencies || [];
229
269
  if (countryCode) {
230
- currencyCode = ConstantsUtil.COUNTRY_CURRENCIES[countryCode];
270
+ currencyCode = state.countriesDefaults?.find(d => d.countryCode === countryCode)?.defaultCurrencyCode || 'USD';
231
271
  }
232
272
  const preferredCurrency = await StorageUtil.getOnRampPreferredFiatCurrency();
233
273
  const defaultCurrency = preferredCurrency || fiatCurrencies?.find(c => c.currencyCode === currencyCode) || fiatCurrencies?.[0] || undefined;
@@ -235,6 +275,7 @@ export const OnRampController = {
235
275
  this.setPaymentCurrency(defaultCurrency);
236
276
  }
237
277
  } catch (error) {
278
+ LogController.sendError(error, 'OnRampController.ts', 'fetchFiatCurrencies');
238
279
  state.error = {
239
280
  type: OnRampErrorType.FAILED_TO_LOAD_CURRENCIES,
240
281
  message: 'Failed to load fiat currencies'
@@ -254,36 +295,63 @@ export const OnRampController = {
254
295
  state.error = undefined;
255
296
  }
256
297
  },
257
- getQuotesDebounced: CoreHelperUtil.debounce(function () {
258
- OnRampController.getQuotes();
259
- }, 500),
260
298
  async getQuotes() {
261
- if (!state.paymentAmount || state.paymentAmount <= 0) {
299
+ if (!this.canGenerateQuote()) {
262
300
  this.clearQuotes();
263
301
  return;
264
302
  }
265
- state.quotesLoading = true;
266
- state.error = undefined;
267
303
  this.abortGetQuotes(false);
268
304
  quotesAbortController = new AbortController();
305
+ const currentSignal = quotesAbortController.signal;
269
306
  try {
307
+ if (!state.selectedCountry?.countryCode || !state.purchaseCurrency?.currencyCode || !state.paymentCurrency?.currencyCode || !ConnectionsController.state.activeAddress) {
308
+ throw new BlockchainOnRampError(OnRampErrorType.UNKNOWN, 'Invalid quote parameters');
309
+ }
310
+ state.quotesLoading = true;
311
+ state.selectedQuote = undefined;
312
+ state.selectedServiceProvider = undefined;
313
+ state.error = undefined;
314
+ const plainAddress = CoreHelperUtil.getPlainAddress(ConnectionsController.state.activeAddress);
315
+ if (!plainAddress) {
316
+ throw new Error('Invalid address');
317
+ }
270
318
  const body = {
271
- countryCode: state.selectedCountry?.countryCode,
272
- paymentMethodType: state.selectedPaymentMethod?.paymentMethod,
273
- destinationCurrencyCode: state.purchaseCurrency?.currencyCode,
319
+ countryCode: state.selectedCountry.countryCode,
320
+ destinationCurrencyCode: state.purchaseCurrency.currencyCode,
274
321
  sourceAmount: state.paymentAmount,
275
- sourceCurrencyCode: state.paymentCurrency?.currencyCode,
276
- walletAddress: AccountController.state.address
322
+ sourceCurrencyCode: state.paymentCurrency.currencyCode,
323
+ walletAddress: plainAddress,
324
+ excludeProviders: EXCLUDED_ONRAMP_PROVIDERS
277
325
  };
278
- const response = await BlockchainApiController.getOnRampQuotes(body, quotesAbortController.signal);
326
+ const response = await BlockchainApiController.getOnRampQuotes(body, currentSignal);
279
327
  if (!response || !response.length) {
280
- throw new Error('No quotes available');
328
+ throw new BlockchainOnRampError(OnRampErrorType.NO_VALID_QUOTES, 'No valid quotes');
281
329
  }
282
330
  const quotes = response.sort((a, b) => b.customerScore - a.customerScore);
283
331
  state.quotes = quotes;
284
- state.selectedQuote = quotes[0];
285
- state.selectedServiceProvider = state.serviceProviders.find(sp => sp.serviceProvider === quotes[0]?.serviceProvider);
332
+
333
+ //Replace payment method if it's not in the quotes
334
+ const isValidPaymentMethod = state.selectedPaymentMethod && quotes.some(quote => quote.paymentMethodType === state.selectedPaymentMethod?.paymentMethod);
335
+ if (!isValidPaymentMethod) {
336
+ const countryMethods = state.countriesDefaults?.find(d => d.countryCode === state.selectedCountry?.countryCode)?.defaultPaymentMethods || [];
337
+ const availableQuoteMethods = new Set(quotes.map(q => q.paymentMethodType));
338
+ let newPaymentMethodType;
339
+ for (const dpm of countryMethods) {
340
+ if (availableQuoteMethods.has(dpm)) {
341
+ newPaymentMethodType = dpm;
342
+ break;
343
+ }
344
+ }
345
+ if (newPaymentMethodType) {
346
+ state.selectedPaymentMethod = state.paymentMethods.find(m => m.paymentMethod === newPaymentMethodType) || state.paymentMethods.find(method => method.paymentMethod === quotes[0]?.paymentMethodType);
347
+ } else {
348
+ state.selectedPaymentMethod = state.paymentMethods.find(method => method.paymentMethod === quotes[0]?.paymentMethodType);
349
+ }
350
+ }
351
+ state.selectedQuote = quotes.find(quote => quote.paymentMethodType === state.selectedPaymentMethod?.paymentMethod);
352
+ state.selectedServiceProvider = state.serviceProviders.find(sp => sp.serviceProvider === state.selectedQuote?.serviceProvider);
286
353
  } catch (error) {
354
+ LogController.sendError(error, 'OnRampController.ts', 'getQuotes');
287
355
  if (error.name === 'AbortError') {
288
356
  // Do nothing, another request was made
289
357
  return;
@@ -298,11 +366,13 @@ export const OnRampController = {
298
366
  this.clearQuotes();
299
367
  state.error = mapErrorMessage(error?.code || 'UNKNOWN_ERROR');
300
368
  } finally {
301
- state.quotesLoading = false;
369
+ if (!currentSignal.aborted) {
370
+ state.quotesLoading = false;
371
+ }
302
372
  }
303
373
  },
304
374
  canGenerateQuote() {
305
- return !!(state.selectedCountry?.countryCode && state.selectedPaymentMethod?.paymentMethod && state.purchaseCurrency?.currencyCode && state.paymentAmount && state.paymentAmount > 0 && state.paymentCurrency?.currencyCode && state.selectedCountry && !state.loading && AccountController.state.address);
375
+ return !!(state.selectedCountry?.countryCode && state.selectedPaymentMethod?.paymentMethod && state.purchaseCurrency?.currencyCode && state.paymentAmount && state.paymentAmount > 0 && state.paymentCurrency?.currencyCode && state.selectedCountry && !state.loading && ConnectionsController.state.activeAddress);
306
376
  },
307
377
  async fetchFiatLimits() {
308
378
  try {
@@ -315,6 +385,7 @@ export const OnRampController = {
315
385
  }
316
386
  state.paymentCurrenciesLimits = limits;
317
387
  } catch (error) {
388
+ LogController.sendError(error, 'OnRampController.ts', 'fetchFiatLimits');
318
389
  state.error = {
319
390
  type: OnRampErrorType.FAILED_TO_LOAD_LIMITS,
320
391
  message: 'Failed to load fiat limits'
@@ -325,6 +396,9 @@ export const OnRampController = {
325
396
  async generateWidget({
326
397
  quote
327
398
  }) {
399
+ if (!ConnectionsController.state.activeAddress) {
400
+ throw new Error('No active address');
401
+ }
328
402
  const metadata = OptionsController.state.metadata;
329
403
  const eventProperties = {
330
404
  asset: quote.destinationCurrencyCode,
@@ -339,16 +413,21 @@ export const OnRampController = {
339
413
  if (!quote) {
340
414
  throw new Error('Invalid quote');
341
415
  }
342
- const widget = await BlockchainApiController.getOnRampWidget({
416
+ const plainAddress = CoreHelperUtil.getPlainAddress(ConnectionsController.state.activeAddress);
417
+ if (!plainAddress) {
418
+ throw new Error('Invalid address');
419
+ }
420
+ const body = {
343
421
  countryCode: quote.countryCode,
344
422
  destinationCurrencyCode: quote.destinationCurrencyCode,
345
423
  paymentMethodType: quote.paymentMethodType,
346
424
  serviceProvider: quote.serviceProvider,
347
425
  sourceAmount: quote.sourceAmount,
348
426
  sourceCurrencyCode: quote.sourceCurrencyCode,
349
- walletAddress: AccountController.state.address,
427
+ walletAddress: plainAddress,
350
428
  redirectUrl: metadata?.redirect?.universal ?? metadata?.redirect?.native
351
- });
429
+ };
430
+ const widget = await BlockchainApiController.getOnRampWidget(body);
352
431
  if (!widget || !widget.widgetUrl) {
353
432
  throw new Error('Invalid widget response');
354
433
  }
@@ -360,6 +439,9 @@ export const OnRampController = {
360
439
  state.widgetUrl = widget.widgetUrl;
361
440
  return widget;
362
441
  } catch (e) {
442
+ LogController.sendError(e, 'OnRampController.ts', 'generateWidget', {
443
+ quote
444
+ });
363
445
  EventsController.sendEvent({
364
446
  type: 'track',
365
447
  event: 'BUY_FAIL',
@@ -390,8 +472,9 @@ export const OnRampController = {
390
472
  try {
391
473
  await this.fetchCountries();
392
474
  await this.fetchServiceProviders();
393
- await Promise.all([this.fetchPaymentMethods(), this.fetchFiatLimits(), this.fetchCryptoCurrencies(), this.fetchFiatCurrencies()]);
475
+ await Promise.all([this.fetchCountriesDefaults(), this.fetchPaymentMethods(), this.fetchFiatLimits(), this.fetchCryptoCurrencies(), this.fetchFiatCurrencies()]);
394
476
  } catch (error) {
477
+ LogController.sendError(error, 'OnRampController.ts', 'loadOnRampData');
395
478
  if (!state.error) {
396
479
  state.error = {
397
480
  type: OnRampErrorType.FAILED_TO_LOAD,