@reown/appkit-core-react-native 0.0.0-fix-email-login-20241010173711 → 0.0.0-fix-token-balance-20241017200828

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 (141) hide show
  1. package/lib/commonjs/controllers/AccountController.js +25 -1
  2. package/lib/commonjs/controllers/AccountController.js.map +1 -1
  3. package/lib/commonjs/controllers/ApiController.js +3 -3
  4. package/lib/commonjs/controllers/ApiController.js.map +1 -1
  5. package/lib/commonjs/controllers/BlockchainApiController.js +84 -0
  6. package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
  7. package/lib/commonjs/controllers/ConnectionController.js +19 -0
  8. package/lib/commonjs/controllers/ConnectionController.js.map +1 -1
  9. package/lib/commonjs/controllers/EnsController.js +35 -0
  10. package/lib/commonjs/controllers/EnsController.js.map +1 -0
  11. package/lib/commonjs/controllers/EventsController.js +1 -15
  12. package/lib/commonjs/controllers/EventsController.js.map +1 -1
  13. package/lib/commonjs/controllers/ModalController.js +3 -1
  14. package/lib/commonjs/controllers/ModalController.js.map +1 -1
  15. package/lib/commonjs/controllers/NetworkController.js +3 -0
  16. package/lib/commonjs/controllers/NetworkController.js.map +1 -1
  17. package/lib/commonjs/controllers/OptionsController.js +1 -1
  18. package/lib/commonjs/controllers/OptionsController.js.map +1 -1
  19. package/lib/commonjs/controllers/RouterController.js +22 -1
  20. package/lib/commonjs/controllers/RouterController.js.map +1 -1
  21. package/lib/commonjs/controllers/SendController.js +176 -0
  22. package/lib/commonjs/controllers/SendController.js.map +1 -0
  23. package/lib/commonjs/controllers/SwapController.js +91 -0
  24. package/lib/commonjs/controllers/SwapController.js.map +1 -0
  25. package/lib/commonjs/controllers/TransactionsController.js +111 -0
  26. package/lib/commonjs/controllers/TransactionsController.js.map +1 -0
  27. package/lib/commonjs/index.js +35 -0
  28. package/lib/commonjs/index.js.map +1 -1
  29. package/lib/commonjs/utils/ApiUtil.js +18 -0
  30. package/lib/commonjs/utils/ApiUtil.js.map +1 -0
  31. package/lib/commonjs/utils/ConstantsUtil.js +2 -1
  32. package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
  33. package/lib/commonjs/utils/CoreHelperUtil.js +33 -0
  34. package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
  35. package/lib/commonjs/utils/FetchUtil.js.map +1 -1
  36. package/lib/commonjs/utils/SwapApiUtil.js +23 -0
  37. package/lib/commonjs/utils/SwapApiUtil.js.map +1 -0
  38. package/lib/commonjs/utils/SwapCalculationUtil.js +24 -0
  39. package/lib/commonjs/utils/SwapCalculationUtil.js.map +1 -0
  40. package/lib/commonjs/utils/TypeUtil.js +4 -0
  41. package/lib/module/controllers/AccountController.js +25 -1
  42. package/lib/module/controllers/AccountController.js.map +1 -1
  43. package/lib/module/controllers/ApiController.js +3 -3
  44. package/lib/module/controllers/ApiController.js.map +1 -1
  45. package/lib/module/controllers/BlockchainApiController.js +84 -0
  46. package/lib/module/controllers/BlockchainApiController.js.map +1 -1
  47. package/lib/module/controllers/ConnectionController.js +19 -0
  48. package/lib/module/controllers/ConnectionController.js.map +1 -1
  49. package/lib/module/controllers/EnsController.js +30 -0
  50. package/lib/module/controllers/EnsController.js.map +1 -0
  51. package/lib/module/controllers/EventsController.js +1 -15
  52. package/lib/module/controllers/EventsController.js.map +1 -1
  53. package/lib/module/controllers/ModalController.js +3 -1
  54. package/lib/module/controllers/ModalController.js.map +1 -1
  55. package/lib/module/controllers/NetworkController.js +3 -0
  56. package/lib/module/controllers/NetworkController.js.map +1 -1
  57. package/lib/module/controllers/OptionsController.js +1 -1
  58. package/lib/module/controllers/OptionsController.js.map +1 -1
  59. package/lib/module/controllers/RouterController.js +22 -1
  60. package/lib/module/controllers/RouterController.js.map +1 -1
  61. package/lib/module/controllers/SendController.js +171 -0
  62. package/lib/module/controllers/SendController.js.map +1 -0
  63. package/lib/module/controllers/SwapController.js +86 -0
  64. package/lib/module/controllers/SwapController.js.map +1 -0
  65. package/lib/module/controllers/TransactionsController.js +106 -0
  66. package/lib/module/controllers/TransactionsController.js.map +1 -0
  67. package/lib/module/index.js +6 -0
  68. package/lib/module/index.js.map +1 -1
  69. package/lib/module/utils/ApiUtil.js +12 -0
  70. package/lib/module/utils/ApiUtil.js.map +1 -0
  71. package/lib/module/utils/ConstantsUtil.js +2 -1
  72. package/lib/module/utils/ConstantsUtil.js.map +1 -1
  73. package/lib/module/utils/CoreHelperUtil.js +33 -0
  74. package/lib/module/utils/CoreHelperUtil.js.map +1 -1
  75. package/lib/module/utils/FetchUtil.js.map +1 -1
  76. package/lib/module/utils/SwapApiUtil.js +17 -0
  77. package/lib/module/utils/SwapApiUtil.js.map +1 -0
  78. package/lib/module/utils/SwapCalculationUtil.js +19 -0
  79. package/lib/module/utils/SwapCalculationUtil.js.map +1 -0
  80. package/lib/module/utils/TypeUtil.js +1 -1
  81. package/lib/typescript/controllers/AccountController.d.ts +4 -0
  82. package/lib/typescript/controllers/AccountController.d.ts.map +1 -1
  83. package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
  84. package/lib/typescript/controllers/BlockchainApiController.d.ts +6 -1
  85. package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
  86. package/lib/typescript/controllers/ConnectionController.d.ts +13 -1
  87. package/lib/typescript/controllers/ConnectionController.d.ts.map +1 -1
  88. package/lib/typescript/controllers/EnsController.d.ts +10 -0
  89. package/lib/typescript/controllers/EnsController.d.ts.map +1 -0
  90. package/lib/typescript/controllers/EventsController.d.ts +0 -6
  91. package/lib/typescript/controllers/EventsController.d.ts.map +1 -1
  92. package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
  93. package/lib/typescript/controllers/NetworkController.d.ts +1 -0
  94. package/lib/typescript/controllers/NetworkController.d.ts.map +1 -1
  95. package/lib/typescript/controllers/RouterController.d.ts +13 -1
  96. package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
  97. package/lib/typescript/controllers/SendController.d.ts +41 -0
  98. package/lib/typescript/controllers/SendController.d.ts.map +1 -0
  99. package/lib/typescript/controllers/SwapController.d.ts +29 -0
  100. package/lib/typescript/controllers/SwapController.d.ts.map +1 -0
  101. package/lib/typescript/controllers/TransactionsController.d.ts +21 -0
  102. package/lib/typescript/controllers/TransactionsController.d.ts.map +1 -0
  103. package/lib/typescript/index.d.ts +18 -26
  104. package/lib/typescript/index.d.ts.map +1 -1
  105. package/lib/typescript/utils/ApiUtil.d.ts +5 -0
  106. package/lib/typescript/utils/ApiUtil.d.ts.map +1 -0
  107. package/lib/typescript/utils/ConstantsUtil.d.ts +1 -0
  108. package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
  109. package/lib/typescript/utils/CoreHelperUtil.d.ts +6 -0
  110. package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
  111. package/lib/typescript/utils/FetchUtil.d.ts +3 -0
  112. package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
  113. package/lib/typescript/utils/SwapApiUtil.d.ts +4 -0
  114. package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -0
  115. package/lib/typescript/utils/SwapCalculationUtil.d.ts +5 -0
  116. package/lib/typescript/utils/SwapCalculationUtil.d.ts.map +1 -0
  117. package/lib/typescript/utils/TypeUtil.d.ts +137 -0
  118. package/lib/typescript/utils/TypeUtil.d.ts.map +1 -1
  119. package/package.json +5 -5
  120. package/readme.md +1 -1
  121. package/src/controllers/AccountController.ts +35 -1
  122. package/src/controllers/ApiController.ts +3 -7
  123. package/src/controllers/BlockchainApiController.ts +88 -1
  124. package/src/controllers/ConnectionController.ts +37 -1
  125. package/src/controllers/EnsController.ts +39 -0
  126. package/src/controllers/EventsController.ts +1 -13
  127. package/src/controllers/ModalController.ts +3 -1
  128. package/src/controllers/NetworkController.ts +6 -0
  129. package/src/controllers/OptionsController.ts +1 -1
  130. package/src/controllers/RouterController.ts +52 -10
  131. package/src/controllers/SendController.ts +234 -0
  132. package/src/controllers/SwapController.ts +108 -0
  133. package/src/controllers/TransactionsController.ts +141 -0
  134. package/src/index.ts +41 -30
  135. package/src/utils/ApiUtil.ts +18 -0
  136. package/src/utils/ConstantsUtil.ts +3 -1
  137. package/src/utils/CoreHelperUtil.ts +38 -1
  138. package/src/utils/FetchUtil.ts +4 -0
  139. package/src/utils/SwapApiUtil.ts +19 -0
  140. package/src/utils/SwapCalculationUtil.ts +21 -0
  141. package/src/utils/TypeUtil.ts +169 -0
@@ -7,5 +7,7 @@ export const ConstantsUtil = {
7
7
 
8
8
  EMAIL_REGEX: /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+$/,
9
9
 
10
- LINKING_ERROR: 'LINKING_ERROR'
10
+ LINKING_ERROR: 'LINKING_ERROR',
11
+
12
+ NATIVE_TOKEN_ADDRESS: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
11
13
  };
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable no-bitwise */
2
2
 
3
3
  import { Linking, Platform } from 'react-native';
4
- import { ConstantsUtil as CommonConstants } from '@reown/appkit-common-react-native';
4
+ import { ConstantsUtil as CommonConstants, type Balance } from '@reown/appkit-common-react-native';
5
5
 
6
6
  import { ConstantsUtil } from './ConstantsUtil';
7
7
  import type { CaipAddress, DataWallet, LinkingRecord } from './TypeUtil';
@@ -157,6 +157,27 @@ export const CoreHelperUtil = {
157
157
  return formattedBalance ? `${formattedBalance} ${symbol}` : `0.000 ${symbol || ''}`;
158
158
  },
159
159
 
160
+ isAddress(address: string, chain = 'eip155'): boolean {
161
+ switch (chain) {
162
+ case 'eip155':
163
+ if (!/^(?:0x)?[0-9a-f]{40}$/iu.test(address)) {
164
+ return false;
165
+ } else if (
166
+ /^(?:0x)?[0-9a-f]{40}$/iu.test(address) ||
167
+ /^(?:0x)?[0-9A-F]{40}$/iu.test(address)
168
+ ) {
169
+ return true;
170
+ }
171
+
172
+ return false;
173
+ case 'solana':
174
+ return /[1-9A-HJ-NP-Za-km-z]{32,44}$/iu.test(address);
175
+
176
+ default:
177
+ return false;
178
+ }
179
+ },
180
+
160
181
  getApiUrl() {
161
182
  return CommonConstants.API_URL;
162
183
  },
@@ -245,5 +266,21 @@ export const CoreHelperUtil = {
245
266
  .catch(reason => ({ status: 'rejected', reason }))
246
267
  )
247
268
  );
269
+ },
270
+
271
+ calculateAndFormatBalance(array?: Balance[]) {
272
+ if (!array?.length) {
273
+ return { dollars: '0', pennies: '00' };
274
+ }
275
+
276
+ let sum = 0;
277
+ for (const item of array) {
278
+ sum += item.value ?? 0;
279
+ }
280
+
281
+ const roundedNumber = sum.toFixed(2);
282
+ const [dollars, pennies] = roundedNumber.split('.');
283
+
284
+ return { dollars, pennies };
248
285
  }
249
286
  };
@@ -1,3 +1,5 @@
1
+ import type { RequestCache } from './TypeUtil';
2
+
1
3
  // -- Types ----------------------------------------------------------------------
2
4
  interface Options {
3
5
  baseUrl: string;
@@ -8,6 +10,8 @@ interface RequestArguments {
8
10
  path: string;
9
11
  headers?: HeadersInit_;
10
12
  params?: Record<string, string | undefined>;
13
+ cache?: RequestCache;
14
+ signal?: AbortSignal;
11
15
  }
12
16
 
13
17
  interface PostArguments extends RequestArguments {
@@ -0,0 +1,19 @@
1
+ import { BlockchainApiController } from '../controllers/BlockchainApiController';
2
+ import { OptionsController } from '../controllers/OptionsController';
3
+ import { NetworkController } from '../controllers/NetworkController';
4
+
5
+ export const SwapApiUtil = {
6
+ async fetchGasPrice() {
7
+ const projectId = OptionsController.state.projectId;
8
+ const caipNetwork = NetworkController.state.caipNetwork;
9
+
10
+ if (!caipNetwork) {
11
+ return null;
12
+ }
13
+
14
+ return await BlockchainApiController.fetchGasPrice({
15
+ projectId,
16
+ chainId: caipNetwork.id
17
+ });
18
+ }
19
+ };
@@ -0,0 +1,21 @@
1
+ // -- Types --------------------------------------------- //
2
+
3
+ import { NumberUtil } from '@reown/appkit-common-react-native';
4
+
5
+ // -- Util ---------------------------------------- //
6
+ export const SwapCalculationUtil = {
7
+ getGasPriceInEther(gas: bigint, gasPrice: bigint) {
8
+ const totalGasCostInWei = gasPrice * gas;
9
+ const totalGasCostInEther = Number(totalGasCostInWei) / 1e18;
10
+
11
+ return totalGasCostInEther;
12
+ },
13
+
14
+ getGasPriceInUSD(networkPrice: string, gas: bigint, gasPrice: bigint) {
15
+ const totalGasCostInEther = SwapCalculationUtil.getGasPriceInEther(gas, gasPrice);
16
+ const networkPriceInUSD = NumberUtil.bigNumber(networkPrice);
17
+ const gasCostInUSD = networkPriceInUSD.multipliedBy(totalGasCostInEther);
18
+
19
+ return gasCostInUSD.toNumber();
20
+ }
21
+ };
@@ -1,3 +1,9 @@
1
+ import type { Balance, Transaction } from '@reown/appkit-common-react-native';
2
+
3
+ export interface BaseError {
4
+ message?: string;
5
+ }
6
+
1
7
  export type CaipAddress = `${string}:${string}:${string}`;
2
8
 
3
9
  export type CaipNetworkId = `${string}:${string}`;
@@ -98,6 +104,16 @@ export interface ApiGetAnalyticsConfigResponse {
98
104
  isAnalyticsEnabled: boolean;
99
105
  }
100
106
 
107
+ export type RequestCache =
108
+ | 'default'
109
+ | 'force-cache'
110
+ | 'no-cache'
111
+ | 'no-store'
112
+ | 'only-if-cached'
113
+ | 'reload';
114
+
115
+ // -- ThemeController Types ---------------------------------------------------
116
+
101
117
  export type ThemeMode = 'dark' | 'light';
102
118
 
103
119
  export interface ThemeVariables {
@@ -114,6 +130,74 @@ export interface BlockchainApiIdentityResponse {
114
130
  name: string;
115
131
  }
116
132
 
133
+ export interface BlockchainApiBalanceResponse {
134
+ balances: Balance[];
135
+ }
136
+
137
+ export interface BlockchainApiTransactionsRequest {
138
+ account: string;
139
+ projectId: string;
140
+ cursor?: string;
141
+ onramp?: 'coinbase';
142
+ signal?: AbortSignal;
143
+ cache?: RequestCache;
144
+ }
145
+
146
+ export interface BlockchainApiTransactionsResponse {
147
+ data: Transaction[];
148
+ next: string | null;
149
+ }
150
+
151
+ export interface BlockchainApiTokenPriceRequest {
152
+ projectId: string;
153
+ currency?: 'usd' | 'eur' | 'gbp' | 'aud' | 'cad' | 'inr' | 'jpy' | 'btc' | 'eth';
154
+ addresses: string[];
155
+ }
156
+
157
+ export interface BlockchainApiTokenPriceResponse {
158
+ fungibles: {
159
+ name: string;
160
+ symbol: string;
161
+ iconUrl: string;
162
+ price: number;
163
+ }[];
164
+ }
165
+
166
+ export interface BlockchainApiGasPriceRequest {
167
+ projectId: string;
168
+ chainId: string;
169
+ }
170
+
171
+ export interface BlockchainApiGasPriceResponse {
172
+ standard: string;
173
+ fast: string;
174
+ instant: string;
175
+ }
176
+
177
+ export interface BlockchainApiEnsError extends BaseError {
178
+ status: string;
179
+ reasons: { name: string; description: string }[];
180
+ }
181
+
182
+ export type ReownName = `${string}.reown.id` | `${string}.wcn.id`;
183
+
184
+ export interface BlockchainApiLookupEnsName {
185
+ name: ReownName;
186
+ registered: number;
187
+ updated: number;
188
+ addresses: Record<
189
+ string,
190
+ {
191
+ address: string;
192
+ created: string;
193
+ }
194
+ >;
195
+ attributes: {
196
+ avatar?: string;
197
+ bio?: string;
198
+ }[];
199
+ }
200
+
117
201
  // -- OptionsController Types ---------------------------------------------------
118
202
  export interface Token {
119
203
  address: string;
@@ -284,8 +368,93 @@ export type Event =
284
368
  | {
285
369
  type: 'track';
286
370
  event: 'SIWE_AUTH_ERROR';
371
+ }
372
+ | {
373
+ type: 'track';
374
+ event: 'CLICK_TRANSACTIONS';
375
+ properties: {
376
+ isSmartAccount: boolean;
377
+ };
378
+ }
379
+ | {
380
+ type: 'track';
381
+ event: 'ERROR_FETCH_TRANSACTIONS';
382
+ properties: {
383
+ address: string;
384
+ projectId: string;
385
+ cursor: string | undefined;
386
+ isSmartAccount: boolean;
387
+ };
388
+ }
389
+ | {
390
+ type: 'track';
391
+ event: 'LOAD_MORE_TRANSACTIONS';
392
+ properties: {
393
+ address: string | undefined;
394
+ projectId: string;
395
+ cursor: string | undefined;
396
+ isSmartAccount: boolean;
397
+ };
398
+ }
399
+ | {
400
+ type: 'track';
401
+ event: 'OPEN_SEND';
402
+ properties: {
403
+ isSmartAccount: boolean;
404
+ network: string;
405
+ };
406
+ }
407
+ | {
408
+ type: 'track';
409
+ event: 'SEND_INITIATED';
410
+ properties: {
411
+ isSmartAccount: boolean;
412
+ network: string;
413
+ token: string;
414
+ amount: number;
415
+ };
416
+ }
417
+ | {
418
+ type: 'track';
419
+ event: 'SEND_SUCCESS';
420
+ properties: {
421
+ isSmartAccount: boolean;
422
+ network: string;
423
+ token: string;
424
+ amount: number;
425
+ };
426
+ }
427
+ | {
428
+ type: 'track';
429
+ event: 'SEND_ERROR';
430
+ properties: {
431
+ isSmartAccount: boolean;
432
+ network: string;
433
+ token: string;
434
+ amount: number;
435
+ };
287
436
  };
288
437
 
438
+ // -- Send Controller Types -------------------------------------
439
+
440
+ export interface SendTransactionArgs {
441
+ to: `0x${string}`;
442
+ data: `0x${string}`;
443
+ value: bigint;
444
+ gas?: bigint;
445
+ gasPrice: bigint;
446
+ address: `0x${string}`;
447
+ }
448
+
449
+ export interface WriteContractArgs {
450
+ receiverAddress: `0x${string}`;
451
+ tokenAmount: bigint;
452
+ tokenAddress: `0x${string}`;
453
+ fromAddress: `0x${string}`;
454
+ method: 'send' | 'transfer' | 'call';
455
+ abi: any;
456
+ }
457
+
289
458
  // -- Email Types ------------------------------------------------
290
459
  /**
291
460
  * Matches type defined for packages/email/src/AppKitFrameProvider.ts