@reown/appkit-core-react-native 0.0.0-fix-approved-networks-20250822000414 → 0.0.0-fix-ui-changes-20250828183750
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 +75 -38
- 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 +156 -57
- package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectionsController.js +402 -0
- package/lib/commonjs/controllers/ConnectionsController.js.map +1 -0
- package/lib/commonjs/controllers/EnsController.js.map +1 -1
- 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 +29 -19
- package/lib/commonjs/controllers/OnRampController.js.map +1 -1
- package/lib/commonjs/controllers/OptionsController.js +22 -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 +96 -96
- 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 +154 -151
- package/lib/commonjs/controllers/SwapController.js.map +1 -1
- package/lib/commonjs/controllers/ThemeController.js +9 -1
- package/lib/commonjs/controllers/ThemeController.js.map +1 -1
- package/lib/commonjs/controllers/TransactionsController.js +22 -18
- 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/index.js +13 -41
- 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 +8 -18
- package/lib/commonjs/utils/AssetUtil.js.map +1 -1
- package/lib/commonjs/utils/ConstantsUtil.js +122 -5
- package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
- package/lib/commonjs/utils/CoreHelperUtil.js +19 -7
- package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
- package/lib/commonjs/utils/EventUtil.js.map +1 -1
- package/lib/commonjs/utils/FetchUtil.js.map +1 -1
- package/lib/commonjs/utils/RouterUtil.js.map +1 -1
- package/lib/commonjs/utils/StorageUtil.js +90 -108
- package/lib/commonjs/utils/StorageUtil.js.map +1 -1
- package/lib/commonjs/utils/SwapApiUtil.js +15 -21
- 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 +77 -38
- 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 +158 -57
- package/lib/module/controllers/BlockchainApiController.js.map +1 -1
- package/lib/module/controllers/ConnectionsController.js +399 -0
- package/lib/module/controllers/ConnectionsController.js.map +1 -0
- package/lib/module/controllers/EnsController.js +2 -0
- package/lib/module/controllers/EnsController.js.map +1 -1
- package/lib/module/controllers/EventsController.js +2 -0
- 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 +27 -15
- package/lib/module/controllers/OnRampController.js.map +1 -1
- package/lib/module/controllers/OptionsController.js +24 -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 +98 -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 +156 -151
- package/lib/module/controllers/SwapController.js.map +1 -1
- package/lib/module/controllers/ThemeController.js +11 -1
- package/lib/module/controllers/ThemeController.js.map +1 -1
- package/lib/module/controllers/TransactionsController.js +24 -18
- 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/index.js +7 -7
- 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 +10 -18
- package/lib/module/utils/AssetUtil.js.map +1 -1
- package/lib/module/utils/ConstantsUtil.js +124 -5
- package/lib/module/utils/ConstantsUtil.js.map +1 -1
- package/lib/module/utils/CoreHelperUtil.js +21 -5
- 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 +2 -0
- 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 +93 -108
- package/lib/module/utils/StorageUtil.js.map +1 -1
- package/lib/module/utils/SwapApiUtil.js +17 -21
- 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 +4 -5
- 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 +29 -11
- package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectionsController.d.ts +45 -0
- package/lib/typescript/controllers/ConnectionsController.d.ts.map +1 -0
- package/lib/typescript/controllers/EnsController.d.ts +1 -1
- package/lib/typescript/controllers/EventsController.d.ts +1 -1
- package/lib/typescript/controllers/EventsController.d.ts.map +1 -1
- package/lib/typescript/controllers/ModalController.d.ts.map +1 -1
- package/lib/typescript/controllers/OnRampController.d.ts +2 -2
- package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
- package/lib/typescript/controllers/OptionsController.d.ts +9 -4
- package/lib/typescript/controllers/OptionsController.d.ts.map +1 -1
- package/lib/typescript/controllers/PublicStateController.d.ts +1 -1
- package/lib/typescript/controllers/PublicStateController.d.ts.map +1 -1
- package/lib/typescript/controllers/RouterController.d.ts +6 -20
- 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 -12
- package/lib/typescript/controllers/SwapController.d.ts.map +1 -1
- package/lib/typescript/controllers/ThemeController.d.ts +1 -1
- 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/index.d.ts +3 -8
- package/lib/typescript/index.d.ts.map +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 +12 -2
- 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/EventUtil.d.ts +1 -1
- package/lib/typescript/utils/EventUtil.d.ts.map +1 -1
- package/lib/typescript/utils/FetchUtil.d.ts +2 -2
- package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
- package/lib/typescript/utils/StorageUtil.d.ts +15 -16
- 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 +8 -22
- package/src/controllers/ApiController.ts +83 -40
- package/src/controllers/AssetController.ts +0 -6
- package/src/controllers/BlockchainApiController.ts +136 -44
- package/src/controllers/ConnectionsController.ts +521 -0
- package/src/controllers/EnsController.ts +1 -1
- package/src/controllers/EventsController.ts +1 -1
- package/src/controllers/ModalController.ts +6 -7
- package/src/controllers/OnRampController.ts +37 -18
- package/src/controllers/OptionsController.ts +37 -14
- package/src/controllers/PublicStateController.ts +1 -1
- package/src/controllers/RouterController.ts +17 -54
- package/src/controllers/SendController.ts +122 -111
- package/src/controllers/SnackController.ts +31 -5
- package/src/controllers/SwapController.ts +177 -183
- package/src/controllers/ThemeController.ts +11 -2
- package/src/controllers/TransactionsController.ts +25 -19
- package/src/controllers/WcController.ts +93 -0
- package/src/index.ts +6 -20
- package/src/utils/AssetUtil.ts +9 -22
- package/src/utils/ConstantsUtil.ts +126 -6
- package/src/utils/CoreHelperUtil.ts +45 -7
- package/src/utils/EventUtil.ts +1 -1
- package/src/utils/FetchUtil.ts +2 -2
- package/src/utils/StorageUtil.ts +163 -131
- package/src/utils/SwapApiUtil.ts +30 -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 -126
- package/lib/commonjs/controllers/ConnectionController.js.map +0 -1
- package/lib/commonjs/controllers/ConnectorController.js +0 -49
- 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/ConnectionUtil.js +0 -33
- package/lib/commonjs/utils/ConnectionUtil.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/TypeUtil.js +0 -35
- 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 -121
- package/lib/module/controllers/ConnectionController.js.map +0 -1
- package/lib/module/controllers/ConnectorController.js +0 -44
- 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/ConnectionUtil.js +0 -27
- package/lib/module/utils/ConnectionUtil.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/TypeUtil.js +0 -28
- 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 -66
- 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 -35
- 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/ConnectionUtil.d.ts +0 -4
- package/lib/typescript/utils/ConnectionUtil.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/TypeUtil.d.ts +0 -850
- package/lib/typescript/utils/TypeUtil.d.ts.map +0 -1
- package/src/controllers/AccountController.ts +0 -128
- package/src/controllers/ConnectionController.ts +0 -200
- package/src/controllers/ConnectorController.ts +0 -63
- package/src/controllers/NetworkController.ts +0 -120
- package/src/controllers/WebviewController.ts +0 -63
- package/src/utils/ConnectionUtil.ts +0 -27
- package/src/utils/NetworkUtil.ts +0 -33
- package/src/utils/TypeUtil.ts +0 -1039
|
@@ -1,22 +1,24 @@
|
|
|
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';
|
|
7
|
-
import { NetworkController } from './NetworkController';
|
|
8
13
|
import { BlockchainApiController } from './BlockchainApiController';
|
|
9
14
|
import { OptionsController } from './OptionsController';
|
|
10
15
|
import { SwapCalculationUtil } from '../utils/SwapCalculationUtil';
|
|
11
16
|
import { SnackController } from './SnackController';
|
|
12
17
|
import { RouterController } from './RouterController';
|
|
13
|
-
import type { SwapInputTarget, SwapTokenWithBalance } from '../utils/TypeUtil';
|
|
14
|
-
import { ConnectorController } from './ConnectorController';
|
|
15
|
-
import { AccountController } from './AccountController';
|
|
16
18
|
import { CoreHelperUtil } from '../utils/CoreHelperUtil';
|
|
17
|
-
import { ConnectionController } from './ConnectionController';
|
|
18
19
|
import { TransactionsController } from './TransactionsController';
|
|
19
20
|
import { EventsController } from './EventsController';
|
|
21
|
+
import { ConnectionsController } from './ConnectionsController';
|
|
20
22
|
|
|
21
23
|
// -- Constants ---------------------------------------- //
|
|
22
24
|
export const INITIAL_GAS_LIMIT = 150000;
|
|
@@ -44,8 +46,7 @@ class TransactionError extends Error {
|
|
|
44
46
|
|
|
45
47
|
export interface SwapControllerState {
|
|
46
48
|
// Loading states
|
|
47
|
-
|
|
48
|
-
initialized: boolean;
|
|
49
|
+
loadingTokens: boolean;
|
|
49
50
|
loadingPrices: boolean;
|
|
50
51
|
loadingQuote?: boolean;
|
|
51
52
|
loadingApprovalTransaction?: boolean;
|
|
@@ -68,7 +69,6 @@ export interface SwapControllerState {
|
|
|
68
69
|
toTokenAmount: string;
|
|
69
70
|
toTokenPriceInUSD: number;
|
|
70
71
|
networkPrice: string;
|
|
71
|
-
networkBalanceInUSD: string;
|
|
72
72
|
networkTokenSymbol: string;
|
|
73
73
|
inputError: string | undefined;
|
|
74
74
|
|
|
@@ -96,8 +96,7 @@ type StateKey = keyof SwapControllerState;
|
|
|
96
96
|
// -- State --------------------------------------------- //
|
|
97
97
|
const initialState: SwapControllerState = {
|
|
98
98
|
// Loading states
|
|
99
|
-
|
|
100
|
-
initialized: false,
|
|
99
|
+
loadingTokens: false,
|
|
101
100
|
loadingPrices: false,
|
|
102
101
|
loadingQuote: false,
|
|
103
102
|
loadingApprovalTransaction: false,
|
|
@@ -120,7 +119,6 @@ const initialState: SwapControllerState = {
|
|
|
120
119
|
toTokenAmount: '',
|
|
121
120
|
toTokenPriceInUSD: 0,
|
|
122
121
|
networkPrice: '0',
|
|
123
|
-
networkBalanceInUSD: '0',
|
|
124
122
|
networkTokenSymbol: '',
|
|
125
123
|
inputError: undefined,
|
|
126
124
|
|
|
@@ -143,7 +141,7 @@ const initialState: SwapControllerState = {
|
|
|
143
141
|
providerFee: undefined
|
|
144
142
|
};
|
|
145
143
|
|
|
146
|
-
const state = proxy<SwapControllerState>(initialState);
|
|
144
|
+
const state = proxy<SwapControllerState>({ ...initialState });
|
|
147
145
|
|
|
148
146
|
// -- Controller ---------------------------------------- //
|
|
149
147
|
export const SwapController = {
|
|
@@ -158,10 +156,15 @@ export const SwapController = {
|
|
|
158
156
|
},
|
|
159
157
|
|
|
160
158
|
getParams() {
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
const
|
|
164
|
-
|
|
159
|
+
const { activeAddress, activeNamespace, activeNetwork, connection } =
|
|
160
|
+
ConnectionsController.state;
|
|
161
|
+
const address = CoreHelperUtil.getPlainAddress(activeAddress);
|
|
162
|
+
|
|
163
|
+
if (!activeNamespace || !activeNetwork) {
|
|
164
|
+
throw new Error('No active namespace or network found to swap the tokens from.');
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const networkAddress: CaipAddress = `${activeNetwork.caipNetworkId}:${ConstantsUtil.NATIVE_TOKEN_ADDRESS[activeNamespace]}`;
|
|
165
168
|
|
|
166
169
|
if (!address) {
|
|
167
170
|
throw new Error('No address found to swap the tokens from.');
|
|
@@ -177,8 +180,9 @@ export const SwapController = {
|
|
|
177
180
|
|
|
178
181
|
return {
|
|
179
182
|
networkAddress,
|
|
183
|
+
network: activeNetwork,
|
|
180
184
|
fromAddress: address,
|
|
181
|
-
fromCaipAddress:
|
|
185
|
+
fromCaipAddress: activeAddress,
|
|
182
186
|
sourceTokenAddress: state.sourceToken?.address,
|
|
183
187
|
toTokenAddress: state.toToken?.address,
|
|
184
188
|
toTokenAmount: state.toTokenAmount,
|
|
@@ -189,13 +193,13 @@ export const SwapController = {
|
|
|
189
193
|
invalidSourceToken,
|
|
190
194
|
invalidSourceTokenAmount,
|
|
191
195
|
availableToSwap:
|
|
192
|
-
|
|
193
|
-
isAuthConnector:
|
|
196
|
+
activeAddress && !invalidToToken && !invalidSourceToken && !invalidSourceTokenAmount,
|
|
197
|
+
isAuthConnector: !!connection?.properties?.provider
|
|
194
198
|
};
|
|
195
199
|
},
|
|
196
200
|
|
|
197
201
|
switchTokens() {
|
|
198
|
-
if (state.
|
|
202
|
+
if (state.loadingTokens) {
|
|
199
203
|
return;
|
|
200
204
|
}
|
|
201
205
|
|
|
@@ -220,41 +224,36 @@ export const SwapController = {
|
|
|
220
224
|
this.swapTokens();
|
|
221
225
|
},
|
|
222
226
|
|
|
223
|
-
resetState() {
|
|
224
|
-
state.myTokensWithBalance = initialState.myTokensWithBalance;
|
|
225
|
-
state.tokensPriceMap = initialState.tokensPriceMap;
|
|
226
|
-
state.initialized = initialState.initialized;
|
|
227
|
-
state.sourceToken = initialState.sourceToken;
|
|
228
|
-
state.sourceTokenAmount = initialState.sourceTokenAmount;
|
|
229
|
-
state.sourceTokenPriceInUSD = initialState.sourceTokenPriceInUSD;
|
|
230
|
-
state.toToken = initialState.toToken;
|
|
231
|
-
state.toTokenAmount = initialState.toTokenAmount;
|
|
232
|
-
state.toTokenPriceInUSD = initialState.toTokenPriceInUSD;
|
|
233
|
-
state.networkPrice = initialState.networkPrice;
|
|
234
|
-
state.networkTokenSymbol = initialState.networkTokenSymbol;
|
|
235
|
-
state.networkBalanceInUSD = initialState.networkBalanceInUSD;
|
|
236
|
-
state.inputError = initialState.inputError;
|
|
237
|
-
},
|
|
238
|
-
|
|
239
227
|
async fetchTokens() {
|
|
240
|
-
|
|
228
|
+
try {
|
|
229
|
+
const { networkAddress } = this.getParams();
|
|
241
230
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
231
|
+
state.loadingTokens = true;
|
|
232
|
+
await this.getTokenList();
|
|
233
|
+
await this.getNetworkTokenPrice();
|
|
234
|
+
await this.getMyTokensWithBalance();
|
|
245
235
|
|
|
246
|
-
|
|
236
|
+
const networkToken = state.tokens?.find(token => token.address === networkAddress);
|
|
247
237
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
238
|
+
if (networkToken) {
|
|
239
|
+
state.networkTokenSymbol = networkToken.symbol;
|
|
240
|
+
}
|
|
251
241
|
|
|
252
|
-
|
|
253
|
-
state.
|
|
254
|
-
|
|
242
|
+
// Set default source token if not set
|
|
243
|
+
if (!state.sourceToken && state.myTokensWithBalance?.length) {
|
|
244
|
+
const sourceToken =
|
|
245
|
+
state.myTokensWithBalance?.find(token => token.address.startsWith(networkAddress)) ||
|
|
246
|
+
state.myTokensWithBalance?.[0];
|
|
255
247
|
|
|
256
|
-
|
|
257
|
-
|
|
248
|
+
this.setSourceToken(sourceToken);
|
|
249
|
+
this.setSourceTokenAmount('1');
|
|
250
|
+
}
|
|
251
|
+
} catch (error) {
|
|
252
|
+
SnackController.showError('Failed to initialize swap');
|
|
253
|
+
RouterController.goBack();
|
|
254
|
+
} finally {
|
|
255
|
+
state.loadingTokens = false;
|
|
256
|
+
}
|
|
258
257
|
},
|
|
259
258
|
|
|
260
259
|
async getTokenList() {
|
|
@@ -280,21 +279,23 @@ export const SwapController = {
|
|
|
280
279
|
}, {});
|
|
281
280
|
},
|
|
282
281
|
|
|
283
|
-
async getMyTokensWithBalance(forceUpdate?:
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
if (!
|
|
282
|
+
async getMyTokensWithBalance(forceUpdate?: CaipAddress[]) {
|
|
283
|
+
await ConnectionsController.fetchBalance(forceUpdate);
|
|
284
|
+
const swapBalances = SwapApiUtil.mapBalancesToSwapTokens(ConnectionsController.state.balances);
|
|
285
|
+
if (!swapBalances) {
|
|
287
286
|
return;
|
|
288
287
|
}
|
|
289
288
|
|
|
290
289
|
await this.getInitialGasPrice();
|
|
291
|
-
this.setBalances(
|
|
290
|
+
this.setBalances(swapBalances);
|
|
292
291
|
},
|
|
293
292
|
|
|
294
|
-
getFilteredPopularTokens() {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
293
|
+
getFilteredPopularTokens(balances?: SwapTokenWithBalance[]) {
|
|
294
|
+
if (!balances) {
|
|
295
|
+
return state.popularTokens;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
return state.popularTokens?.filter(token => !balances.some(t => t.address === token.address));
|
|
298
299
|
},
|
|
299
300
|
|
|
300
301
|
setSourceToken(sourceToken: SwapTokenWithBalance | undefined) {
|
|
@@ -318,26 +319,10 @@ export const SwapController = {
|
|
|
318
319
|
}
|
|
319
320
|
},
|
|
320
321
|
|
|
321
|
-
async
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
}
|
|
322
|
+
async getAddressPrice(address: CaipAddress) {
|
|
323
|
+
const [namespace, chain] = address.split(':');
|
|
324
|
+
const networkId: CaipNetworkId = `${namespace}:${chain}`;
|
|
325
325
|
|
|
326
|
-
state.initializing = true;
|
|
327
|
-
if (!state.initialized) {
|
|
328
|
-
try {
|
|
329
|
-
await this.fetchTokens();
|
|
330
|
-
state.initialized = true;
|
|
331
|
-
} catch (error) {
|
|
332
|
-
state.initialized = false;
|
|
333
|
-
SnackController.showError('Failed to initialize swap');
|
|
334
|
-
RouterController.goBack();
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
state.initializing = false;
|
|
338
|
-
},
|
|
339
|
-
|
|
340
|
-
async getAddressPrice(address: string) {
|
|
341
326
|
const existPrice = state.tokensPriceMap[address];
|
|
342
327
|
|
|
343
328
|
if (existPrice) {
|
|
@@ -346,7 +331,8 @@ export const SwapController = {
|
|
|
346
331
|
|
|
347
332
|
const response = await BlockchainApiController.fetchTokenPrice({
|
|
348
333
|
projectId: OptionsController.state.projectId,
|
|
349
|
-
addresses: [address]
|
|
334
|
+
addresses: [address],
|
|
335
|
+
caipNetworkId: networkId
|
|
350
336
|
});
|
|
351
337
|
const fungibles = response?.fungibles || [];
|
|
352
338
|
const allTokens = [...(state.tokens || []), ...(state.myTokensWithBalance || [])];
|
|
@@ -361,10 +347,13 @@ export const SwapController = {
|
|
|
361
347
|
|
|
362
348
|
async getNetworkTokenPrice() {
|
|
363
349
|
const { networkAddress } = this.getParams();
|
|
350
|
+
const [namespace, chain] = networkAddress.split(':');
|
|
351
|
+
const networkId: CaipNetworkId = `${namespace}:${chain}`;
|
|
364
352
|
|
|
365
353
|
const response = await BlockchainApiController.fetchTokenPrice({
|
|
366
354
|
projectId: OptionsController.state.projectId,
|
|
367
|
-
addresses: [networkAddress]
|
|
355
|
+
addresses: [networkAddress],
|
|
356
|
+
caipNetworkId: networkId
|
|
368
357
|
});
|
|
369
358
|
|
|
370
359
|
const token = response?.fungibles?.[0];
|
|
@@ -400,24 +389,11 @@ export const SwapController = {
|
|
|
400
389
|
},
|
|
401
390
|
|
|
402
391
|
setBalances(balances: SwapTokenWithBalance[]) {
|
|
403
|
-
|
|
404
|
-
const caipNetwork = NetworkController.state.caipNetwork;
|
|
405
|
-
|
|
406
|
-
if (!caipNetwork) {
|
|
407
|
-
return;
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
const networkToken = balances.find(token => token.address === networkAddress);
|
|
392
|
+
state.myTokensWithBalance = balances;
|
|
411
393
|
|
|
412
394
|
balances.forEach(token => {
|
|
413
395
|
state.tokensPriceMap[token.address] = token.price || 0;
|
|
414
396
|
});
|
|
415
|
-
|
|
416
|
-
state.myTokensWithBalance = balances.filter(token => token.address?.startsWith(caipNetwork.id));
|
|
417
|
-
|
|
418
|
-
state.networkBalanceInUSD = networkToken
|
|
419
|
-
? NumberUtil.multiply(networkToken.quantity.numeric, networkToken.price).toString()
|
|
420
|
-
: '0';
|
|
421
397
|
},
|
|
422
398
|
|
|
423
399
|
setToToken(toToken: SwapTokenWithBalance | undefined) {
|
|
@@ -439,7 +415,7 @@ export const SwapController = {
|
|
|
439
415
|
: '';
|
|
440
416
|
},
|
|
441
417
|
|
|
442
|
-
async setTokenPrice(address:
|
|
418
|
+
async setTokenPrice(address: CaipAddress, target: SwapInputTarget) {
|
|
443
419
|
let price = state.tokensPriceMap[address] || 0;
|
|
444
420
|
|
|
445
421
|
if (!price) {
|
|
@@ -464,12 +440,12 @@ export const SwapController = {
|
|
|
464
440
|
|
|
465
441
|
// -- Swap ---------------------------------------------- //
|
|
466
442
|
async swapTokens() {
|
|
467
|
-
const address =
|
|
443
|
+
const address = ConnectionsController.state.activeAddress;
|
|
468
444
|
const sourceToken = state.sourceToken;
|
|
469
445
|
const toToken = state.toToken;
|
|
470
446
|
const haveSourceTokenAmount = NumberUtil.bigNumber(state.sourceTokenAmount).isGreaterThan(0);
|
|
471
447
|
|
|
472
|
-
if (!toToken || !sourceToken || state.loadingPrices || !haveSourceTokenAmount) {
|
|
448
|
+
if (!toToken || !sourceToken || state.loadingPrices || !haveSourceTokenAmount || !address) {
|
|
473
449
|
return;
|
|
474
450
|
}
|
|
475
451
|
|
|
@@ -479,39 +455,45 @@ export const SwapController = {
|
|
|
479
455
|
.multipliedBy(10 ** sourceToken.decimals)
|
|
480
456
|
.integerValue();
|
|
481
457
|
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
458
|
+
try {
|
|
459
|
+
const quoteResponse = await BlockchainApiController.fetchSwapQuote({
|
|
460
|
+
userAddress: address,
|
|
461
|
+
projectId: OptionsController.state.projectId,
|
|
462
|
+
from: sourceToken.address,
|
|
463
|
+
to: toToken.address,
|
|
464
|
+
gasPrice: state.gasFee,
|
|
465
|
+
amount: amountDecimal.toString()
|
|
466
|
+
});
|
|
490
467
|
|
|
491
|
-
|
|
468
|
+
const quoteToAmount = quoteResponse?.quotes?.[0]?.toAmount;
|
|
492
469
|
|
|
493
|
-
|
|
470
|
+
if (!quoteToAmount) {
|
|
471
|
+
state.loadingQuote = false;
|
|
494
472
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
}
|
|
473
|
+
return;
|
|
474
|
+
}
|
|
498
475
|
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
476
|
+
const toTokenAmount = NumberUtil.bigNumber(quoteToAmount)
|
|
477
|
+
.dividedBy(10 ** toToken.decimals)
|
|
478
|
+
.toString();
|
|
502
479
|
|
|
503
|
-
|
|
480
|
+
this.setToTokenAmount(toTokenAmount);
|
|
504
481
|
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
482
|
+
const isInsufficientToken = this.hasInsufficientToken(
|
|
483
|
+
state.sourceTokenAmount,
|
|
484
|
+
sourceToken.address
|
|
485
|
+
);
|
|
509
486
|
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
487
|
+
if (isInsufficientToken) {
|
|
488
|
+
state.inputError = 'Insufficient balance';
|
|
489
|
+
} else {
|
|
490
|
+
state.inputError = undefined;
|
|
491
|
+
this.setTransactionDetails();
|
|
492
|
+
}
|
|
493
|
+
} catch (error) {
|
|
494
|
+
SnackController.showError('Failed to get swap quote');
|
|
495
|
+
} finally {
|
|
496
|
+
state.loadingQuote = false;
|
|
515
497
|
}
|
|
516
498
|
},
|
|
517
499
|
|
|
@@ -580,7 +562,7 @@ export const SwapController = {
|
|
|
580
562
|
if (!response) {
|
|
581
563
|
throw new Error('createAllowanceTransaction - No response from generateApproveCalldata');
|
|
582
564
|
}
|
|
583
|
-
const gasLimit = await
|
|
565
|
+
const gasLimit = await ConnectionsController.estimateGas({
|
|
584
566
|
address: fromAddress as `0x${string}`,
|
|
585
567
|
to: CoreHelperUtil.getPlainAddress(response.tx.to) as `0x${string}`,
|
|
586
568
|
data: response.tx.data
|
|
@@ -633,7 +615,7 @@ export const SwapController = {
|
|
|
633
615
|
return undefined;
|
|
634
616
|
}
|
|
635
617
|
|
|
636
|
-
const amount =
|
|
618
|
+
const amount = ConnectionsController.parseUnits(
|
|
637
619
|
sourceTokenAmount,
|
|
638
620
|
sourceToken.decimals
|
|
639
621
|
)?.toString();
|
|
@@ -683,42 +665,32 @@ export const SwapController = {
|
|
|
683
665
|
},
|
|
684
666
|
|
|
685
667
|
async sendTransactionForApproval(data: TransactionParams) {
|
|
686
|
-
const { fromAddress,
|
|
687
|
-
|
|
668
|
+
const { fromAddress, network } = this.getParams();
|
|
688
669
|
state.loadingApprovalTransaction = true;
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
if (isAuthConnector) {
|
|
692
|
-
RouterController.pushTransactionStack({
|
|
693
|
-
view: null,
|
|
694
|
-
goBack: true,
|
|
695
|
-
onSuccess() {
|
|
696
|
-
SnackController.showLoading(approveLimitMessage);
|
|
697
|
-
}
|
|
698
|
-
});
|
|
699
|
-
} else {
|
|
700
|
-
SnackController.showLoading(approveLimitMessage);
|
|
701
|
-
}
|
|
670
|
+
|
|
671
|
+
SnackController.showLoading('Approve limit increase in your wallet');
|
|
702
672
|
|
|
703
673
|
try {
|
|
704
|
-
await
|
|
674
|
+
await ConnectionsController.sendTransaction({
|
|
705
675
|
address: fromAddress as `0x${string}`,
|
|
706
676
|
to: data.to as `0x${string}`,
|
|
707
677
|
data: data.data as `0x${string}`,
|
|
708
678
|
value: BigInt(data.value),
|
|
709
679
|
gasPrice: BigInt(data.gasPrice),
|
|
710
|
-
chainNamespace:
|
|
680
|
+
chainNamespace: ConnectionsController.state.activeNamespace,
|
|
681
|
+
network
|
|
711
682
|
});
|
|
712
683
|
|
|
713
684
|
await this.swapTokens();
|
|
714
685
|
await this.getTransaction();
|
|
715
686
|
state.approvalTransaction = undefined;
|
|
716
|
-
state.loadingApprovalTransaction = false;
|
|
717
687
|
} catch (err) {
|
|
718
688
|
const error = err as TransactionError;
|
|
719
689
|
state.transactionError = error?.shortMessage as unknown as string;
|
|
720
|
-
|
|
690
|
+
|
|
721
691
|
SnackController.showError(error?.shortMessage ?? 'Transaction error');
|
|
692
|
+
} finally {
|
|
693
|
+
state.loadingApprovalTransaction = false;
|
|
722
694
|
}
|
|
723
695
|
},
|
|
724
696
|
|
|
@@ -726,68 +698,53 @@ export const SwapController = {
|
|
|
726
698
|
if (!data) {
|
|
727
699
|
return undefined;
|
|
728
700
|
}
|
|
729
|
-
|
|
730
|
-
const { fromAddress, toTokenAmount, isAuthConnector } = this.getParams();
|
|
701
|
+
const { fromAddress, isAuthConnector, network } = this.getParams();
|
|
731
702
|
|
|
732
703
|
state.loadingTransaction = true;
|
|
733
704
|
|
|
734
|
-
const
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
const snackbarSuccessMessage = `Swapped ${state.sourceToken
|
|
738
|
-
?.symbol} to ${NumberUtil.formatNumberToLocalString(toTokenAmount, 3)} ${state.toToken
|
|
739
|
-
?.symbol}`;
|
|
740
|
-
|
|
741
|
-
if (isAuthConnector) {
|
|
742
|
-
RouterController.pushTransactionStack({
|
|
743
|
-
view: 'Account',
|
|
744
|
-
goBack: false,
|
|
745
|
-
onSuccess() {
|
|
746
|
-
SnackController.showLoading(snackbarPendingMessage);
|
|
747
|
-
SwapController.resetState();
|
|
748
|
-
}
|
|
749
|
-
});
|
|
750
|
-
} else {
|
|
751
|
-
SnackController.showLoading('Confirm transaction in your wallet');
|
|
752
|
-
}
|
|
705
|
+
const snackbarSuccessMessage = `Swapped ${state.sourceToken?.symbol} to ${state.toToken?.symbol}`;
|
|
706
|
+
|
|
707
|
+
SnackController.showLoading('Confirm transaction in your wallet');
|
|
753
708
|
|
|
754
709
|
try {
|
|
755
|
-
const forceUpdateAddresses = [state.sourceToken?.address, state.toToken?.address].
|
|
756
|
-
|
|
710
|
+
const forceUpdateAddresses = [state.sourceToken?.address, state.toToken?.address].filter(
|
|
711
|
+
Boolean
|
|
712
|
+
) as CaipAddress[];
|
|
713
|
+
|
|
714
|
+
const transactionHash = await ConnectionsController.sendTransaction({
|
|
757
715
|
address: fromAddress as `0x${string}`,
|
|
758
716
|
to: data.to as `0x${string}`,
|
|
759
717
|
data: data.data as `0x${string}`,
|
|
760
718
|
gas: data.gas,
|
|
761
719
|
gasPrice: BigInt(data.gasPrice),
|
|
762
720
|
value: data.value,
|
|
763
|
-
chainNamespace:
|
|
721
|
+
chainNamespace: ConnectionsController.state.activeNamespace,
|
|
722
|
+
network
|
|
764
723
|
});
|
|
765
724
|
|
|
766
725
|
state.loadingTransaction = false;
|
|
767
|
-
|
|
726
|
+
|
|
727
|
+
SnackController.showSuccess(snackbarSuccessMessage, true);
|
|
768
728
|
EventsController.sendEvent({
|
|
769
729
|
type: 'track',
|
|
770
730
|
event: 'SWAP_SUCCESS',
|
|
771
731
|
properties: {
|
|
772
|
-
network:
|
|
732
|
+
network: ConnectionsController.state.activeNetwork?.caipNetworkId || '',
|
|
773
733
|
swapFromToken: this.state.sourceToken?.symbol || '',
|
|
774
734
|
swapToToken: this.state.toToken?.symbol || '',
|
|
775
735
|
swapFromAmount: this.state.sourceTokenAmount || '',
|
|
776
736
|
swapToAmount: this.state.toTokenAmount || '',
|
|
777
|
-
isSmartAccount:
|
|
737
|
+
isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
|
|
778
738
|
}
|
|
779
739
|
});
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
if (!isAuthConnector) {
|
|
783
|
-
RouterController.replace('AccountDefault');
|
|
784
|
-
}
|
|
785
|
-
|
|
740
|
+
RouterController.replace(isAuthConnector ? 'Account' : 'AccountDefault');
|
|
741
|
+
SwapController.clearTokens();
|
|
786
742
|
SwapController.getMyTokensWithBalance(forceUpdateAddresses);
|
|
787
|
-
AccountController.fetchTokenBalance();
|
|
788
743
|
|
|
789
744
|
setTimeout(() => {
|
|
790
|
-
|
|
745
|
+
if (ConnectionsController.state.activeAddress) {
|
|
746
|
+
TransactionsController.fetchTransactions(ConnectionsController.state.activeAddress, true);
|
|
747
|
+
}
|
|
791
748
|
}, 5000);
|
|
792
749
|
|
|
793
750
|
return transactionHash;
|
|
@@ -801,12 +758,12 @@ export const SwapController = {
|
|
|
801
758
|
event: 'SWAP_ERROR',
|
|
802
759
|
properties: {
|
|
803
760
|
message: error?.shortMessage ?? error?.message ?? 'Unknown',
|
|
804
|
-
network:
|
|
761
|
+
network: ConnectionsController.state.activeNetwork?.caipNetworkId || '',
|
|
805
762
|
swapFromToken: this.state.sourceToken?.symbol || '',
|
|
806
763
|
swapToToken: this.state.toToken?.symbol || '',
|
|
807
764
|
swapFromAmount: this.state.sourceTokenAmount || '',
|
|
808
765
|
swapToAmount: this.state.toTokenAmount || '',
|
|
809
|
-
isSmartAccount:
|
|
766
|
+
isSmartAccount: ConnectionsController.state.accountType === 'smartAccount'
|
|
810
767
|
}
|
|
811
768
|
});
|
|
812
769
|
|
|
@@ -814,8 +771,45 @@ export const SwapController = {
|
|
|
814
771
|
}
|
|
815
772
|
},
|
|
816
773
|
|
|
774
|
+
clearTransactionLoaders() {
|
|
775
|
+
state.loadingApprovalTransaction = false;
|
|
776
|
+
state.loadingBuildTransaction = false;
|
|
777
|
+
state.loadingTransaction = false;
|
|
778
|
+
},
|
|
779
|
+
|
|
780
|
+
clearTokens() {
|
|
781
|
+
state.sourceToken = initialState.sourceToken;
|
|
782
|
+
state.sourceTokenAmount = initialState.sourceTokenAmount;
|
|
783
|
+
state.sourceTokenPriceInUSD = initialState.sourceTokenPriceInUSD;
|
|
784
|
+
state.toToken = initialState.toToken;
|
|
785
|
+
state.toTokenAmount = initialState.toTokenAmount;
|
|
786
|
+
state.toTokenPriceInUSD = initialState.toTokenPriceInUSD;
|
|
787
|
+
state.inputError = initialState.inputError;
|
|
788
|
+
state.loadingApprovalTransaction = initialState.loadingApprovalTransaction;
|
|
789
|
+
state.loadingBuildTransaction = initialState.loadingBuildTransaction;
|
|
790
|
+
state.loadingTransaction = initialState.loadingTransaction;
|
|
791
|
+
state.fetchError = initialState.fetchError;
|
|
792
|
+
state.transactionError = initialState.transactionError;
|
|
793
|
+
state.swapTransaction = initialState.swapTransaction;
|
|
794
|
+
state.approvalTransaction = initialState.approvalTransaction;
|
|
795
|
+
},
|
|
796
|
+
|
|
797
|
+
resetState() {
|
|
798
|
+
this.clearTokens();
|
|
799
|
+
state.myTokensWithBalance = initialState.myTokensWithBalance;
|
|
800
|
+
state.tokensPriceMap = initialState.tokensPriceMap;
|
|
801
|
+
state.networkPrice = initialState.networkPrice;
|
|
802
|
+
state.networkTokenSymbol = initialState.networkTokenSymbol;
|
|
803
|
+
},
|
|
804
|
+
|
|
817
805
|
// -- Checks -------------------------------------------- //
|
|
818
806
|
hasInsufficientToken(sourceTokenAmount: string, sourceTokenAddress: string) {
|
|
807
|
+
const { balances } = ConnectionsController.state;
|
|
808
|
+
const networkToken = balances?.find(t => t.address === undefined);
|
|
809
|
+
const networkBalanceInUSD = networkToken
|
|
810
|
+
? NumberUtil.multiply(networkToken.quantity?.numeric ?? '0', networkToken.price).toString()
|
|
811
|
+
: '0';
|
|
812
|
+
|
|
819
813
|
const isInsufficientSourceTokenForSwap = SwapCalculationUtil.isInsufficientSourceTokenForSwap(
|
|
820
814
|
sourceTokenAmount,
|
|
821
815
|
sourceTokenAddress,
|
|
@@ -823,12 +817,12 @@ export const SwapController = {
|
|
|
823
817
|
);
|
|
824
818
|
|
|
825
819
|
let insufficientNetworkTokenForGas = true;
|
|
826
|
-
if (
|
|
820
|
+
if (ConnectionsController.state.accountType === 'smartAccount') {
|
|
827
821
|
// Smart Accounts may pay gas in any ERC20 token
|
|
828
822
|
insufficientNetworkTokenForGas = false;
|
|
829
823
|
} else {
|
|
830
824
|
insufficientNetworkTokenForGas = SwapCalculationUtil.isInsufficientNetworkTokenForGas(
|
|
831
|
-
|
|
825
|
+
networkBalanceInUSD,
|
|
832
826
|
state.gasPriceInUSD
|
|
833
827
|
);
|
|
834
828
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { Appearance } from 'react-native';
|
|
1
2
|
import { proxy, subscribe as sub } from 'valtio';
|
|
2
3
|
import type { ThemeMode, ThemeVariables } from '@reown/appkit-common-react-native';
|
|
3
4
|
|
|
4
5
|
// -- Types --------------------------------------------- //
|
|
5
6
|
export interface ThemeControllerState {
|
|
6
7
|
themeMode?: ThemeMode;
|
|
7
|
-
themeVariables
|
|
8
|
+
themeVariables?: ThemeVariables;
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
// -- State --------------------------------------------- //
|
|
@@ -22,10 +23,18 @@ export const ThemeController = {
|
|
|
22
23
|
},
|
|
23
24
|
|
|
24
25
|
setThemeMode(themeMode: ThemeControllerState['themeMode']) {
|
|
25
|
-
|
|
26
|
+
if (!themeMode) {
|
|
27
|
+
state.themeMode = Appearance.getColorScheme() as ThemeMode;
|
|
28
|
+
} else {
|
|
29
|
+
state.themeMode = themeMode;
|
|
30
|
+
}
|
|
26
31
|
},
|
|
27
32
|
|
|
28
33
|
setThemeVariables(themeVariables: ThemeControllerState['themeVariables']) {
|
|
34
|
+
if (!themeVariables) {
|
|
35
|
+
state.themeVariables = {};
|
|
36
|
+
}
|
|
37
|
+
|
|
29
38
|
state.themeVariables = { ...state.themeVariables, ...themeVariables };
|
|
30
39
|
}
|
|
31
40
|
};
|