@reown/appkit-core-react-native 0.0.0-feat-multi-siwe-20250623183423 → 0.0.0-feat-onramp-20250625192635
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 +11 -11
- package/lib/commonjs/controllers/ApiController.js.map +1 -1
- package/lib/commonjs/controllers/BlockchainApiController.js +24 -102
- package/lib/commonjs/controllers/BlockchainApiController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectionController.js +1 -7
- package/lib/commonjs/controllers/ConnectionController.js.map +1 -1
- package/lib/commonjs/controllers/ConnectorController.js +0 -1
- package/lib/commonjs/controllers/ConnectorController.js.map +1 -1
- package/lib/commonjs/controllers/ModalController.js.map +1 -1
- package/lib/commonjs/controllers/OnRampController.js +41 -18
- package/lib/commonjs/controllers/OnRampController.js.map +1 -1
- package/lib/commonjs/controllers/OptionsController.js +3 -8
- package/lib/commonjs/controllers/OptionsController.js.map +1 -1
- package/lib/commonjs/controllers/RouterController.js.map +1 -1
- package/lib/commonjs/controllers/SendController.js +5 -5
- package/lib/commonjs/controllers/SendController.js.map +1 -1
- package/lib/commonjs/controllers/SwapController.js +40 -51
- package/lib/commonjs/controllers/SwapController.js.map +1 -1
- package/lib/commonjs/controllers/ThemeController.js +1 -9
- package/lib/commonjs/controllers/ThemeController.js.map +1 -1
- package/lib/commonjs/controllers/TransactionsController.js +2 -2
- package/lib/commonjs/controllers/TransactionsController.js.map +1 -1
- package/lib/commonjs/index.js +3 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/utils/AssetUtil.js +6 -5
- package/lib/commonjs/utils/AssetUtil.js.map +1 -1
- package/lib/commonjs/utils/ConnectionUtil.js +33 -0
- package/lib/commonjs/utils/ConnectionUtil.js.map +1 -0
- package/lib/commonjs/utils/ConstantsUtil.js +7 -537
- package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
- package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
- package/lib/commonjs/utils/StorageUtil.js +33 -67
- package/lib/commonjs/utils/StorageUtil.js.map +1 -1
- package/lib/commonjs/utils/SwapApiUtil.js +10 -19
- package/lib/commonjs/utils/SwapApiUtil.js.map +1 -1
- package/lib/module/controllers/ApiController.js +11 -11
- package/lib/module/controllers/ApiController.js.map +1 -1
- package/lib/module/controllers/BlockchainApiController.js +24 -102
- package/lib/module/controllers/BlockchainApiController.js.map +1 -1
- package/lib/module/controllers/ConnectionController.js +1 -7
- package/lib/module/controllers/ConnectionController.js.map +1 -1
- package/lib/module/controllers/ConnectorController.js +0 -1
- package/lib/module/controllers/ConnectorController.js.map +1 -1
- package/lib/module/controllers/ModalController.js.map +1 -1
- package/lib/module/controllers/OnRampController.js +41 -18
- package/lib/module/controllers/OnRampController.js.map +1 -1
- package/lib/module/controllers/OptionsController.js +3 -8
- package/lib/module/controllers/OptionsController.js.map +1 -1
- package/lib/module/controllers/RouterController.js.map +1 -1
- package/lib/module/controllers/SendController.js +5 -5
- package/lib/module/controllers/SendController.js.map +1 -1
- package/lib/module/controllers/SwapController.js +40 -51
- package/lib/module/controllers/SwapController.js.map +1 -1
- package/lib/module/controllers/ThemeController.js +1 -9
- package/lib/module/controllers/ThemeController.js.map +1 -1
- package/lib/module/controllers/TransactionsController.js +2 -2
- package/lib/module/controllers/TransactionsController.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/AssetUtil.js +6 -5
- package/lib/module/utils/AssetUtil.js.map +1 -1
- package/lib/module/utils/ConnectionUtil.js +27 -0
- package/lib/module/utils/ConnectionUtil.js.map +1 -0
- package/lib/module/utils/ConstantsUtil.js +7 -537
- package/lib/module/utils/ConstantsUtil.js.map +1 -1
- package/lib/module/utils/CoreHelperUtil.js.map +1 -1
- package/lib/module/utils/StorageUtil.js +33 -67
- package/lib/module/utils/StorageUtil.js.map +1 -1
- package/lib/module/utils/SwapApiUtil.js +10 -19
- package/lib/module/utils/SwapApiUtil.js.map +1 -1
- package/lib/typescript/controllers/AccountController.d.ts +2 -2
- package/lib/typescript/controllers/AccountController.d.ts.map +1 -1
- package/lib/typescript/controllers/ApiController.d.ts +1 -1
- package/lib/typescript/controllers/ApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/BlockchainApiController.d.ts +3 -15
- package/lib/typescript/controllers/BlockchainApiController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectionController.d.ts +0 -2
- package/lib/typescript/controllers/ConnectionController.d.ts.map +1 -1
- package/lib/typescript/controllers/ConnectorController.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/NetworkController.d.ts +1 -1
- package/lib/typescript/controllers/NetworkController.d.ts.map +1 -1
- package/lib/typescript/controllers/OnRampController.d.ts +3 -1
- package/lib/typescript/controllers/OnRampController.d.ts.map +1 -1
- package/lib/typescript/controllers/OptionsController.d.ts +2 -5
- 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 +1 -2
- package/lib/typescript/controllers/RouterController.d.ts.map +1 -1
- package/lib/typescript/controllers/SwapController.d.ts +1 -1
- 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/index.d.ts +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/utils/AssetUtil.d.ts +2 -2
- package/lib/typescript/utils/AssetUtil.d.ts.map +1 -1
- package/lib/typescript/utils/ConnectionUtil.d.ts +4 -0
- package/lib/typescript/utils/ConnectionUtil.d.ts.map +1 -0
- package/lib/typescript/utils/ConstantsUtil.d.ts +1 -421
- package/lib/typescript/utils/ConstantsUtil.d.ts.map +1 -1
- package/lib/typescript/utils/CoreHelperUtil.d.ts +2 -2
- package/lib/typescript/utils/CoreHelperUtil.d.ts.map +1 -1
- package/lib/typescript/utils/FetchUtil.d.ts +1 -1
- package/lib/typescript/utils/FetchUtil.d.ts.map +1 -1
- package/lib/typescript/utils/NetworkUtil.d.ts +1 -1
- package/lib/typescript/utils/NetworkUtil.d.ts.map +1 -1
- package/lib/typescript/utils/StorageUtil.d.ts +4 -14
- package/lib/typescript/utils/StorageUtil.d.ts.map +1 -1
- package/lib/typescript/utils/SwapApiUtil.d.ts.map +1 -1
- package/lib/typescript/utils/TypeUtil.d.ts +32 -5
- package/lib/typescript/utils/TypeUtil.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/controllers/AccountController.ts +2 -2
- package/src/controllers/ApiController.ts +7 -12
- package/src/controllers/BlockchainApiController.ts +27 -135
- package/src/controllers/ConnectionController.ts +2 -10
- package/src/controllers/ConnectorController.ts +0 -1
- package/src/controllers/ModalController.ts +1 -2
- package/src/controllers/NetworkController.ts +1 -1
- package/src/controllers/OnRampController.ts +63 -27
- package/src/controllers/OptionsController.ts +13 -14
- package/src/controllers/PublicStateController.ts +1 -1
- package/src/controllers/RouterController.ts +1 -2
- package/src/controllers/SendController.ts +5 -5
- package/src/controllers/SwapController.ts +48 -58
- package/src/controllers/ThemeController.ts +2 -11
- package/src/controllers/TransactionsController.ts +2 -2
- package/src/index.ts +1 -5
- package/src/utils/AssetUtil.ts +7 -5
- package/src/utils/ConnectionUtil.ts +27 -0
- package/src/utils/ConstantsUtil.ts +7 -542
- package/src/utils/CoreHelperUtil.ts +3 -8
- package/src/utils/FetchUtil.ts +1 -1
- package/src/utils/NetworkUtil.ts +1 -1
- package/src/utils/StorageUtil.ts +39 -82
- package/src/utils/SwapApiUtil.ts +10 -22
- package/src/utils/TypeUtil.ts +39 -8
- package/lib/commonjs/controllers/ConnectionsController.js +0 -215
- package/lib/commonjs/controllers/ConnectionsController.js.map +0 -1
- package/lib/module/controllers/ConnectionsController.js +0 -210
- package/lib/module/controllers/ConnectionsController.js.map +0 -1
- package/lib/typescript/controllers/ConnectionsController.d.ts +0 -44
- package/lib/typescript/controllers/ConnectionsController.d.ts.map +0 -1
- package/src/controllers/ConnectionsController.ts +0 -305
package/src/utils/StorageUtil.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
3
3
|
import type {
|
|
4
4
|
OnRampCountry,
|
|
5
|
+
OnRampCountryDefaults,
|
|
5
6
|
OnRampFiatCurrency,
|
|
6
7
|
OnRampFiatLimit,
|
|
7
8
|
OnRampServiceProvider,
|
|
@@ -10,9 +11,7 @@ import type {
|
|
|
10
11
|
import {
|
|
11
12
|
DateUtil,
|
|
12
13
|
type SocialProvider,
|
|
13
|
-
type
|
|
14
|
-
type ConnectorType,
|
|
15
|
-
type ChainNamespace
|
|
14
|
+
type ConnectorType
|
|
16
15
|
} from '@reown/appkit-common-react-native';
|
|
17
16
|
|
|
18
17
|
// -- Helpers -----------------------------------------------------------------
|
|
@@ -20,16 +19,14 @@ const WC_DEEPLINK = 'WALLETCONNECT_DEEPLINK_CHOICE';
|
|
|
20
19
|
const RECENT_WALLET = '@w3m/recent';
|
|
21
20
|
const CONNECTED_WALLET_IMAGE_URL = '@w3m/connected_wallet_image_url';
|
|
22
21
|
const CONNECTED_CONNECTOR = '@w3m/connected_connector';
|
|
23
|
-
const CONNECTED_CONNECTORS = '@appkit/connected_connectors';
|
|
24
22
|
const CONNECTED_SOCIAL = '@appkit/connected_social';
|
|
25
23
|
const ONRAMP_PREFERRED_COUNTRY = '@appkit/onramp_preferred_country';
|
|
26
24
|
const ONRAMP_COUNTRIES = '@appkit/onramp_countries';
|
|
25
|
+
const ONRAMP_COUNTRIES_DEFAULTS = '@appkit/onramp_countries_defaults';
|
|
27
26
|
const ONRAMP_SERVICE_PROVIDERS = '@appkit/onramp_service_providers';
|
|
28
27
|
const ONRAMP_FIAT_LIMITS = '@appkit/onramp_fiat_limits';
|
|
29
28
|
const ONRAMP_FIAT_CURRENCIES = '@appkit/onramp_fiat_currencies';
|
|
30
29
|
const ONRAMP_PREFERRED_FIAT_CURRENCY = '@appkit/onramp_preferred_fiat_currency';
|
|
31
|
-
const ACTIVE_NAMESPACE = '@appkit/active_namespace';
|
|
32
|
-
|
|
33
30
|
// -- Utility -----------------------------------------------------------------
|
|
34
31
|
export const StorageUtil = {
|
|
35
32
|
setWalletConnectDeepLink({ href, name }: { href: string; name: string }) {
|
|
@@ -104,7 +101,6 @@ export const StorageUtil = {
|
|
|
104
101
|
return [];
|
|
105
102
|
},
|
|
106
103
|
|
|
107
|
-
//TODO: remove this
|
|
108
104
|
async setConnectedConnector(connectorType: ConnectorType) {
|
|
109
105
|
try {
|
|
110
106
|
await AsyncStorage.setItem(CONNECTED_CONNECTOR, JSON.stringify(connectorType));
|
|
@@ -133,47 +129,6 @@ export const StorageUtil = {
|
|
|
133
129
|
}
|
|
134
130
|
},
|
|
135
131
|
|
|
136
|
-
async setConnectedConnectors({
|
|
137
|
-
type,
|
|
138
|
-
namespaces
|
|
139
|
-
}: {
|
|
140
|
-
type: New_ConnectorType;
|
|
141
|
-
namespaces: string[];
|
|
142
|
-
}) {
|
|
143
|
-
try {
|
|
144
|
-
const currentConnectors = (await StorageUtil.getConnectedConnectors()) || [];
|
|
145
|
-
// Only add if it doesn't exist already
|
|
146
|
-
if (!currentConnectors.some(c => c.type === type)) {
|
|
147
|
-
const updatedConnectors = [...currentConnectors, { type, namespaces }];
|
|
148
|
-
await AsyncStorage.setItem(CONNECTED_CONNECTORS, JSON.stringify(updatedConnectors));
|
|
149
|
-
}
|
|
150
|
-
} catch {
|
|
151
|
-
console.info('Unable to set Connected Connector');
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
|
|
155
|
-
async getConnectedConnectors(): Promise<{ type: New_ConnectorType; namespaces: string[] }[]> {
|
|
156
|
-
try {
|
|
157
|
-
const connectors = await AsyncStorage.getItem(CONNECTED_CONNECTORS);
|
|
158
|
-
|
|
159
|
-
return connectors ? JSON.parse(connectors) : [];
|
|
160
|
-
} catch {
|
|
161
|
-
console.info('Unable to get Connected Connector');
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
return [];
|
|
165
|
-
},
|
|
166
|
-
|
|
167
|
-
async removeConnectedConnectors(type: New_ConnectorType) {
|
|
168
|
-
try {
|
|
169
|
-
const currentConnectors = await StorageUtil.getConnectedConnectors();
|
|
170
|
-
const updatedConnectors = currentConnectors.filter(c => c.type !== type);
|
|
171
|
-
await AsyncStorage.setItem(CONNECTED_CONNECTORS, JSON.stringify(updatedConnectors));
|
|
172
|
-
} catch {
|
|
173
|
-
console.info('Unable to remove Connected Connector');
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
|
|
177
132
|
async setConnectedWalletImageUrl(url: string) {
|
|
178
133
|
try {
|
|
179
134
|
await AsyncStorage.setItem(CONNECTED_WALLET_IMAGE_URL, url);
|
|
@@ -288,6 +243,42 @@ export const StorageUtil = {
|
|
|
288
243
|
return [];
|
|
289
244
|
},
|
|
290
245
|
|
|
246
|
+
async setOnRampCountriesDefaults(countriesDefaults: OnRampCountryDefaults[]) {
|
|
247
|
+
try {
|
|
248
|
+
const timestamp = Date.now();
|
|
249
|
+
|
|
250
|
+
await AsyncStorage.setItem(
|
|
251
|
+
ONRAMP_COUNTRIES_DEFAULTS,
|
|
252
|
+
JSON.stringify({ data: countriesDefaults, timestamp })
|
|
253
|
+
);
|
|
254
|
+
} catch {
|
|
255
|
+
console.info('Unable to set OnRamp Countries Defaults');
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
|
|
259
|
+
async getOnRampCountriesDefaults() {
|
|
260
|
+
try {
|
|
261
|
+
const result = await AsyncStorage.getItem(ONRAMP_COUNTRIES_DEFAULTS);
|
|
262
|
+
|
|
263
|
+
if (!result) {
|
|
264
|
+
return [];
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
const { data, timestamp } = JSON.parse(result);
|
|
268
|
+
|
|
269
|
+
// Cache for 1 week
|
|
270
|
+
if (timestamp && DateUtil.isMoreThanOneWeekAgo(timestamp)) {
|
|
271
|
+
return [];
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
return data ? (data as OnRampCountryDefaults[]) : [];
|
|
275
|
+
} catch {
|
|
276
|
+
console.info('Unable to get OnRamp Countries Defaults');
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return [];
|
|
280
|
+
},
|
|
281
|
+
|
|
291
282
|
async setOnRampServiceProviders(serviceProviders: OnRampServiceProvider[]) {
|
|
292
283
|
try {
|
|
293
284
|
const timestamp = Date.now();
|
|
@@ -395,39 +386,5 @@ export const StorageUtil = {
|
|
|
395
386
|
}
|
|
396
387
|
|
|
397
388
|
return [];
|
|
398
|
-
},
|
|
399
|
-
|
|
400
|
-
async setActiveNamespace(namespace?: ChainNamespace) {
|
|
401
|
-
try {
|
|
402
|
-
if (!namespace) {
|
|
403
|
-
await AsyncStorage.removeItem(ACTIVE_NAMESPACE);
|
|
404
|
-
|
|
405
|
-
return;
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
await AsyncStorage.setItem(ACTIVE_NAMESPACE, namespace);
|
|
409
|
-
} catch {
|
|
410
|
-
console.info('Unable to set Active Namespace');
|
|
411
|
-
}
|
|
412
|
-
},
|
|
413
|
-
|
|
414
|
-
async getActiveNamespace() {
|
|
415
|
-
try {
|
|
416
|
-
const namespace = (await AsyncStorage.getItem(ACTIVE_NAMESPACE)) as ChainNamespace;
|
|
417
|
-
|
|
418
|
-
return namespace ?? undefined;
|
|
419
|
-
} catch (err) {
|
|
420
|
-
console.info('Unable to get Active Namespace');
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
return undefined;
|
|
424
|
-
},
|
|
425
|
-
|
|
426
|
-
async removeActiveNamespace() {
|
|
427
|
-
try {
|
|
428
|
-
await AsyncStorage.removeItem(ACTIVE_NAMESPACE);
|
|
429
|
-
} catch {
|
|
430
|
-
console.info('Unable to remove Active Namespace');
|
|
431
|
-
}
|
|
432
389
|
}
|
|
433
390
|
};
|
package/src/utils/SwapApiUtil.ts
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import { BlockchainApiController } from '../controllers/BlockchainApiController';
|
|
2
2
|
import { OptionsController } from '../controllers/OptionsController';
|
|
3
|
+
import { NetworkController } from '../controllers/NetworkController';
|
|
3
4
|
import type {
|
|
4
5
|
BlockchainApiBalanceResponse,
|
|
5
6
|
BlockchainApiSwapAllowanceRequest,
|
|
6
7
|
SwapTokenWithBalance
|
|
7
8
|
} from './TypeUtil';
|
|
8
9
|
import { AccountController } from '../controllers/AccountController';
|
|
9
|
-
import {
|
|
10
|
-
import type { CaipNetworkId } from '@reown/appkit-common-react-native';
|
|
11
|
-
import { ConstantsUtil } from './ConstantsUtil';
|
|
10
|
+
import { ConnectionController } from '../controllers/ConnectionController';
|
|
12
11
|
|
|
13
12
|
export const SwapApiUtil = {
|
|
14
13
|
async getTokenList() {
|
|
15
|
-
const chainId: CaipNetworkId =
|
|
16
|
-
ConnectionsController.state.activeNetwork?.caipNetworkId ?? 'eip155:1';
|
|
17
14
|
const response = await BlockchainApiController.fetchSwapTokens({
|
|
18
15
|
projectId: OptionsController.state.projectId,
|
|
19
|
-
chainId
|
|
16
|
+
chainId: NetworkController.state.caipNetwork?.id
|
|
20
17
|
});
|
|
21
18
|
const tokens =
|
|
22
19
|
response?.tokens?.map(
|
|
@@ -55,7 +52,7 @@ export const SwapApiUtil = {
|
|
|
55
52
|
|
|
56
53
|
if (response?.allowance && sourceTokenAmount && sourceTokenDecimals) {
|
|
57
54
|
const parsedValue =
|
|
58
|
-
|
|
55
|
+
ConnectionController.parseUnits(sourceTokenAmount, sourceTokenDecimals) || 0;
|
|
59
56
|
const hasAllowance = BigInt(response.allowance) >= parsedValue;
|
|
60
57
|
|
|
61
58
|
return hasAllowance;
|
|
@@ -65,18 +62,14 @@ export const SwapApiUtil = {
|
|
|
65
62
|
},
|
|
66
63
|
|
|
67
64
|
async getMyTokensWithBalance(forceUpdate?: string) {
|
|
68
|
-
const
|
|
69
|
-
const
|
|
65
|
+
const address = AccountController.state.address;
|
|
66
|
+
const chainId = NetworkController.state.caipNetwork?.id;
|
|
70
67
|
|
|
71
68
|
if (!address) {
|
|
72
69
|
return [];
|
|
73
70
|
}
|
|
74
71
|
|
|
75
|
-
const response = await BlockchainApiController.getBalance(
|
|
76
|
-
address,
|
|
77
|
-
network?.caipNetworkId,
|
|
78
|
-
forceUpdate
|
|
79
|
-
);
|
|
72
|
+
const response = await BlockchainApiController.getBalance(address, chainId, forceUpdate);
|
|
80
73
|
const balances = response?.balances.filter(balance => balance.quantity.decimals !== '0');
|
|
81
74
|
|
|
82
75
|
AccountController.setTokenBalance(balances);
|
|
@@ -85,17 +78,12 @@ export const SwapApiUtil = {
|
|
|
85
78
|
},
|
|
86
79
|
|
|
87
80
|
mapBalancesToSwapTokens(balances?: BlockchainApiBalanceResponse['balances']) {
|
|
88
|
-
const { activeNamespace, activeCaipNetworkId } = ConnectionsController.state;
|
|
89
|
-
const address = activeNamespace
|
|
90
|
-
? ConstantsUtil.NATIVE_TOKEN_ADDRESS[activeNamespace]
|
|
91
|
-
: undefined;
|
|
92
|
-
|
|
93
81
|
return (
|
|
94
82
|
balances?.map(
|
|
95
83
|
token =>
|
|
96
84
|
({
|
|
97
85
|
...token,
|
|
98
|
-
address: token?.address
|
|
86
|
+
address: token?.address || NetworkController.getActiveNetworkTokenAddress(),
|
|
99
87
|
decimals: parseInt(token.quantity.decimals, 10),
|
|
100
88
|
logoUri: token.iconUrl,
|
|
101
89
|
eip2612: false
|
|
@@ -106,7 +94,7 @@ export const SwapApiUtil = {
|
|
|
106
94
|
|
|
107
95
|
async fetchGasPrice() {
|
|
108
96
|
const projectId = OptionsController.state.projectId;
|
|
109
|
-
const caipNetwork =
|
|
97
|
+
const caipNetwork = NetworkController.state.caipNetwork;
|
|
110
98
|
|
|
111
99
|
if (!caipNetwork) {
|
|
112
100
|
return null;
|
|
@@ -114,7 +102,7 @@ export const SwapApiUtil = {
|
|
|
114
102
|
|
|
115
103
|
return await BlockchainApiController.fetchGasPrice({
|
|
116
104
|
projectId,
|
|
117
|
-
chainId: caipNetwork.
|
|
105
|
+
chainId: caipNetwork.id
|
|
118
106
|
});
|
|
119
107
|
}
|
|
120
108
|
};
|
package/src/utils/TypeUtil.ts
CHANGED
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
import { type EventEmitter } from 'events';
|
|
2
|
-
import type { CaipAddress, CaipNetworkId } from '@reown/appkit-common-react-native';
|
|
3
|
-
|
|
4
2
|
import type {
|
|
5
3
|
Balance,
|
|
6
4
|
SocialProvider,
|
|
7
5
|
ThemeMode,
|
|
8
6
|
Transaction,
|
|
9
|
-
ConnectorType
|
|
10
|
-
Metadata
|
|
7
|
+
ConnectorType
|
|
11
8
|
} from '@reown/appkit-common-react-native';
|
|
12
|
-
|
|
13
9
|
import { OnRampErrorType } from './ConstantsUtil';
|
|
14
10
|
|
|
15
11
|
export interface BaseError {
|
|
16
12
|
message?: string;
|
|
17
13
|
}
|
|
18
14
|
|
|
15
|
+
export type CaipAddress = `${string}:${string}:${string}`;
|
|
16
|
+
|
|
17
|
+
export type CaipNetworkId = `${string}:${string}`;
|
|
18
|
+
|
|
19
|
+
export interface CaipNetwork {
|
|
20
|
+
id: CaipNetworkId;
|
|
21
|
+
name?: string;
|
|
22
|
+
imageId?: string;
|
|
23
|
+
imageUrl?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
19
26
|
export type ConnectedWalletInfo =
|
|
20
27
|
| {
|
|
21
28
|
name?: string;
|
|
@@ -172,7 +179,6 @@ export interface BlockchainApiTransactionsRequest {
|
|
|
172
179
|
onramp?: 'coinbase';
|
|
173
180
|
signal?: AbortSignal;
|
|
174
181
|
cache?: RequestCache;
|
|
175
|
-
chainId?: CaipNetworkId;
|
|
176
182
|
}
|
|
177
183
|
|
|
178
184
|
export interface BlockchainApiTransactionsResponse {
|
|
@@ -313,7 +319,7 @@ export interface BlockchainApiSwapTokensRequest {
|
|
|
313
319
|
|
|
314
320
|
export interface BlockchainApiOnRampQuotesRequest {
|
|
315
321
|
countryCode: string;
|
|
316
|
-
paymentMethodType
|
|
322
|
+
paymentMethodType?: string;
|
|
317
323
|
destinationCurrencyCode: string;
|
|
318
324
|
sourceAmount: number;
|
|
319
325
|
sourceCurrencyCode: string;
|
|
@@ -340,6 +346,25 @@ export type BlockchainApiOnRampWidgetResponse = {
|
|
|
340
346
|
};
|
|
341
347
|
|
|
342
348
|
// -- OptionsController Types ---------------------------------------------------
|
|
349
|
+
export interface Token {
|
|
350
|
+
address: string;
|
|
351
|
+
image?: string;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
export type Tokens = Record<CaipNetworkId, Token>;
|
|
355
|
+
|
|
356
|
+
export type Metadata = {
|
|
357
|
+
name: string;
|
|
358
|
+
description: string;
|
|
359
|
+
url: string;
|
|
360
|
+
icons: string[];
|
|
361
|
+
redirect?: {
|
|
362
|
+
native?: string;
|
|
363
|
+
universal?: string;
|
|
364
|
+
linkMode?: boolean;
|
|
365
|
+
};
|
|
366
|
+
};
|
|
367
|
+
|
|
343
368
|
export type CustomWallet = Pick<
|
|
344
369
|
WcWallet,
|
|
345
370
|
| 'id'
|
|
@@ -436,7 +461,7 @@ export type Event =
|
|
|
436
461
|
type: 'track';
|
|
437
462
|
event: 'SWITCH_NETWORK';
|
|
438
463
|
properties: {
|
|
439
|
-
network:
|
|
464
|
+
network: string;
|
|
440
465
|
};
|
|
441
466
|
}
|
|
442
467
|
| {
|
|
@@ -835,6 +860,12 @@ export type OnRampCountry = {
|
|
|
835
860
|
name: string;
|
|
836
861
|
};
|
|
837
862
|
|
|
863
|
+
export type OnRampCountryDefaults = {
|
|
864
|
+
countryCode: string;
|
|
865
|
+
defaultCurrencyCode: string;
|
|
866
|
+
defaultPaymentMethods: string[];
|
|
867
|
+
};
|
|
868
|
+
|
|
838
869
|
export type OnRampFiatCurrency = {
|
|
839
870
|
currencyCode: string;
|
|
840
871
|
name: string;
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ConnectionsController = void 0;
|
|
7
|
-
var _valtio = require("valtio");
|
|
8
|
-
var _utils = require("valtio/utils");
|
|
9
|
-
var _appkitCommonReactNative = require("@reown/appkit-common-react-native");
|
|
10
|
-
var _StorageUtil = require("../utils/StorageUtil");
|
|
11
|
-
// -- Types --------------------------------------------- //
|
|
12
|
-
|
|
13
|
-
//TODO: balance could be elsewhere
|
|
14
|
-
|
|
15
|
-
// -- State --------------------------------------------- //
|
|
16
|
-
const baseState = (0, _valtio.proxy)({
|
|
17
|
-
activeNamespace: undefined,
|
|
18
|
-
connections: new Map(),
|
|
19
|
-
networks: []
|
|
20
|
-
});
|
|
21
|
-
const derivedState = (0, _utils.derive)({
|
|
22
|
-
activeAddress: get => {
|
|
23
|
-
const snap = get(baseState);
|
|
24
|
-
if (!snap.activeNamespace) {
|
|
25
|
-
return undefined;
|
|
26
|
-
}
|
|
27
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
28
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
29
|
-
return undefined;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
//TODO: what happens if there are several accounts on the same chain?
|
|
33
|
-
const activeAccount = connection.accounts.find(account => account.startsWith(connection.caipNetwork));
|
|
34
|
-
return activeAccount;
|
|
35
|
-
},
|
|
36
|
-
activeBalance: get => {
|
|
37
|
-
const snap = get(baseState);
|
|
38
|
-
if (!snap.activeNamespace) return undefined;
|
|
39
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
40
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
41
|
-
return undefined;
|
|
42
|
-
}
|
|
43
|
-
const activeAccount = connection.accounts.find(account => account.startsWith(connection.caipNetwork));
|
|
44
|
-
if (!connection || !connection.balances || !activeAccount || Object.keys(connection.balances).length === 0) {
|
|
45
|
-
return undefined;
|
|
46
|
-
}
|
|
47
|
-
return connection.balances[activeAccount];
|
|
48
|
-
},
|
|
49
|
-
activeNetwork: get => {
|
|
50
|
-
const snap = get(baseState);
|
|
51
|
-
if (!snap.activeNamespace) return undefined;
|
|
52
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
53
|
-
if (!connection) return undefined;
|
|
54
|
-
return snap.networks.find(network => network.chainNamespace === snap.activeNamespace && network.id?.toString() === connection.caipNetwork?.split(':')[1]);
|
|
55
|
-
},
|
|
56
|
-
activeCaipNetworkId: get => {
|
|
57
|
-
const snap = get(baseState);
|
|
58
|
-
if (!snap.activeNamespace) return undefined;
|
|
59
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
60
|
-
if (!connection) return undefined;
|
|
61
|
-
return connection.caipNetwork;
|
|
62
|
-
},
|
|
63
|
-
walletInfo: get => {
|
|
64
|
-
const snap = get(baseState);
|
|
65
|
-
if (!snap.activeNamespace) return undefined;
|
|
66
|
-
return snap.connections.get(snap.activeNamespace)?.wallet;
|
|
67
|
-
}
|
|
68
|
-
}, {
|
|
69
|
-
proxy: baseState // Link derived proxy to the base state proxy
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
// -- Controller ---------------------------------------- //
|
|
73
|
-
const ConnectionsController = exports.ConnectionsController = {
|
|
74
|
-
state: derivedState,
|
|
75
|
-
setActiveNamespace(namespace) {
|
|
76
|
-
baseState.activeNamespace = namespace;
|
|
77
|
-
_StorageUtil.StorageUtil.setActiveNamespace(namespace);
|
|
78
|
-
},
|
|
79
|
-
storeConnection({
|
|
80
|
-
namespace,
|
|
81
|
-
adapter,
|
|
82
|
-
accounts,
|
|
83
|
-
chains,
|
|
84
|
-
wallet,
|
|
85
|
-
caipNetwork
|
|
86
|
-
}) {
|
|
87
|
-
const newConnectionEntry = {
|
|
88
|
-
balances: {},
|
|
89
|
-
caipNetwork: caipNetwork ?? chains[0],
|
|
90
|
-
adapter: (0, _valtio.ref)(adapter),
|
|
91
|
-
accounts,
|
|
92
|
-
chains,
|
|
93
|
-
wallet
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
// Create a new Map to ensure Valtio detects the change
|
|
97
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
98
|
-
newConnectionsMap.set(namespace, newConnectionEntry);
|
|
99
|
-
baseState.connections = newConnectionsMap;
|
|
100
|
-
},
|
|
101
|
-
updateAccounts(namespace, accounts) {
|
|
102
|
-
const connection = baseState.connections.get(namespace);
|
|
103
|
-
if (!connection) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
107
|
-
const updatedConnection = {
|
|
108
|
-
...connection,
|
|
109
|
-
accounts
|
|
110
|
-
};
|
|
111
|
-
newConnectionsMap.set(namespace, updatedConnection);
|
|
112
|
-
baseState.connections = newConnectionsMap;
|
|
113
|
-
},
|
|
114
|
-
updateBalance(namespace, address, balance) {
|
|
115
|
-
const connection = baseState.connections.get(namespace);
|
|
116
|
-
if (!connection) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
const newBalances = {
|
|
120
|
-
...connection.balances,
|
|
121
|
-
[address]: balance
|
|
122
|
-
};
|
|
123
|
-
const updatedConnection = {
|
|
124
|
-
...connection,
|
|
125
|
-
balances: newBalances
|
|
126
|
-
};
|
|
127
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
128
|
-
newConnectionsMap.set(namespace, updatedConnection);
|
|
129
|
-
baseState.connections = newConnectionsMap;
|
|
130
|
-
},
|
|
131
|
-
setActiveNetwork(namespace, networkId) {
|
|
132
|
-
const connection = baseState.connections.get(namespace);
|
|
133
|
-
if (!connection) {
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
baseState.connections.set(namespace, {
|
|
137
|
-
...connection,
|
|
138
|
-
caipNetwork: networkId
|
|
139
|
-
});
|
|
140
|
-
},
|
|
141
|
-
setNetworks(networks) {
|
|
142
|
-
baseState.networks = networks;
|
|
143
|
-
},
|
|
144
|
-
getConnectedNetworks() {
|
|
145
|
-
return baseState.networks.filter(network => baseState.connections.get(network.chainNamespace)?.accounts.some(account => account.startsWith(network.caipNetworkId)));
|
|
146
|
-
},
|
|
147
|
-
async disconnect(namespace, isInternal = true) {
|
|
148
|
-
const connection = baseState.connections.get(namespace);
|
|
149
|
-
if (!connection) return;
|
|
150
|
-
|
|
151
|
-
// Get the current connector from the adapter
|
|
152
|
-
const connector = connection.adapter.connector;
|
|
153
|
-
if (!connector) return;
|
|
154
|
-
|
|
155
|
-
// Find all namespaces that use the same connector
|
|
156
|
-
const namespacesUsingConnector = Array.from(baseState.connections.keys()).filter(ns => baseState.connections.get(ns)?.adapter.connector === connector);
|
|
157
|
-
|
|
158
|
-
// Unsubscribe all event listeners from the adapter
|
|
159
|
-
namespacesUsingConnector.forEach(ns => {
|
|
160
|
-
const _connection = baseState.connections.get(ns);
|
|
161
|
-
if (_connection?.adapter) {
|
|
162
|
-
_connection.adapter.removeAllListeners();
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
// Disconnect the adapter
|
|
167
|
-
if (isInternal) {
|
|
168
|
-
await connection.adapter.disconnect();
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// Remove all namespaces that used this connector
|
|
172
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
173
|
-
namespacesUsingConnector.forEach(ns => {
|
|
174
|
-
newConnectionsMap.delete(ns);
|
|
175
|
-
});
|
|
176
|
-
baseState.connections = newConnectionsMap;
|
|
177
|
-
|
|
178
|
-
// Remove activeNamespace if it is in the list of namespaces using the connector
|
|
179
|
-
if (baseState.activeNamespace && (baseState.activeNamespace === namespace || namespacesUsingConnector.includes(baseState.activeNamespace))) {
|
|
180
|
-
baseState.activeNamespace = undefined;
|
|
181
|
-
_StorageUtil.StorageUtil.setActiveNamespace(undefined);
|
|
182
|
-
}
|
|
183
|
-
},
|
|
184
|
-
parseUnits(value, decimals) {
|
|
185
|
-
if (!baseState.activeNamespace) return undefined;
|
|
186
|
-
return baseState.connections.get(baseState.activeNamespace)?.adapter.parseUnits(value, decimals);
|
|
187
|
-
},
|
|
188
|
-
async signMessage(address, message) {
|
|
189
|
-
if (!baseState.activeNamespace) return undefined;
|
|
190
|
-
const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
|
|
191
|
-
const evmAddress = address.split(':')[2];
|
|
192
|
-
const chainId = address.split(':')[1];
|
|
193
|
-
if (adapter instanceof _appkitCommonReactNative.EVMAdapter && evmAddress && chainId) {
|
|
194
|
-
return adapter.signMessage(evmAddress, message, chainId);
|
|
195
|
-
}
|
|
196
|
-
return undefined;
|
|
197
|
-
},
|
|
198
|
-
async sendTransaction(args) {
|
|
199
|
-
if (!baseState.activeNamespace) return undefined;
|
|
200
|
-
const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
|
|
201
|
-
if (adapter instanceof _appkitCommonReactNative.EVMAdapter) {
|
|
202
|
-
return adapter.sendTransaction(args);
|
|
203
|
-
}
|
|
204
|
-
return undefined;
|
|
205
|
-
},
|
|
206
|
-
async estimateGas(args) {
|
|
207
|
-
if (!baseState.activeNamespace) return undefined;
|
|
208
|
-
const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
|
|
209
|
-
if (adapter instanceof _appkitCommonReactNative.EVMAdapter) {
|
|
210
|
-
return adapter.estimateGas(args);
|
|
211
|
-
}
|
|
212
|
-
return undefined;
|
|
213
|
-
}
|
|
214
|
-
};
|
|
215
|
-
//# sourceMappingURL=ConnectionsController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_valtio","require","_utils","_appkitCommonReactNative","_StorageUtil","baseState","proxy","activeNamespace","undefined","connections","Map","networks","derivedState","derive","activeAddress","get","snap","connection","accounts","length","activeAccount","find","account","startsWith","caipNetwork","activeBalance","balances","Object","keys","activeNetwork","network","chainNamespace","id","toString","split","activeCaipNetworkId","walletInfo","wallet","ConnectionsController","exports","state","setActiveNamespace","namespace","StorageUtil","storeConnection","adapter","chains","newConnectionEntry","ref","newConnectionsMap","set","updateAccounts","updatedConnection","updateBalance","address","balance","newBalances","setActiveNetwork","networkId","setNetworks","getConnectedNetworks","filter","some","caipNetworkId","disconnect","isInternal","connector","namespacesUsingConnector","Array","from","ns","forEach","_connection","removeAllListeners","delete","includes","parseUnits","value","decimals","signMessage","message","evmAddress","chainId","EVMAdapter","sendTransaction","args","estimateGas"],"sourceRoot":"../../../src","sources":["controllers/ConnectionsController.ts"],"mappings":"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"}
|