@reown/appkit-core-react-native 2.0.0-alpha.0 → 2.0.0-alpha.2
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 +16 -5
- package/lib/commonjs/controllers/ApiController.js.map +1 -1
- package/lib/commonjs/controllers/AssetController.js.map +1 -1
- package/lib/commonjs/controllers/BlockchainApiController.js +103 -111
- package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectionController.js +1 -10
- package/lib/commonjs/controllers/ConnectionController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectionsController.js +313 -52
- package/lib/commonjs/controllers/ConnectionsController.js.map +1 -1
- package/lib/commonjs/controllers/EnsController.js +4 -4
- package/lib/commonjs/controllers/EnsController.js.map +1 -1
- package/lib/commonjs/controllers/EventsController.js +4 -4
- package/lib/commonjs/controllers/EventsController.js.map +1 -1
- package/lib/commonjs/controllers/ModalController.js +6 -7
- package/lib/commonjs/controllers/ModalController.js.map +1 -1
- package/lib/commonjs/controllers/OnRampController.js +117 -53
- package/lib/commonjs/controllers/OnRampController.js.map +1 -1
- package/lib/commonjs/controllers/OptionsController.js +14 -0
- package/lib/commonjs/controllers/OptionsController.js.map +1 -1
- package/lib/commonjs/controllers/PublicStateController.js.map +1 -1
- package/lib/commonjs/controllers/RouterController.js +1 -22
- package/lib/commonjs/controllers/RouterController.js.map +1 -1
- package/lib/commonjs/controllers/SendController.js +101 -101
- 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 +140 -147
- package/lib/commonjs/controllers/SwapController.js.map +1 -1
- package/lib/commonjs/controllers/ThemeController.js.map +1 -1
- package/lib/commonjs/controllers/TransactionsController.js +23 -19
- package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
- package/lib/commonjs/index.js +0 -35
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/utils/ApiUtil.js.map +1 -1
- package/lib/commonjs/utils/AssetUtil.js +3 -14
- package/lib/commonjs/utils/AssetUtil.js.map +1 -1
- package/lib/commonjs/utils/ConstantsUtil.js +122 -426
- package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
- package/lib/commonjs/utils/CoreHelperUtil.js +13 -8
- package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
- package/lib/commonjs/utils/EventUtil.js.map +1 -1
- package/lib/commonjs/utils/FetchUtil.js +34 -10
- package/lib/commonjs/utils/FetchUtil.js.map +1 -1
- package/lib/commonjs/utils/RouterUtil.js.map +1 -1
- package/lib/commonjs/utils/StorageUtil.js +86 -92
- package/lib/commonjs/utils/StorageUtil.js.map +1 -1
- package/lib/commonjs/utils/SwapApiUtil.js +11 -22
- package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
- package/lib/commonjs/utils/SwapCalculationUtil.js.map +1 -1
- package/lib/commonjs/utils/TypeUtil.js +25 -0
- package/lib/commonjs/utils/TypeUtil.js.map +1 -1
- package/lib/module/controllers/ApiController.js +18 -6
- package/lib/module/controllers/ApiController.js.map +1 -1
- package/lib/module/controllers/AssetController.js +2 -0
- package/lib/module/controllers/AssetController.js.map +1 -1
- package/lib/module/controllers/BlockchainApiController.js +104 -110
- package/lib/module/controllers/BlockchainApiController.js.map +1 -1
- package/lib/module/controllers/ConnectionController.js +3 -10
- package/lib/module/controllers/ConnectionController.js.map +1 -1
- package/lib/module/controllers/ConnectionsController.js +314 -51
- package/lib/module/controllers/ConnectionsController.js.map +1 -1
- package/lib/module/controllers/EnsController.js +4 -2
- package/lib/module/controllers/EnsController.js.map +1 -1
- package/lib/module/controllers/EventsController.js +3 -1
- package/lib/module/controllers/EventsController.js.map +1 -1
- package/lib/module/controllers/ModalController.js +8 -7
- package/lib/module/controllers/ModalController.js.map +1 -1
- package/lib/module/controllers/OnRampController.js +118 -52
- package/lib/module/controllers/OnRampController.js.map +1 -1
- package/lib/module/controllers/OptionsController.js +16 -0
- 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 +3 -22
- package/lib/module/controllers/RouterController.js.map +1 -1
- package/lib/module/controllers/SendController.js +100 -98
- 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 +142 -147
- package/lib/module/controllers/SwapController.js.map +1 -1
- package/lib/module/controllers/ThemeController.js +2 -0
- package/lib/module/controllers/ThemeController.js.map +1 -1
- package/lib/module/controllers/TransactionsController.js +23 -17
- package/lib/module/controllers/TransactionsController.js.map +1 -1
- package/lib/module/index.js +2 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/ApiUtil.js +2 -0
- package/lib/module/utils/ApiUtil.js.map +1 -1
- package/lib/module/utils/AssetUtil.js +5 -14
- package/lib/module/utils/AssetUtil.js.map +1 -1
- package/lib/module/utils/ConstantsUtil.js +124 -426
- package/lib/module/utils/ConstantsUtil.js.map +1 -1
- package/lib/module/utils/CoreHelperUtil.js +14 -6
- 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 +36 -10
- package/lib/module/utils/FetchUtil.js.map +1 -1
- package/lib/module/utils/RouterUtil.js +2 -0
- package/lib/module/utils/RouterUtil.js.map +1 -1
- package/lib/module/utils/StorageUtil.js +89 -91
- package/lib/module/utils/StorageUtil.js.map +1 -1
- package/lib/module/utils/SwapApiUtil.js +13 -22
- package/lib/module/utils/SwapApiUtil.js.map +1 -1
- package/lib/module/utils/SwapCalculationUtil.js +2 -0
- package/lib/module/utils/SwapCalculationUtil.js.map +1 -1
- package/lib/module/utils/TypeUtil.js +25 -1
- package/lib/module/utils/TypeUtil.js.map +1 -1
- package/lib/typescript/controllers/ApiController.d.ts +2 -1
- package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/BlockchainApiController.d.ts +20 -13
- package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectionController.d.ts +3 -16
- package/lib/typescript/controllers/ConnectionController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectionsController.d.ts +26 -22
- package/lib/typescript/controllers/ConnectionsController.d.ts.map +1 -1
- 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 +3 -2
- package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
- package/lib/typescript/controllers/OptionsController.d.ts +7 -2
- package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
- package/lib/typescript/controllers/RouterController.d.ts +4 -17
- 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 +12 -11
- package/lib/typescript/controllers/SwapController.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/index.d.ts +0 -5
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/AssetUtil.d.ts +2 -3
- package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
- package/lib/typescript/utils/ConstantsUtil.d.ts +7 -414
- package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
- package/lib/typescript/utils/CoreHelperUtil.d.ts +5 -4
- package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
- package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
- package/lib/typescript/utils/StorageUtil.d.ts +11 -15
- package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
- package/lib/typescript/utils/SwapApiUtil.d.ts +3 -3
- package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
- package/lib/typescript/utils/TypeUtil.d.ts +54 -177
- package/lib/typescript/utils/TypeUtil.d.ts.map +1 -1
- package/package.json +9 -23
- package/src/controllers/ApiController.ts +17 -4
- package/src/controllers/BlockchainApiController.ts +74 -119
- package/src/controllers/ConnectionController.ts +5 -28
- package/src/controllers/ConnectionsController.ts +399 -92
- package/src/controllers/EnsController.ts +2 -2
- package/src/controllers/EventsController.ts +1 -1
- package/src/controllers/ModalController.ts +7 -9
- package/src/controllers/OnRampController.ts +178 -81
- package/src/controllers/OptionsController.ts +22 -9
- package/src/controllers/RouterController.ts +4 -54
- package/src/controllers/SendController.ts +124 -113
- package/src/controllers/SnackController.ts +31 -5
- package/src/controllers/SwapController.ts +165 -181
- package/src/controllers/TransactionsController.ts +24 -18
- package/src/index.ts +0 -15
- package/src/utils/AssetUtil.ts +4 -18
- package/src/utils/ConstantsUtil.ts +125 -428
- package/src/utils/CoreHelperUtil.ts +30 -8
- package/src/utils/FetchUtil.ts +37 -10
- package/src/utils/StorageUtil.ts +165 -106
- package/src/utils/SwapApiUtil.ts +25 -42
- package/src/utils/TypeUtil.ts +64 -171
- package/lib/commonjs/controllers/AccountController.js +0 -93
- package/lib/commonjs/controllers/AccountController.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/module/controllers/AccountController.js +0 -88
- package/lib/module/controllers/AccountController.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/typescript/controllers/AccountController.d.ts +0 -33
- package/lib/typescript/controllers/AccountController.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/src/controllers/AccountController.ts +0 -128
- 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
|
@@ -1,20 +1,20 @@
|
|
|
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
|
+
} from '@reown/appkit-common-react-native';
|
|
4
8
|
|
|
5
9
|
import { ConstantsUtil } from '../utils/ConstantsUtil';
|
|
6
10
|
import { SwapApiUtil } from '../utils/SwapApiUtil';
|
|
7
|
-
import { NetworkController } from './NetworkController';
|
|
8
11
|
import { BlockchainApiController } from './BlockchainApiController';
|
|
9
12
|
import { OptionsController } from './OptionsController';
|
|
10
13
|
import { SwapCalculationUtil } from '../utils/SwapCalculationUtil';
|
|
11
14
|
import { SnackController } from './SnackController';
|
|
12
15
|
import { RouterController } from './RouterController';
|
|
13
16
|
import type { SwapInputTarget, SwapTokenWithBalance } from '../utils/TypeUtil';
|
|
14
|
-
import { ConnectorController } from './ConnectorController';
|
|
15
|
-
import { AccountController } from './AccountController';
|
|
16
17
|
import { CoreHelperUtil } from '../utils/CoreHelperUtil';
|
|
17
|
-
import { ConnectionController } from './ConnectionController';
|
|
18
18
|
import { TransactionsController } from './TransactionsController';
|
|
19
19
|
import { EventsController } from './EventsController';
|
|
20
20
|
import { ConnectionsController } from './ConnectionsController';
|
|
@@ -45,8 +45,7 @@ class TransactionError extends Error {
|
|
|
45
45
|
|
|
46
46
|
export interface SwapControllerState {
|
|
47
47
|
// Loading states
|
|
48
|
-
|
|
49
|
-
initialized: boolean;
|
|
48
|
+
loadingTokens: boolean;
|
|
50
49
|
loadingPrices: boolean;
|
|
51
50
|
loadingQuote?: boolean;
|
|
52
51
|
loadingApprovalTransaction?: boolean;
|
|
@@ -69,7 +68,6 @@ export interface SwapControllerState {
|
|
|
69
68
|
toTokenAmount: string;
|
|
70
69
|
toTokenPriceInUSD: number;
|
|
71
70
|
networkPrice: string;
|
|
72
|
-
networkBalanceInUSD: string;
|
|
73
71
|
networkTokenSymbol: string;
|
|
74
72
|
inputError: string | undefined;
|
|
75
73
|
|
|
@@ -97,8 +95,7 @@ type StateKey = keyof SwapControllerState;
|
|
|
97
95
|
// -- State --------------------------------------------- //
|
|
98
96
|
const initialState: SwapControllerState = {
|
|
99
97
|
// Loading states
|
|
100
|
-
|
|
101
|
-
initialized: false,
|
|
98
|
+
loadingTokens: false,
|
|
102
99
|
loadingPrices: false,
|
|
103
100
|
loadingQuote: false,
|
|
104
101
|
loadingApprovalTransaction: false,
|
|
@@ -121,7 +118,6 @@ const initialState: SwapControllerState = {
|
|
|
121
118
|
toTokenAmount: '',
|
|
122
119
|
toTokenPriceInUSD: 0,
|
|
123
120
|
networkPrice: '0',
|
|
124
|
-
networkBalanceInUSD: '0',
|
|
125
121
|
networkTokenSymbol: '',
|
|
126
122
|
inputError: undefined,
|
|
127
123
|
|
|
@@ -159,18 +155,15 @@ export const SwapController = {
|
|
|
159
155
|
},
|
|
160
156
|
|
|
161
157
|
getParams() {
|
|
162
|
-
const { activeAddress, activeNamespace, activeNetwork } =
|
|
158
|
+
const { activeAddress, activeNamespace, activeNetwork, connection } =
|
|
159
|
+
ConnectionsController.state;
|
|
163
160
|
const address = CoreHelperUtil.getPlainAddress(activeAddress);
|
|
164
161
|
|
|
165
162
|
if (!activeNamespace || !activeNetwork) {
|
|
166
163
|
throw new Error('No active namespace or network found to swap the tokens from.');
|
|
167
164
|
}
|
|
168
165
|
|
|
169
|
-
const networkAddress = `${activeNetwork.caipNetworkId
|
|
170
|
-
ConstantsUtil.NATIVE_TOKEN_ADDRESS[activeNamespace]
|
|
171
|
-
}`;
|
|
172
|
-
|
|
173
|
-
const type = ConnectorController.state.connectedConnector;
|
|
166
|
+
const networkAddress: CaipAddress = `${activeNetwork.caipNetworkId}:${ConstantsUtil.NATIVE_TOKEN_ADDRESS[activeNamespace]}`;
|
|
174
167
|
|
|
175
168
|
if (!address) {
|
|
176
169
|
throw new Error('No address found to swap the tokens from.');
|
|
@@ -186,6 +179,7 @@ export const SwapController = {
|
|
|
186
179
|
|
|
187
180
|
return {
|
|
188
181
|
networkAddress,
|
|
182
|
+
network: activeNetwork,
|
|
189
183
|
fromAddress: address,
|
|
190
184
|
fromCaipAddress: activeAddress,
|
|
191
185
|
sourceTokenAddress: state.sourceToken?.address,
|
|
@@ -199,12 +193,12 @@ export const SwapController = {
|
|
|
199
193
|
invalidSourceTokenAmount,
|
|
200
194
|
availableToSwap:
|
|
201
195
|
activeAddress && !invalidToToken && !invalidSourceToken && !invalidSourceTokenAmount,
|
|
202
|
-
isAuthConnector:
|
|
196
|
+
isAuthConnector: !!connection?.properties?.provider
|
|
203
197
|
};
|
|
204
198
|
},
|
|
205
199
|
|
|
206
200
|
switchTokens() {
|
|
207
|
-
if (state.
|
|
201
|
+
if (state.loadingTokens) {
|
|
208
202
|
return;
|
|
209
203
|
}
|
|
210
204
|
|
|
@@ -229,41 +223,36 @@ export const SwapController = {
|
|
|
229
223
|
this.swapTokens();
|
|
230
224
|
},
|
|
231
225
|
|
|
232
|
-
resetState() {
|
|
233
|
-
state.myTokensWithBalance = initialState.myTokensWithBalance;
|
|
234
|
-
state.tokensPriceMap = initialState.tokensPriceMap;
|
|
235
|
-
state.initialized = initialState.initialized;
|
|
236
|
-
state.sourceToken = initialState.sourceToken;
|
|
237
|
-
state.sourceTokenAmount = initialState.sourceTokenAmount;
|
|
238
|
-
state.sourceTokenPriceInUSD = initialState.sourceTokenPriceInUSD;
|
|
239
|
-
state.toToken = initialState.toToken;
|
|
240
|
-
state.toTokenAmount = initialState.toTokenAmount;
|
|
241
|
-
state.toTokenPriceInUSD = initialState.toTokenPriceInUSD;
|
|
242
|
-
state.networkPrice = initialState.networkPrice;
|
|
243
|
-
state.networkTokenSymbol = initialState.networkTokenSymbol;
|
|
244
|
-
state.networkBalanceInUSD = initialState.networkBalanceInUSD;
|
|
245
|
-
state.inputError = initialState.inputError;
|
|
246
|
-
},
|
|
247
|
-
|
|
248
226
|
async fetchTokens() {
|
|
249
|
-
|
|
227
|
+
try {
|
|
228
|
+
const { networkAddress } = this.getParams();
|
|
250
229
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
230
|
+
state.loadingTokens = true;
|
|
231
|
+
await this.getTokenList();
|
|
232
|
+
await this.getNetworkTokenPrice();
|
|
233
|
+
await this.getMyTokensWithBalance();
|
|
254
234
|
|
|
255
|
-
|
|
235
|
+
const networkToken = state.tokens?.find(token => token.address === networkAddress);
|
|
256
236
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
237
|
+
if (networkToken) {
|
|
238
|
+
state.networkTokenSymbol = networkToken.symbol;
|
|
239
|
+
}
|
|
260
240
|
|
|
261
|
-
|
|
262
|
-
state.
|
|
263
|
-
|
|
241
|
+
// Set default source token if not set
|
|
242
|
+
if (!state.sourceToken && state.myTokensWithBalance?.length) {
|
|
243
|
+
const sourceToken =
|
|
244
|
+
state.myTokensWithBalance?.find(token => token.address.startsWith(networkAddress)) ||
|
|
245
|
+
state.myTokensWithBalance?.[0];
|
|
264
246
|
|
|
265
|
-
|
|
266
|
-
|
|
247
|
+
this.setSourceToken(sourceToken);
|
|
248
|
+
this.setSourceTokenAmount('1');
|
|
249
|
+
}
|
|
250
|
+
} catch (error) {
|
|
251
|
+
SnackController.showError('Failed to initialize swap');
|
|
252
|
+
RouterController.goBack();
|
|
253
|
+
} finally {
|
|
254
|
+
state.loadingTokens = false;
|
|
255
|
+
}
|
|
267
256
|
},
|
|
268
257
|
|
|
269
258
|
async getTokenList() {
|
|
@@ -289,21 +278,23 @@ export const SwapController = {
|
|
|
289
278
|
}, {});
|
|
290
279
|
},
|
|
291
280
|
|
|
292
|
-
async getMyTokensWithBalance(forceUpdate?:
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
if (!
|
|
281
|
+
async getMyTokensWithBalance(forceUpdate?: CaipAddress[]) {
|
|
282
|
+
await ConnectionsController.fetchBalance(forceUpdate);
|
|
283
|
+
const swapBalances = SwapApiUtil.mapBalancesToSwapTokens(ConnectionsController.state.balances);
|
|
284
|
+
if (!swapBalances) {
|
|
296
285
|
return;
|
|
297
286
|
}
|
|
298
287
|
|
|
299
288
|
await this.getInitialGasPrice();
|
|
300
|
-
this.setBalances(
|
|
289
|
+
this.setBalances(swapBalances);
|
|
301
290
|
},
|
|
302
291
|
|
|
303
|
-
getFilteredPopularTokens() {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
292
|
+
getFilteredPopularTokens(balances?: SwapTokenWithBalance[]) {
|
|
293
|
+
if (!balances) {
|
|
294
|
+
return state.popularTokens;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
return state.popularTokens?.filter(token => !balances.some(t => t.address === token.address));
|
|
307
298
|
},
|
|
308
299
|
|
|
309
300
|
setSourceToken(sourceToken: SwapTokenWithBalance | undefined) {
|
|
@@ -327,26 +318,10 @@ export const SwapController = {
|
|
|
327
318
|
}
|
|
328
319
|
},
|
|
329
320
|
|
|
330
|
-
async
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
}
|
|
321
|
+
async getAddressPrice(address: CaipAddress) {
|
|
322
|
+
const [namespace, chain] = address.split(':');
|
|
323
|
+
const networkId: CaipNetworkId = `${namespace}:${chain}`;
|
|
334
324
|
|
|
335
|
-
state.initializing = true;
|
|
336
|
-
if (!state.initialized) {
|
|
337
|
-
try {
|
|
338
|
-
await this.fetchTokens();
|
|
339
|
-
state.initialized = true;
|
|
340
|
-
} catch (error) {
|
|
341
|
-
state.initialized = false;
|
|
342
|
-
SnackController.showError('Failed to initialize swap');
|
|
343
|
-
RouterController.goBack();
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
state.initializing = false;
|
|
347
|
-
},
|
|
348
|
-
|
|
349
|
-
async getAddressPrice(address: string) {
|
|
350
325
|
const existPrice = state.tokensPriceMap[address];
|
|
351
326
|
|
|
352
327
|
if (existPrice) {
|
|
@@ -355,7 +330,8 @@ export const SwapController = {
|
|
|
355
330
|
|
|
356
331
|
const response = await BlockchainApiController.fetchTokenPrice({
|
|
357
332
|
projectId: OptionsController.state.projectId,
|
|
358
|
-
addresses: [address]
|
|
333
|
+
addresses: [address],
|
|
334
|
+
caipNetworkId: networkId
|
|
359
335
|
});
|
|
360
336
|
const fungibles = response?.fungibles || [];
|
|
361
337
|
const allTokens = [...(state.tokens || []), ...(state.myTokensWithBalance || [])];
|
|
@@ -370,10 +346,13 @@ export const SwapController = {
|
|
|
370
346
|
|
|
371
347
|
async getNetworkTokenPrice() {
|
|
372
348
|
const { networkAddress } = this.getParams();
|
|
349
|
+
const [namespace, chain] = networkAddress.split(':');
|
|
350
|
+
const networkId: CaipNetworkId = `${namespace}:${chain}`;
|
|
373
351
|
|
|
374
352
|
const response = await BlockchainApiController.fetchTokenPrice({
|
|
375
353
|
projectId: OptionsController.state.projectId,
|
|
376
|
-
addresses: [networkAddress]
|
|
354
|
+
addresses: [networkAddress],
|
|
355
|
+
caipNetworkId: networkId
|
|
377
356
|
});
|
|
378
357
|
|
|
379
358
|
const token = response?.fungibles?.[0];
|
|
@@ -409,24 +388,11 @@ export const SwapController = {
|
|
|
409
388
|
},
|
|
410
389
|
|
|
411
390
|
setBalances(balances: SwapTokenWithBalance[]) {
|
|
412
|
-
|
|
413
|
-
const caipNetwork = NetworkController.state.caipNetwork;
|
|
414
|
-
|
|
415
|
-
if (!caipNetwork) {
|
|
416
|
-
return;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
const networkToken = balances.find(token => token.address === networkAddress);
|
|
391
|
+
state.myTokensWithBalance = balances;
|
|
420
392
|
|
|
421
393
|
balances.forEach(token => {
|
|
422
394
|
state.tokensPriceMap[token.address] = token.price || 0;
|
|
423
395
|
});
|
|
424
|
-
|
|
425
|
-
state.myTokensWithBalance = balances.filter(token => token.address?.startsWith(caipNetwork.id));
|
|
426
|
-
|
|
427
|
-
state.networkBalanceInUSD = networkToken
|
|
428
|
-
? NumberUtil.multiply(networkToken.quantity.numeric, networkToken.price).toString()
|
|
429
|
-
: '0';
|
|
430
396
|
},
|
|
431
397
|
|
|
432
398
|
setToToken(toToken: SwapTokenWithBalance | undefined) {
|
|
@@ -448,7 +414,7 @@ export const SwapController = {
|
|
|
448
414
|
: '';
|
|
449
415
|
},
|
|
450
416
|
|
|
451
|
-
async setTokenPrice(address:
|
|
417
|
+
async setTokenPrice(address: CaipAddress, target: SwapInputTarget) {
|
|
452
418
|
let price = state.tokensPriceMap[address] || 0;
|
|
453
419
|
|
|
454
420
|
if (!price) {
|
|
@@ -473,12 +439,12 @@ export const SwapController = {
|
|
|
473
439
|
|
|
474
440
|
// -- Swap ---------------------------------------------- //
|
|
475
441
|
async swapTokens() {
|
|
476
|
-
const address =
|
|
442
|
+
const address = ConnectionsController.state.activeAddress;
|
|
477
443
|
const sourceToken = state.sourceToken;
|
|
478
444
|
const toToken = state.toToken;
|
|
479
445
|
const haveSourceTokenAmount = NumberUtil.bigNumber(state.sourceTokenAmount).isGreaterThan(0);
|
|
480
446
|
|
|
481
|
-
if (!toToken || !sourceToken || state.loadingPrices || !haveSourceTokenAmount) {
|
|
447
|
+
if (!toToken || !sourceToken || state.loadingPrices || !haveSourceTokenAmount || !address) {
|
|
482
448
|
return;
|
|
483
449
|
}
|
|
484
450
|
|
|
@@ -488,39 +454,45 @@ export const SwapController = {
|
|
|
488
454
|
.multipliedBy(10 ** sourceToken.decimals)
|
|
489
455
|
.integerValue();
|
|
490
456
|
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
457
|
+
try {
|
|
458
|
+
const quoteResponse = await BlockchainApiController.fetchSwapQuote({
|
|
459
|
+
userAddress: address,
|
|
460
|
+
projectId: OptionsController.state.projectId,
|
|
461
|
+
from: sourceToken.address,
|
|
462
|
+
to: toToken.address,
|
|
463
|
+
gasPrice: state.gasFee,
|
|
464
|
+
amount: amountDecimal.toString()
|
|
465
|
+
});
|
|
499
466
|
|
|
500
|
-
|
|
467
|
+
const quoteToAmount = quoteResponse?.quotes?.[0]?.toAmount;
|
|
501
468
|
|
|
502
|
-
|
|
469
|
+
if (!quoteToAmount) {
|
|
470
|
+
state.loadingQuote = false;
|
|
503
471
|
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
}
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
507
474
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
475
|
+
const toTokenAmount = NumberUtil.bigNumber(quoteToAmount)
|
|
476
|
+
.dividedBy(10 ** toToken.decimals)
|
|
477
|
+
.toString();
|
|
511
478
|
|
|
512
|
-
|
|
479
|
+
this.setToTokenAmount(toTokenAmount);
|
|
513
480
|
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
481
|
+
const isInsufficientToken = this.hasInsufficientToken(
|
|
482
|
+
state.sourceTokenAmount,
|
|
483
|
+
sourceToken.address
|
|
484
|
+
);
|
|
518
485
|
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
486
|
+
if (isInsufficientToken) {
|
|
487
|
+
state.inputError = 'Insufficient balance';
|
|
488
|
+
} else {
|
|
489
|
+
state.inputError = undefined;
|
|
490
|
+
this.setTransactionDetails();
|
|
491
|
+
}
|
|
492
|
+
} catch (error) {
|
|
493
|
+
SnackController.showError('Failed to get swap quote');
|
|
494
|
+
} finally {
|
|
495
|
+
state.loadingQuote = false;
|
|
524
496
|
}
|
|
525
497
|
},
|
|
526
498
|
|
|
@@ -589,7 +561,7 @@ export const SwapController = {
|
|
|
589
561
|
if (!response) {
|
|
590
562
|
throw new Error('createAllowanceTransaction - No response from generateApproveCalldata');
|
|
591
563
|
}
|
|
592
|
-
const gasLimit = await
|
|
564
|
+
const gasLimit = await ConnectionsController.estimateGas({
|
|
593
565
|
address: fromAddress as `0x${string}`,
|
|
594
566
|
to: CoreHelperUtil.getPlainAddress(response.tx.to) as `0x${string}`,
|
|
595
567
|
data: response.tx.data
|
|
@@ -642,7 +614,7 @@ export const SwapController = {
|
|
|
642
614
|
return undefined;
|
|
643
615
|
}
|
|
644
616
|
|
|
645
|
-
const amount =
|
|
617
|
+
const amount = ConnectionsController.parseUnits(
|
|
646
618
|
sourceTokenAmount,
|
|
647
619
|
sourceToken.decimals
|
|
648
620
|
)?.toString();
|
|
@@ -692,42 +664,32 @@ export const SwapController = {
|
|
|
692
664
|
},
|
|
693
665
|
|
|
694
666
|
async sendTransactionForApproval(data: TransactionParams) {
|
|
695
|
-
const { fromAddress,
|
|
696
|
-
|
|
667
|
+
const { fromAddress, network } = this.getParams();
|
|
697
668
|
state.loadingApprovalTransaction = true;
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
if (isAuthConnector) {
|
|
701
|
-
RouterController.pushTransactionStack({
|
|
702
|
-
view: null,
|
|
703
|
-
goBack: true,
|
|
704
|
-
onSuccess() {
|
|
705
|
-
SnackController.showLoading(approveLimitMessage);
|
|
706
|
-
}
|
|
707
|
-
});
|
|
708
|
-
} else {
|
|
709
|
-
SnackController.showLoading(approveLimitMessage);
|
|
710
|
-
}
|
|
669
|
+
|
|
670
|
+
SnackController.showLoading('Approve limit increase in your wallet');
|
|
711
671
|
|
|
712
672
|
try {
|
|
713
|
-
await
|
|
673
|
+
await ConnectionsController.sendTransaction({
|
|
714
674
|
address: fromAddress as `0x${string}`,
|
|
715
675
|
to: data.to as `0x${string}`,
|
|
716
676
|
data: data.data as `0x${string}`,
|
|
717
677
|
value: BigInt(data.value),
|
|
718
678
|
gasPrice: BigInt(data.gasPrice),
|
|
719
|
-
chainNamespace:
|
|
679
|
+
chainNamespace: ConnectionsController.state.activeNamespace,
|
|
680
|
+
network
|
|
720
681
|
});
|
|
721
682
|
|
|
722
683
|
await this.swapTokens();
|
|
723
684
|
await this.getTransaction();
|
|
724
685
|
state.approvalTransaction = undefined;
|
|
725
|
-
state.loadingApprovalTransaction = false;
|
|
726
686
|
} catch (err) {
|
|
727
687
|
const error = err as TransactionError;
|
|
728
688
|
state.transactionError = error?.shortMessage as unknown as string;
|
|
729
|
-
|
|
689
|
+
|
|
730
690
|
SnackController.showError(error?.shortMessage ?? 'Transaction error');
|
|
691
|
+
} finally {
|
|
692
|
+
state.loadingApprovalTransaction = false;
|
|
731
693
|
}
|
|
732
694
|
},
|
|
733
695
|
|
|
@@ -735,68 +697,53 @@ export const SwapController = {
|
|
|
735
697
|
if (!data) {
|
|
736
698
|
return undefined;
|
|
737
699
|
}
|
|
738
|
-
|
|
739
|
-
const { fromAddress, toTokenAmount, isAuthConnector } = this.getParams();
|
|
700
|
+
const { fromAddress, isAuthConnector, network } = this.getParams();
|
|
740
701
|
|
|
741
702
|
state.loadingTransaction = true;
|
|
742
703
|
|
|
743
|
-
const
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
const snackbarSuccessMessage = `Swapped ${state.sourceToken
|
|
747
|
-
?.symbol} to ${NumberUtil.formatNumberToLocalString(toTokenAmount, 3)} ${state.toToken
|
|
748
|
-
?.symbol}`;
|
|
749
|
-
|
|
750
|
-
if (isAuthConnector) {
|
|
751
|
-
RouterController.pushTransactionStack({
|
|
752
|
-
view: 'Account',
|
|
753
|
-
goBack: false,
|
|
754
|
-
onSuccess() {
|
|
755
|
-
SnackController.showLoading(snackbarPendingMessage);
|
|
756
|
-
SwapController.resetState();
|
|
757
|
-
}
|
|
758
|
-
});
|
|
759
|
-
} else {
|
|
760
|
-
SnackController.showLoading('Confirm transaction in your wallet');
|
|
761
|
-
}
|
|
704
|
+
const snackbarSuccessMessage = `Swapped ${state.sourceToken?.symbol} to ${state.toToken?.symbol}`;
|
|
705
|
+
|
|
706
|
+
SnackController.showLoading('Confirm transaction in your wallet');
|
|
762
707
|
|
|
763
708
|
try {
|
|
764
|
-
const forceUpdateAddresses = [state.sourceToken?.address, state.toToken?.address].
|
|
765
|
-
|
|
709
|
+
const forceUpdateAddresses = [state.sourceToken?.address, state.toToken?.address].filter(
|
|
710
|
+
Boolean
|
|
711
|
+
) as CaipAddress[];
|
|
712
|
+
|
|
713
|
+
const transactionHash = await ConnectionsController.sendTransaction({
|
|
766
714
|
address: fromAddress as `0x${string}`,
|
|
767
715
|
to: data.to as `0x${string}`,
|
|
768
716
|
data: data.data as `0x${string}`,
|
|
769
717
|
gas: data.gas,
|
|
770
718
|
gasPrice: BigInt(data.gasPrice),
|
|
771
719
|
value: data.value,
|
|
772
|
-
chainNamespace:
|
|
720
|
+
chainNamespace: ConnectionsController.state.activeNamespace,
|
|
721
|
+
network
|
|
773
722
|
});
|
|
774
723
|
|
|
775
724
|
state.loadingTransaction = false;
|
|
776
|
-
|
|
725
|
+
|
|
726
|
+
SnackController.showSuccess(snackbarSuccessMessage, true);
|
|
777
727
|
EventsController.sendEvent({
|
|
778
728
|
type: 'track',
|
|
779
729
|
event: 'SWAP_SUCCESS',
|
|
780
730
|
properties: {
|
|
781
|
-
network:
|
|
731
|
+
network: ConnectionsController.state.activeNetwork?.caipNetworkId || '',
|
|
782
732
|
swapFromToken: this.state.sourceToken?.symbol || '',
|
|
783
733
|
swapToToken: this.state.toToken?.symbol || '',
|
|
784
734
|
swapFromAmount: this.state.sourceTokenAmount || '',
|
|
785
735
|
swapToAmount: this.state.toTokenAmount || '',
|
|
786
|
-
isSmartAccount:
|
|
736
|
+
isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
|
|
787
737
|
}
|
|
788
738
|
});
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
if (!isAuthConnector) {
|
|
792
|
-
RouterController.replace('AccountDefault');
|
|
793
|
-
}
|
|
794
|
-
|
|
739
|
+
RouterController.replace(isAuthConnector ? 'Account' : 'AccountDefault');
|
|
740
|
+
SwapController.clearTokens();
|
|
795
741
|
SwapController.getMyTokensWithBalance(forceUpdateAddresses);
|
|
796
|
-
AccountController.fetchTokenBalance();
|
|
797
742
|
|
|
798
743
|
setTimeout(() => {
|
|
799
|
-
|
|
744
|
+
if (ConnectionsController.state.activeAddress) {
|
|
745
|
+
TransactionsController.fetchTransactions(ConnectionsController.state.activeAddress, true);
|
|
746
|
+
}
|
|
800
747
|
}, 5000);
|
|
801
748
|
|
|
802
749
|
return transactionHash;
|
|
@@ -810,12 +757,12 @@ export const SwapController = {
|
|
|
810
757
|
event: 'SWAP_ERROR',
|
|
811
758
|
properties: {
|
|
812
759
|
message: error?.shortMessage ?? error?.message ?? 'Unknown',
|
|
813
|
-
network:
|
|
760
|
+
network: ConnectionsController.state.activeNetwork?.caipNetworkId || '',
|
|
814
761
|
swapFromToken: this.state.sourceToken?.symbol || '',
|
|
815
762
|
swapToToken: this.state.toToken?.symbol || '',
|
|
816
763
|
swapFromAmount: this.state.sourceTokenAmount || '',
|
|
817
764
|
swapToAmount: this.state.toTokenAmount || '',
|
|
818
|
-
isSmartAccount:
|
|
765
|
+
isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
|
|
819
766
|
}
|
|
820
767
|
});
|
|
821
768
|
|
|
@@ -823,8 +770,45 @@ export const SwapController = {
|
|
|
823
770
|
}
|
|
824
771
|
},
|
|
825
772
|
|
|
773
|
+
clearTransactionLoaders() {
|
|
774
|
+
state.loadingApprovalTransaction = false;
|
|
775
|
+
state.loadingBuildTransaction = false;
|
|
776
|
+
state.loadingTransaction = false;
|
|
777
|
+
},
|
|
778
|
+
|
|
779
|
+
clearTokens() {
|
|
780
|
+
state.sourceToken = initialState.sourceToken;
|
|
781
|
+
state.sourceTokenAmount = initialState.sourceTokenAmount;
|
|
782
|
+
state.sourceTokenPriceInUSD = initialState.sourceTokenPriceInUSD;
|
|
783
|
+
state.toToken = initialState.toToken;
|
|
784
|
+
state.toTokenAmount = initialState.toTokenAmount;
|
|
785
|
+
state.toTokenPriceInUSD = initialState.toTokenPriceInUSD;
|
|
786
|
+
state.inputError = initialState.inputError;
|
|
787
|
+
state.loadingApprovalTransaction = initialState.loadingApprovalTransaction;
|
|
788
|
+
state.loadingBuildTransaction = initialState.loadingBuildTransaction;
|
|
789
|
+
state.loadingTransaction = initialState.loadingTransaction;
|
|
790
|
+
state.fetchError = initialState.fetchError;
|
|
791
|
+
state.transactionError = initialState.transactionError;
|
|
792
|
+
state.swapTransaction = initialState.swapTransaction;
|
|
793
|
+
state.approvalTransaction = initialState.approvalTransaction;
|
|
794
|
+
},
|
|
795
|
+
|
|
796
|
+
resetState() {
|
|
797
|
+
this.clearTokens();
|
|
798
|
+
state.myTokensWithBalance = initialState.myTokensWithBalance;
|
|
799
|
+
state.tokensPriceMap = initialState.tokensPriceMap;
|
|
800
|
+
state.networkPrice = initialState.networkPrice;
|
|
801
|
+
state.networkTokenSymbol = initialState.networkTokenSymbol;
|
|
802
|
+
},
|
|
803
|
+
|
|
826
804
|
// -- Checks -------------------------------------------- //
|
|
827
805
|
hasInsufficientToken(sourceTokenAmount: string, sourceTokenAddress: string) {
|
|
806
|
+
const { balances } = ConnectionsController.state;
|
|
807
|
+
const networkToken = balances?.find(t => t.address === undefined);
|
|
808
|
+
const networkBalanceInUSD = networkToken
|
|
809
|
+
? NumberUtil.multiply(networkToken.quantity?.numeric ?? '0', networkToken.price).toString()
|
|
810
|
+
: '0';
|
|
811
|
+
|
|
828
812
|
const isInsufficientSourceTokenForSwap = SwapCalculationUtil.isInsufficientSourceTokenForSwap(
|
|
829
813
|
sourceTokenAmount,
|
|
830
814
|
sourceTokenAddress,
|
|
@@ -832,12 +816,12 @@ export const SwapController = {
|
|
|
832
816
|
);
|
|
833
817
|
|
|
834
818
|
let insufficientNetworkTokenForGas = true;
|
|
835
|
-
if (
|
|
819
|
+
if (ConnectionsController.state.accountType === 'smartAccount') {
|
|
836
820
|
// Smart Accounts may pay gas in any ERC20 token
|
|
837
821
|
insufficientNetworkTokenForGas = false;
|
|
838
822
|
} else {
|
|
839
823
|
insufficientNetworkTokenForGas = SwapCalculationUtil.isInsufficientNetworkTokenForGas(
|
|
840
|
-
|
|
824
|
+
networkBalanceInUSD,
|
|
841
825
|
state.gasPriceInUSD
|
|
842
826
|
);
|
|
843
827
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
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';
|
|
9
8
|
|
|
10
9
|
// -- Types --------------------------------------------- //
|
|
@@ -34,22 +33,29 @@ export const TransactionsController = {
|
|
|
34
33
|
return sub(state, () => callback(state));
|
|
35
34
|
},
|
|
36
35
|
|
|
37
|
-
async fetchTransactions(accountAddress
|
|
38
|
-
|
|
36
|
+
async fetchTransactions(accountAddress: CaipAddress, reset?: boolean) {
|
|
37
|
+
try {
|
|
38
|
+
const { projectId } = OptionsController.state;
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
if (!projectId || !accountAddress) {
|
|
41
|
+
throw new Error("Transactions can't be fetched without a projectId and an accountAddress");
|
|
42
|
+
}
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
state.loading = true;
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
if (reset) {
|
|
47
|
+
state.next = undefined;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const [namespace, chain, address] = accountAddress?.split(':') ?? [];
|
|
51
|
+
|
|
52
|
+
if (!namespace || !chain || !address) {
|
|
53
|
+
throw new Error('Invalid address');
|
|
54
|
+
}
|
|
49
55
|
|
|
50
|
-
try {
|
|
51
56
|
const response = await BlockchainApiController.fetchTransactions({
|
|
52
|
-
account:
|
|
57
|
+
account: address,
|
|
58
|
+
chainId: `${namespace}:${chain}`,
|
|
53
59
|
projectId,
|
|
54
60
|
cursor: state.next
|
|
55
61
|
});
|
|
@@ -72,10 +78,10 @@ export const TransactionsController = {
|
|
|
72
78
|
type: 'track',
|
|
73
79
|
event: 'ERROR_FETCH_TRANSACTIONS',
|
|
74
80
|
properties: {
|
|
75
|
-
address: accountAddress,
|
|
76
|
-
projectId,
|
|
81
|
+
address: accountAddress ?? '',
|
|
82
|
+
projectId: OptionsController.state.projectId,
|
|
77
83
|
cursor: state.next,
|
|
78
|
-
isSmartAccount:
|
|
84
|
+
isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
|
|
79
85
|
}
|
|
80
86
|
});
|
|
81
87
|
SnackController.showError('Failed to fetch transactions');
|
|
@@ -133,7 +139,7 @@ export const TransactionsController = {
|
|
|
133
139
|
state.next = undefined;
|
|
134
140
|
},
|
|
135
141
|
|
|
136
|
-
|
|
142
|
+
resetState() {
|
|
137
143
|
state.transactions = [];
|
|
138
144
|
state.loading = false;
|
|
139
145
|
state.empty = false;
|