@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.
- package/lib/commonjs/controllers/ApiController.js +148 -82
- package/lib/commonjs/controllers/ApiController.js.map +1 -1
- package/lib/commonjs/controllers/AssetController.js +0 -4
- package/lib/commonjs/controllers/AssetController.js.map +1 -1
- package/lib/commonjs/controllers/BlockchainApiController.js +127 -134
- package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectionsController.js +280 -60
- package/lib/commonjs/controllers/ConnectionsController.js.map +1 -1
- package/lib/commonjs/controllers/EnsController.js +6 -4
- package/lib/commonjs/controllers/EnsController.js.map +1 -1
- package/lib/commonjs/controllers/EventsController.js +55 -5
- package/lib/commonjs/controllers/EventsController.js.map +1 -1
- package/lib/commonjs/controllers/LogController.js +188 -0
- package/lib/commonjs/controllers/LogController.js.map +1 -0
- package/lib/commonjs/controllers/ModalController.js +9 -7
- package/lib/commonjs/controllers/ModalController.js.map +1 -1
- package/lib/commonjs/controllers/OnRampController.js +134 -53
- package/lib/commonjs/controllers/OnRampController.js.map +1 -1
- package/lib/commonjs/controllers/OptionsController.js +20 -7
- package/lib/commonjs/controllers/OptionsController.js.map +1 -1
- package/lib/commonjs/controllers/PublicStateController.js.map +1 -1
- package/lib/commonjs/controllers/RouterController.js +7 -22
- package/lib/commonjs/controllers/RouterController.js.map +1 -1
- package/lib/commonjs/controllers/SendController.js +115 -99
- package/lib/commonjs/controllers/SendController.js.map +1 -1
- package/lib/commonjs/controllers/SnackController.js +29 -5
- package/lib/commonjs/controllers/SnackController.js.map +1 -1
- package/lib/commonjs/controllers/SwapController.js +119 -119
- package/lib/commonjs/controllers/SwapController.js.map +1 -1
- package/lib/commonjs/controllers/ThemeController.js +5 -0
- package/lib/commonjs/controllers/ThemeController.js.map +1 -1
- package/lib/commonjs/controllers/TransactionsController.js +25 -19
- package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
- package/lib/commonjs/controllers/WcController.js +73 -0
- package/lib/commonjs/controllers/WcController.js.map +1 -0
- package/lib/commonjs/features/reown-authentication/ReownAuthentication.js +272 -0
- package/lib/commonjs/features/reown-authentication/ReownAuthentication.js.map +1 -0
- package/lib/commonjs/features/reown-authentication/ReownAuthenticationMessenger.js +48 -0
- package/lib/commonjs/features/reown-authentication/ReownAuthenticationMessenger.js.map +1 -0
- package/lib/commonjs/features/reown-authentication/index.js +28 -0
- package/lib/commonjs/features/reown-authentication/index.js.map +1 -0
- package/lib/commonjs/index.js +30 -37
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/utils/ApiUtil.js +1 -1
- package/lib/commonjs/utils/ApiUtil.js.map +1 -1
- package/lib/commonjs/utils/AssetUtil.js +8 -17
- package/lib/commonjs/utils/AssetUtil.js.map +1 -1
- package/lib/commonjs/utils/ConstantsUtil.js +14 -431
- package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
- package/lib/commonjs/utils/CoreHelperUtil.js +33 -10
- package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
- package/lib/commonjs/utils/EventUtil.js.map +1 -1
- package/lib/commonjs/utils/FetchUtil.js +41 -12
- package/lib/commonjs/utils/FetchUtil.js.map +1 -1
- package/lib/commonjs/utils/LogUtils.js +131 -0
- package/lib/commonjs/utils/LogUtils.js.map +1 -0
- package/lib/commonjs/utils/StorageUtil.js +119 -172
- package/lib/commonjs/utils/StorageUtil.js.map +1 -1
- package/lib/commonjs/utils/SwapApiUtil.js +2 -17
- package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
- package/lib/commonjs/utils/SwapCalculationUtil.js.map +1 -1
- package/lib/commonjs/utils/WalletUtil.js +23 -0
- package/lib/commonjs/utils/WalletUtil.js.map +1 -0
- package/lib/module/controllers/ApiController.js +150 -82
- package/lib/module/controllers/ApiController.js.map +1 -1
- package/lib/module/controllers/AssetController.js +2 -4
- package/lib/module/controllers/AssetController.js.map +1 -1
- package/lib/module/controllers/BlockchainApiController.js +128 -133
- package/lib/module/controllers/BlockchainApiController.js.map +1 -1
- package/lib/module/controllers/ConnectionsController.js +282 -60
- package/lib/module/controllers/ConnectionsController.js.map +1 -1
- package/lib/module/controllers/EnsController.js +6 -2
- package/lib/module/controllers/EnsController.js.map +1 -1
- package/lib/module/controllers/EventsController.js +54 -2
- package/lib/module/controllers/EventsController.js.map +1 -1
- package/lib/module/controllers/LogController.js +185 -0
- package/lib/module/controllers/LogController.js.map +1 -0
- package/lib/module/controllers/ModalController.js +11 -7
- package/lib/module/controllers/ModalController.js.map +1 -1
- package/lib/module/controllers/OnRampController.js +135 -52
- package/lib/module/controllers/OnRampController.js.map +1 -1
- package/lib/module/controllers/OptionsController.js +22 -7
- package/lib/module/controllers/OptionsController.js.map +1 -1
- package/lib/module/controllers/PublicStateController.js +2 -0
- package/lib/module/controllers/PublicStateController.js.map +1 -1
- package/lib/module/controllers/RouterController.js +9 -22
- package/lib/module/controllers/RouterController.js.map +1 -1
- package/lib/module/controllers/SendController.js +114 -96
- package/lib/module/controllers/SendController.js.map +1 -1
- package/lib/module/controllers/SnackController.js +31 -5
- package/lib/module/controllers/SnackController.js.map +1 -1
- package/lib/module/controllers/SwapController.js +121 -119
- package/lib/module/controllers/SwapController.js.map +1 -1
- package/lib/module/controllers/ThemeController.js +7 -0
- package/lib/module/controllers/ThemeController.js.map +1 -1
- package/lib/module/controllers/TransactionsController.js +25 -17
- package/lib/module/controllers/TransactionsController.js.map +1 -1
- package/lib/module/controllers/WcController.js +70 -0
- package/lib/module/controllers/WcController.js.map +1 -0
- package/lib/module/features/reown-authentication/ReownAuthentication.js +268 -0
- package/lib/module/features/reown-authentication/ReownAuthentication.js.map +1 -0
- package/lib/module/features/reown-authentication/ReownAuthenticationMessenger.js +43 -0
- package/lib/module/features/reown-authentication/ReownAuthenticationMessenger.js.map +1 -0
- package/lib/module/features/reown-authentication/index.js +5 -0
- package/lib/module/features/reown-authentication/index.js.map +1 -0
- package/lib/module/index.js +12 -7
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/ApiUtil.js +3 -1
- package/lib/module/utils/ApiUtil.js.map +1 -1
- package/lib/module/utils/AssetUtil.js +10 -17
- package/lib/module/utils/AssetUtil.js.map +1 -1
- package/lib/module/utils/ConstantsUtil.js +16 -431
- package/lib/module/utils/ConstantsUtil.js.map +1 -1
- package/lib/module/utils/CoreHelperUtil.js +35 -8
- package/lib/module/utils/CoreHelperUtil.js.map +1 -1
- package/lib/module/utils/EventUtil.js +2 -0
- package/lib/module/utils/EventUtil.js.map +1 -1
- package/lib/module/utils/FetchUtil.js +44 -12
- package/lib/module/utils/FetchUtil.js.map +1 -1
- package/lib/module/utils/LogUtils.js +121 -0
- package/lib/module/utils/LogUtils.js.map +1 -0
- package/lib/module/utils/StorageUtil.js +122 -172
- package/lib/module/utils/StorageUtil.js.map +1 -1
- package/lib/module/utils/SwapApiUtil.js +4 -17
- package/lib/module/utils/SwapApiUtil.js.map +1 -1
- package/lib/module/utils/SwapCalculationUtil.js +3 -0
- package/lib/module/utils/SwapCalculationUtil.js.map +1 -1
- package/lib/module/utils/WalletUtil.js +19 -0
- package/lib/module/utils/WalletUtil.js.map +1 -0
- package/lib/typescript/controllers/ApiController.d.ts +8 -7
- package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/AssetController.d.ts +0 -2
- package/lib/typescript/controllers/AssetController.d.ts.map +1 -1
- package/lib/typescript/controllers/BlockchainApiController.d.ts +21 -13
- package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectionsController.d.ts +22 -18
- package/lib/typescript/controllers/ConnectionsController.d.ts.map +1 -1
- package/lib/typescript/controllers/EnsController.d.ts +1 -1
- package/lib/typescript/controllers/EnsController.d.ts.map +1 -1
- package/lib/typescript/controllers/EventsController.d.ts +13 -1
- package/lib/typescript/controllers/EventsController.d.ts.map +1 -1
- package/lib/typescript/controllers/LogController.d.ts +65 -0
- package/lib/typescript/controllers/LogController.d.ts.map +1 -0
- package/lib/typescript/controllers/ModalController.d.ts +1 -1
- package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
- package/lib/typescript/controllers/OnRampController.d.ts +4 -3
- package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
- package/lib/typescript/controllers/OptionsController.d.ts +8 -6
- package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
- package/lib/typescript/controllers/RouterController.d.ts +6 -21
- package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
- package/lib/typescript/controllers/SendController.d.ts +5 -7
- package/lib/typescript/controllers/SendController.d.ts.map +1 -1
- package/lib/typescript/controllers/SnackController.d.ts +3 -3
- package/lib/typescript/controllers/SnackController.d.ts.map +1 -1
- package/lib/typescript/controllers/SwapController.d.ts +11 -11
- package/lib/typescript/controllers/SwapController.d.ts.map +1 -1
- package/lib/typescript/controllers/ThemeController.d.ts +2 -0
- package/lib/typescript/controllers/ThemeController.d.ts.map +1 -1
- package/lib/typescript/controllers/TransactionsController.d.ts +3 -3
- package/lib/typescript/controllers/TransactionsController.d.ts.map +1 -1
- package/lib/typescript/controllers/WcController.d.ts +27 -0
- package/lib/typescript/controllers/WcController.d.ts.map +1 -0
- package/lib/typescript/features/reown-authentication/ReownAuthentication.d.ts +174 -0
- package/lib/typescript/features/reown-authentication/ReownAuthentication.d.ts.map +1 -0
- package/lib/typescript/features/reown-authentication/ReownAuthenticationMessenger.d.ts +16 -0
- package/lib/typescript/features/reown-authentication/ReownAuthenticationMessenger.d.ts.map +1 -0
- package/lib/typescript/features/reown-authentication/index.d.ts +3 -0
- package/lib/typescript/features/reown-authentication/index.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +6 -8
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/ApiUtil.d.ts +1 -1
- package/lib/typescript/utils/AssetUtil.d.ts +3 -4
- package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
- package/lib/typescript/utils/ConstantsUtil.d.ts +7 -416
- package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
- package/lib/typescript/utils/CoreHelperUtil.d.ts +8 -6
- package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
- package/lib/typescript/utils/EventUtil.d.ts +1 -1
- package/lib/typescript/utils/EventUtil.d.ts.map +1 -1
- package/lib/typescript/utils/FetchUtil.d.ts +3 -3
- package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
- package/lib/typescript/utils/LogUtils.d.ts +15 -0
- package/lib/typescript/utils/LogUtils.d.ts.map +1 -0
- package/lib/typescript/utils/StorageUtil.d.ts +8 -19
- package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
- package/lib/typescript/utils/SwapApiUtil.d.ts +3 -4
- package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
- package/lib/typescript/utils/SwapCalculationUtil.d.ts +1 -1
- package/lib/typescript/utils/SwapCalculationUtil.d.ts.map +1 -1
- package/lib/typescript/utils/WalletUtil.d.ts +5 -0
- package/lib/typescript/utils/WalletUtil.d.ts.map +1 -0
- package/package.json +12 -25
- package/src/controllers/ApiController.ts +158 -80
- package/src/controllers/AssetController.ts +0 -6
- package/src/controllers/BlockchainApiController.ts +109 -144
- package/src/controllers/ConnectionsController.ts +372 -88
- package/src/controllers/EnsController.ts +5 -3
- package/src/controllers/EventsController.ts +74 -3
- package/src/controllers/LogController.ts +250 -0
- package/src/controllers/ModalController.ts +11 -9
- package/src/controllers/OnRampController.ts +195 -82
- package/src/controllers/OptionsController.ts +40 -13
- package/src/controllers/RouterController.ts +20 -58
- package/src/controllers/SendController.ts +148 -112
- package/src/controllers/SnackController.ts +31 -5
- package/src/controllers/SwapController.ts +140 -148
- package/src/controllers/ThemeController.ts +7 -0
- package/src/controllers/TransactionsController.ts +26 -18
- package/src/controllers/WcController.ts +93 -0
- package/src/features/reown-authentication/ReownAuthentication.ts +475 -0
- package/src/features/reown-authentication/ReownAuthenticationMessenger.ts +80 -0
- package/src/features/reown-authentication/index.ts +2 -0
- package/src/index.ts +15 -22
- package/src/utils/ApiUtil.ts +1 -1
- package/src/utils/AssetUtil.ts +9 -20
- package/src/utils/ConstantsUtil.ts +16 -435
- package/src/utils/CoreHelperUtil.ts +62 -11
- package/src/utils/EventUtil.ts +1 -1
- package/src/utils/FetchUtil.ts +50 -14
- package/src/utils/LogUtils.ts +179 -0
- package/src/utils/StorageUtil.ts +171 -199
- package/src/utils/SwapApiUtil.ts +18 -37
- package/src/utils/SwapCalculationUtil.ts +1 -2
- package/src/utils/WalletUtil.ts +14 -0
- package/lib/commonjs/controllers/AccountController.js +0 -93
- package/lib/commonjs/controllers/AccountController.js.map +0 -1
- package/lib/commonjs/controllers/ConnectionController.js +0 -132
- package/lib/commonjs/controllers/ConnectionController.js.map +0 -1
- package/lib/commonjs/controllers/ConnectorController.js +0 -50
- package/lib/commonjs/controllers/ConnectorController.js.map +0 -1
- package/lib/commonjs/controllers/NetworkController.js +0 -90
- package/lib/commonjs/controllers/NetworkController.js.map +0 -1
- package/lib/commonjs/controllers/WebviewController.js +0 -52
- package/lib/commonjs/controllers/WebviewController.js.map +0 -1
- package/lib/commonjs/utils/NetworkUtil.js +0 -46
- package/lib/commonjs/utils/NetworkUtil.js.map +0 -1
- package/lib/commonjs/utils/RouterUtil.js +0 -25
- package/lib/commonjs/utils/RouterUtil.js.map +0 -1
- package/lib/commonjs/utils/TypeUtil.js +0 -6
- package/lib/commonjs/utils/TypeUtil.js.map +0 -1
- package/lib/module/controllers/AccountController.js +0 -88
- package/lib/module/controllers/AccountController.js.map +0 -1
- package/lib/module/controllers/ConnectionController.js +0 -127
- package/lib/module/controllers/ConnectionController.js.map +0 -1
- package/lib/module/controllers/ConnectorController.js +0 -45
- package/lib/module/controllers/ConnectorController.js.map +0 -1
- package/lib/module/controllers/NetworkController.js +0 -85
- package/lib/module/controllers/NetworkController.js.map +0 -1
- package/lib/module/controllers/WebviewController.js +0 -47
- package/lib/module/controllers/WebviewController.js.map +0 -1
- package/lib/module/utils/NetworkUtil.js +0 -40
- package/lib/module/utils/NetworkUtil.js.map +0 -1
- package/lib/module/utils/RouterUtil.js +0 -19
- package/lib/module/utils/RouterUtil.js.map +0 -1
- package/lib/module/utils/TypeUtil.js +0 -2
- package/lib/module/utils/TypeUtil.js.map +0 -1
- package/lib/typescript/controllers/AccountController.d.ts +0 -33
- package/lib/typescript/controllers/AccountController.d.ts.map +0 -1
- package/lib/typescript/controllers/ConnectionController.d.ts +0 -68
- package/lib/typescript/controllers/ConnectionController.d.ts.map +0 -1
- package/lib/typescript/controllers/ConnectorController.d.ts +0 -18
- package/lib/typescript/controllers/ConnectorController.d.ts.map +0 -1
- package/lib/typescript/controllers/NetworkController.d.ts +0 -34
- package/lib/typescript/controllers/NetworkController.d.ts.map +0 -1
- package/lib/typescript/controllers/WebviewController.d.ts +0 -21
- package/lib/typescript/controllers/WebviewController.d.ts.map +0 -1
- package/lib/typescript/utils/NetworkUtil.d.ts +0 -8
- package/lib/typescript/utils/NetworkUtil.d.ts.map +0 -1
- package/lib/typescript/utils/RouterUtil.d.ts +0 -5
- package/lib/typescript/utils/RouterUtil.d.ts.map +0 -1
- package/lib/typescript/utils/TypeUtil.d.ts +0 -817
- package/lib/typescript/utils/TypeUtil.d.ts.map +0 -1
- package/src/controllers/AccountController.ts +0 -128
- package/src/controllers/ConnectionController.ts +0 -208
- package/src/controllers/ConnectorController.ts +0 -64
- package/src/controllers/NetworkController.ts +0 -120
- package/src/controllers/WebviewController.ts +0 -63
- package/src/utils/NetworkUtil.ts +0 -33
- package/src/utils/RouterUtil.ts +0 -21
- 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 {
|
|
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
|
-
|
|
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
|
-
|
|
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 } =
|
|
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:
|
|
198
|
+
isAuthConnector: !!connection?.properties?.provider
|
|
199
199
|
};
|
|
200
200
|
},
|
|
201
201
|
|
|
202
202
|
switchTokens() {
|
|
203
|
-
if (state.
|
|
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
|
-
|
|
229
|
+
try {
|
|
230
|
+
const { networkAddress } = this.getParams();
|
|
246
231
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
232
|
+
state.loadingTokens = true;
|
|
233
|
+
await this.getTokenList();
|
|
234
|
+
await this.getNetworkTokenPrice();
|
|
235
|
+
await this.getMyTokensWithBalance();
|
|
250
236
|
|
|
251
|
-
|
|
237
|
+
const networkToken = state.tokens?.find(token => token.address === networkAddress);
|
|
252
238
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
239
|
+
if (networkToken) {
|
|
240
|
+
state.networkTokenSymbol = networkToken.symbol;
|
|
241
|
+
}
|
|
256
242
|
|
|
257
|
-
|
|
258
|
-
state.
|
|
259
|
-
|
|
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
|
-
|
|
262
|
-
|
|
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?:
|
|
289
|
-
|
|
290
|
-
|
|
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(
|
|
292
|
+
this.setBalances(swapBalances);
|
|
296
293
|
},
|
|
297
294
|
|
|
298
|
-
getFilteredPopularTokens() {
|
|
299
|
-
|
|
300
|
-
|
|
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
|
|
326
|
-
|
|
327
|
-
|
|
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
|
-
|
|
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:
|
|
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,
|
|
698
|
-
|
|
671
|
+
const { fromAddress, network } = this.getParams();
|
|
699
672
|
state.loadingApprovalTransaction = true;
|
|
700
|
-
|
|
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
|
-
|
|
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,
|
|
704
|
+
const { fromAddress, isAuthConnector, network } = this.getParams();
|
|
741
705
|
|
|
742
706
|
state.loadingTransaction = true;
|
|
743
707
|
|
|
744
|
-
const
|
|
745
|
-
|
|
746
|
-
|
|
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].
|
|
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
|
-
|
|
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:
|
|
740
|
+
isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
|
|
788
741
|
}
|
|
789
742
|
});
|
|
790
|
-
|
|
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
|
-
|
|
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:
|
|
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 (
|
|
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
|
-
|
|
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
|
|
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
|
|
38
|
-
|
|
37
|
+
async fetchTransactions(accountAddress: CaipAddress, reset?: boolean) {
|
|
38
|
+
try {
|
|
39
|
+
const { projectId } = OptionsController.state;
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
if (!projectId || !accountAddress) {
|
|
42
|
+
throw new Error("Transactions can't be fetched without a projectId and an accountAddress");
|
|
43
|
+
}
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
state.loading = true;
|
|
45
46
|
|
|
46
|
-
|
|
47
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
144
|
+
resetState() {
|
|
137
145
|
state.transactions = [];
|
|
138
146
|
state.loading = false;
|
|
139
147
|
state.empty = false;
|