@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
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import { proxy, ref } from 'valtio';
|
|
2
|
-
import { derive } from 'valtio/utils';
|
|
3
|
-
import { EVMAdapter } from '@reown/appkit-common-react-native';
|
|
4
|
-
import { StorageUtil } from '../utils/StorageUtil';
|
|
5
|
-
|
|
6
|
-
// -- Types --------------------------------------------- //
|
|
7
|
-
|
|
8
|
-
//TODO: balance could be elsewhere
|
|
9
|
-
|
|
10
|
-
// -- State --------------------------------------------- //
|
|
11
|
-
const baseState = proxy({
|
|
12
|
-
activeNamespace: undefined,
|
|
13
|
-
connections: new Map(),
|
|
14
|
-
networks: []
|
|
15
|
-
});
|
|
16
|
-
const derivedState = derive({
|
|
17
|
-
activeAddress: get => {
|
|
18
|
-
const snap = get(baseState);
|
|
19
|
-
if (!snap.activeNamespace) {
|
|
20
|
-
return undefined;
|
|
21
|
-
}
|
|
22
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
23
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
//TODO: what happens if there are several accounts on the same chain?
|
|
28
|
-
const activeAccount = connection.accounts.find(account => account.startsWith(connection.caipNetwork));
|
|
29
|
-
return activeAccount;
|
|
30
|
-
},
|
|
31
|
-
activeBalance: get => {
|
|
32
|
-
const snap = get(baseState);
|
|
33
|
-
if (!snap.activeNamespace) return undefined;
|
|
34
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
35
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
|
-
const activeAccount = connection.accounts.find(account => account.startsWith(connection.caipNetwork));
|
|
39
|
-
if (!connection || !connection.balances || !activeAccount || Object.keys(connection.balances).length === 0) {
|
|
40
|
-
return undefined;
|
|
41
|
-
}
|
|
42
|
-
return connection.balances[activeAccount];
|
|
43
|
-
},
|
|
44
|
-
activeNetwork: get => {
|
|
45
|
-
const snap = get(baseState);
|
|
46
|
-
if (!snap.activeNamespace) return undefined;
|
|
47
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
48
|
-
if (!connection) return undefined;
|
|
49
|
-
return snap.networks.find(network => network.chainNamespace === snap.activeNamespace && network.id?.toString() === connection.caipNetwork?.split(':')[1]);
|
|
50
|
-
},
|
|
51
|
-
activeCaipNetworkId: get => {
|
|
52
|
-
const snap = get(baseState);
|
|
53
|
-
if (!snap.activeNamespace) return undefined;
|
|
54
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
55
|
-
if (!connection) return undefined;
|
|
56
|
-
return connection.caipNetwork;
|
|
57
|
-
},
|
|
58
|
-
walletInfo: get => {
|
|
59
|
-
const snap = get(baseState);
|
|
60
|
-
if (!snap.activeNamespace) return undefined;
|
|
61
|
-
return snap.connections.get(snap.activeNamespace)?.wallet;
|
|
62
|
-
}
|
|
63
|
-
}, {
|
|
64
|
-
proxy: baseState // Link derived proxy to the base state proxy
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
// -- Controller ---------------------------------------- //
|
|
68
|
-
export const ConnectionsController = {
|
|
69
|
-
state: derivedState,
|
|
70
|
-
setActiveNamespace(namespace) {
|
|
71
|
-
baseState.activeNamespace = namespace;
|
|
72
|
-
StorageUtil.setActiveNamespace(namespace);
|
|
73
|
-
},
|
|
74
|
-
storeConnection({
|
|
75
|
-
namespace,
|
|
76
|
-
adapter,
|
|
77
|
-
accounts,
|
|
78
|
-
chains,
|
|
79
|
-
wallet,
|
|
80
|
-
caipNetwork
|
|
81
|
-
}) {
|
|
82
|
-
const newConnectionEntry = {
|
|
83
|
-
balances: {},
|
|
84
|
-
caipNetwork: caipNetwork ?? chains[0],
|
|
85
|
-
adapter: ref(adapter),
|
|
86
|
-
accounts,
|
|
87
|
-
chains,
|
|
88
|
-
wallet
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
// Create a new Map to ensure Valtio detects the change
|
|
92
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
93
|
-
newConnectionsMap.set(namespace, newConnectionEntry);
|
|
94
|
-
baseState.connections = newConnectionsMap;
|
|
95
|
-
},
|
|
96
|
-
updateAccounts(namespace, accounts) {
|
|
97
|
-
const connection = baseState.connections.get(namespace);
|
|
98
|
-
if (!connection) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
102
|
-
const updatedConnection = {
|
|
103
|
-
...connection,
|
|
104
|
-
accounts
|
|
105
|
-
};
|
|
106
|
-
newConnectionsMap.set(namespace, updatedConnection);
|
|
107
|
-
baseState.connections = newConnectionsMap;
|
|
108
|
-
},
|
|
109
|
-
updateBalance(namespace, address, balance) {
|
|
110
|
-
const connection = baseState.connections.get(namespace);
|
|
111
|
-
if (!connection) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
const newBalances = {
|
|
115
|
-
...connection.balances,
|
|
116
|
-
[address]: balance
|
|
117
|
-
};
|
|
118
|
-
const updatedConnection = {
|
|
119
|
-
...connection,
|
|
120
|
-
balances: newBalances
|
|
121
|
-
};
|
|
122
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
123
|
-
newConnectionsMap.set(namespace, updatedConnection);
|
|
124
|
-
baseState.connections = newConnectionsMap;
|
|
125
|
-
},
|
|
126
|
-
setActiveNetwork(namespace, networkId) {
|
|
127
|
-
const connection = baseState.connections.get(namespace);
|
|
128
|
-
if (!connection) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
baseState.connections.set(namespace, {
|
|
132
|
-
...connection,
|
|
133
|
-
caipNetwork: networkId
|
|
134
|
-
});
|
|
135
|
-
},
|
|
136
|
-
setNetworks(networks) {
|
|
137
|
-
baseState.networks = networks;
|
|
138
|
-
},
|
|
139
|
-
getConnectedNetworks() {
|
|
140
|
-
return baseState.networks.filter(network => baseState.connections.get(network.chainNamespace)?.accounts.some(account => account.startsWith(network.caipNetworkId)));
|
|
141
|
-
},
|
|
142
|
-
async disconnect(namespace, isInternal = true) {
|
|
143
|
-
const connection = baseState.connections.get(namespace);
|
|
144
|
-
if (!connection) return;
|
|
145
|
-
|
|
146
|
-
// Get the current connector from the adapter
|
|
147
|
-
const connector = connection.adapter.connector;
|
|
148
|
-
if (!connector) return;
|
|
149
|
-
|
|
150
|
-
// Find all namespaces that use the same connector
|
|
151
|
-
const namespacesUsingConnector = Array.from(baseState.connections.keys()).filter(ns => baseState.connections.get(ns)?.adapter.connector === connector);
|
|
152
|
-
|
|
153
|
-
// Unsubscribe all event listeners from the adapter
|
|
154
|
-
namespacesUsingConnector.forEach(ns => {
|
|
155
|
-
const _connection = baseState.connections.get(ns);
|
|
156
|
-
if (_connection?.adapter) {
|
|
157
|
-
_connection.adapter.removeAllListeners();
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
// Disconnect the adapter
|
|
162
|
-
if (isInternal) {
|
|
163
|
-
await connection.adapter.disconnect();
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Remove all namespaces that used this connector
|
|
167
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
168
|
-
namespacesUsingConnector.forEach(ns => {
|
|
169
|
-
newConnectionsMap.delete(ns);
|
|
170
|
-
});
|
|
171
|
-
baseState.connections = newConnectionsMap;
|
|
172
|
-
|
|
173
|
-
// Remove activeNamespace if it is in the list of namespaces using the connector
|
|
174
|
-
if (baseState.activeNamespace && (baseState.activeNamespace === namespace || namespacesUsingConnector.includes(baseState.activeNamespace))) {
|
|
175
|
-
baseState.activeNamespace = undefined;
|
|
176
|
-
StorageUtil.setActiveNamespace(undefined);
|
|
177
|
-
}
|
|
178
|
-
},
|
|
179
|
-
parseUnits(value, decimals) {
|
|
180
|
-
if (!baseState.activeNamespace) return undefined;
|
|
181
|
-
return baseState.connections.get(baseState.activeNamespace)?.adapter.parseUnits(value, decimals);
|
|
182
|
-
},
|
|
183
|
-
async signMessage(address, message) {
|
|
184
|
-
if (!baseState.activeNamespace) return undefined;
|
|
185
|
-
const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
|
|
186
|
-
const evmAddress = address.split(':')[2];
|
|
187
|
-
const chainId = address.split(':')[1];
|
|
188
|
-
if (adapter instanceof EVMAdapter && evmAddress && chainId) {
|
|
189
|
-
return adapter.signMessage(evmAddress, message, chainId);
|
|
190
|
-
}
|
|
191
|
-
return undefined;
|
|
192
|
-
},
|
|
193
|
-
async sendTransaction(args) {
|
|
194
|
-
if (!baseState.activeNamespace) return undefined;
|
|
195
|
-
const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
|
|
196
|
-
if (adapter instanceof EVMAdapter) {
|
|
197
|
-
return adapter.sendTransaction(args);
|
|
198
|
-
}
|
|
199
|
-
return undefined;
|
|
200
|
-
},
|
|
201
|
-
async estimateGas(args) {
|
|
202
|
-
if (!baseState.activeNamespace) return undefined;
|
|
203
|
-
const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
|
|
204
|
-
if (adapter instanceof EVMAdapter) {
|
|
205
|
-
return adapter.estimateGas(args);
|
|
206
|
-
}
|
|
207
|
-
return undefined;
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
//# sourceMappingURL=ConnectionsController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["proxy","ref","derive","EVMAdapter","StorageUtil","baseState","activeNamespace","undefined","connections","Map","networks","derivedState","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","state","setActiveNamespace","namespace","storeConnection","adapter","chains","newConnectionEntry","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","sendTransaction","args","estimateGas"],"sourceRoot":"../../../src","sources":["controllers/ConnectionsController.ts"],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { type AppKitNetwork, type BlockchainAdapter, type CaipAddress, type CaipNetworkId, type ChainNamespace, type GetBalanceResponse, type WalletInfo } from '@reown/appkit-common-react-native';
|
|
2
|
-
type Balance = GetBalanceResponse;
|
|
3
|
-
interface Connection {
|
|
4
|
-
accounts: CaipAddress[];
|
|
5
|
-
balances: Record<CaipAddress, Balance>;
|
|
6
|
-
adapter: BlockchainAdapter;
|
|
7
|
-
caipNetwork: CaipNetworkId;
|
|
8
|
-
wallet?: WalletInfo;
|
|
9
|
-
}
|
|
10
|
-
export interface ConnectionsControllerState {
|
|
11
|
-
activeNamespace?: ChainNamespace;
|
|
12
|
-
connections: Map<ChainNamespace, Connection>;
|
|
13
|
-
networks: AppKitNetwork[];
|
|
14
|
-
}
|
|
15
|
-
export declare const ConnectionsController: {
|
|
16
|
-
state: ConnectionsControllerState & {
|
|
17
|
-
activeAddress: `${string}:${string}:${string}` | undefined;
|
|
18
|
-
activeBalance: GetBalanceResponse | undefined;
|
|
19
|
-
activeNetwork: AppKitNetwork | undefined;
|
|
20
|
-
activeCaipNetworkId: `${string}:${string}` | undefined;
|
|
21
|
-
walletInfo: WalletInfo | undefined;
|
|
22
|
-
};
|
|
23
|
-
setActiveNamespace(namespace?: ChainNamespace): void;
|
|
24
|
-
storeConnection({ namespace, adapter, accounts, chains, wallet, caipNetwork }: {
|
|
25
|
-
namespace: ChainNamespace;
|
|
26
|
-
adapter: BlockchainAdapter;
|
|
27
|
-
accounts: CaipAddress[];
|
|
28
|
-
chains: CaipNetworkId[];
|
|
29
|
-
wallet?: WalletInfo | undefined;
|
|
30
|
-
caipNetwork?: `${string}:${string}` | undefined;
|
|
31
|
-
}): void;
|
|
32
|
-
updateAccounts(namespace: ChainNamespace, accounts: CaipAddress[]): void;
|
|
33
|
-
updateBalance(namespace: ChainNamespace, address: CaipAddress, balance: Balance): void;
|
|
34
|
-
setActiveNetwork(namespace: ChainNamespace, networkId: CaipNetworkId): void;
|
|
35
|
-
setNetworks(networks: AppKitNetwork[]): void;
|
|
36
|
-
getConnectedNetworks(): AppKitNetwork[];
|
|
37
|
-
disconnect(namespace: ChainNamespace, isInternal?: boolean): Promise<void>;
|
|
38
|
-
parseUnits(value: string, decimals: number): bigint | undefined;
|
|
39
|
-
signMessage(address: CaipAddress, message: string): Promise<string | undefined>;
|
|
40
|
-
sendTransaction(args: any): Promise<`0x${string}` | null | undefined>;
|
|
41
|
-
estimateGas(args: any): Promise<bigint | undefined>;
|
|
42
|
-
};
|
|
43
|
-
export {};
|
|
44
|
-
//# sourceMappingURL=ConnectionsController.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionsController.d.ts","sourceRoot":"","sources":["../../../src/controllers/ConnectionsController.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,mCAAmC,CAAC;AAI3C,KAAK,OAAO,GAAG,kBAAkB,CAAC;AAGlC,UAAU,UAAU;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,WAAW,EAAE,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,WAAW,EAAE,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IAC7C,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAgGD,eAAO,MAAM,qBAAqB;;;;;;;;mCAGD,cAAc;;mBAahC,cAAc;iBAChB,iBAAiB;kBAChB,WAAW,EAAE;gBACf,aAAa,EAAE;;;;8BAmBC,cAAc,YAAY,WAAW,EAAE;6BAYxC,cAAc,WAAW,WAAW,WAAW,OAAO;gCAanD,cAAc,aAAa,aAAa;0BAa9C,aAAa,EAAE;;0BAaT,cAAc;sBA4CxB,MAAM,YAAY,MAAM;yBAQf,WAAW,WAAW,MAAM;0BAc3B,GAAG;sBAYP,GAAG;CAW5B,CAAC"}
|
|
@@ -1,305 +0,0 @@
|
|
|
1
|
-
import { proxy, ref } from 'valtio';
|
|
2
|
-
import { derive } from 'valtio/utils';
|
|
3
|
-
import {
|
|
4
|
-
EVMAdapter,
|
|
5
|
-
type AppKitNetwork,
|
|
6
|
-
type BlockchainAdapter,
|
|
7
|
-
type CaipAddress,
|
|
8
|
-
type CaipNetworkId,
|
|
9
|
-
type ChainNamespace,
|
|
10
|
-
type GetBalanceResponse,
|
|
11
|
-
type WalletInfo
|
|
12
|
-
} from '@reown/appkit-common-react-native';
|
|
13
|
-
import { StorageUtil } from '../utils/StorageUtil';
|
|
14
|
-
|
|
15
|
-
// -- Types --------------------------------------------- //
|
|
16
|
-
type Balance = GetBalanceResponse;
|
|
17
|
-
|
|
18
|
-
//TODO: balance could be elsewhere
|
|
19
|
-
interface Connection {
|
|
20
|
-
accounts: CaipAddress[];
|
|
21
|
-
balances: Record<CaipAddress, Balance>; //TODO: make this an array of balances
|
|
22
|
-
adapter: BlockchainAdapter;
|
|
23
|
-
caipNetwork: CaipNetworkId;
|
|
24
|
-
wallet?: WalletInfo;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface ConnectionsControllerState {
|
|
28
|
-
activeNamespace?: ChainNamespace;
|
|
29
|
-
connections: Map<ChainNamespace, Connection>;
|
|
30
|
-
networks: AppKitNetwork[];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// -- State --------------------------------------------- //
|
|
34
|
-
const baseState = proxy<ConnectionsControllerState>({
|
|
35
|
-
activeNamespace: undefined,
|
|
36
|
-
connections: new Map<ChainNamespace, Connection>(),
|
|
37
|
-
networks: []
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const derivedState = derive(
|
|
41
|
-
{
|
|
42
|
-
activeAddress: (get): CaipAddress | undefined => {
|
|
43
|
-
const snap = get(baseState);
|
|
44
|
-
|
|
45
|
-
if (!snap.activeNamespace) {
|
|
46
|
-
return undefined;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
50
|
-
|
|
51
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
52
|
-
return undefined;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
//TODO: what happens if there are several accounts on the same chain?
|
|
56
|
-
const activeAccount = connection.accounts.find(account =>
|
|
57
|
-
account.startsWith(connection.caipNetwork)
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
return activeAccount;
|
|
61
|
-
},
|
|
62
|
-
activeBalance: (get): Balance | undefined => {
|
|
63
|
-
const snap = get(baseState);
|
|
64
|
-
|
|
65
|
-
if (!snap.activeNamespace) return undefined;
|
|
66
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
67
|
-
|
|
68
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
69
|
-
return undefined;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const activeAccount = connection.accounts.find(account =>
|
|
73
|
-
account.startsWith(connection.caipNetwork)
|
|
74
|
-
);
|
|
75
|
-
|
|
76
|
-
if (
|
|
77
|
-
!connection ||
|
|
78
|
-
!connection.balances ||
|
|
79
|
-
!activeAccount ||
|
|
80
|
-
Object.keys(connection.balances).length === 0
|
|
81
|
-
) {
|
|
82
|
-
return undefined;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
return connection.balances[activeAccount];
|
|
86
|
-
},
|
|
87
|
-
activeNetwork: (get): AppKitNetwork | undefined => {
|
|
88
|
-
const snap = get(baseState);
|
|
89
|
-
|
|
90
|
-
if (!snap.activeNamespace) return undefined;
|
|
91
|
-
|
|
92
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
93
|
-
|
|
94
|
-
if (!connection) return undefined;
|
|
95
|
-
|
|
96
|
-
return snap.networks.find(
|
|
97
|
-
network =>
|
|
98
|
-
network.chainNamespace === snap.activeNamespace &&
|
|
99
|
-
network.id?.toString() === connection.caipNetwork?.split(':')[1]
|
|
100
|
-
);
|
|
101
|
-
},
|
|
102
|
-
activeCaipNetworkId: (get): CaipNetworkId | undefined => {
|
|
103
|
-
const snap = get(baseState);
|
|
104
|
-
|
|
105
|
-
if (!snap.activeNamespace) return undefined;
|
|
106
|
-
|
|
107
|
-
const connection = snap.connections.get(snap.activeNamespace);
|
|
108
|
-
|
|
109
|
-
if (!connection) return undefined;
|
|
110
|
-
|
|
111
|
-
return connection.caipNetwork;
|
|
112
|
-
},
|
|
113
|
-
walletInfo: (get): WalletInfo | undefined => {
|
|
114
|
-
const snap = get(baseState);
|
|
115
|
-
|
|
116
|
-
if (!snap.activeNamespace) return undefined;
|
|
117
|
-
|
|
118
|
-
return snap.connections.get(snap.activeNamespace)?.wallet;
|
|
119
|
-
}
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
proxy: baseState // Link derived proxy to the base state proxy
|
|
123
|
-
}
|
|
124
|
-
);
|
|
125
|
-
|
|
126
|
-
// -- Controller ---------------------------------------- //
|
|
127
|
-
export const ConnectionsController = {
|
|
128
|
-
state: derivedState,
|
|
129
|
-
|
|
130
|
-
setActiveNamespace(namespace?: ChainNamespace) {
|
|
131
|
-
baseState.activeNamespace = namespace;
|
|
132
|
-
StorageUtil.setActiveNamespace(namespace);
|
|
133
|
-
},
|
|
134
|
-
|
|
135
|
-
storeConnection({
|
|
136
|
-
namespace,
|
|
137
|
-
adapter,
|
|
138
|
-
accounts,
|
|
139
|
-
chains,
|
|
140
|
-
wallet,
|
|
141
|
-
caipNetwork
|
|
142
|
-
}: {
|
|
143
|
-
namespace: ChainNamespace;
|
|
144
|
-
adapter: BlockchainAdapter;
|
|
145
|
-
accounts: CaipAddress[];
|
|
146
|
-
chains: CaipNetworkId[];
|
|
147
|
-
wallet?: WalletInfo;
|
|
148
|
-
caipNetwork?: CaipNetworkId;
|
|
149
|
-
}) {
|
|
150
|
-
const newConnectionEntry = {
|
|
151
|
-
balances: {},
|
|
152
|
-
caipNetwork: caipNetwork ?? chains[0]!,
|
|
153
|
-
adapter: ref(adapter),
|
|
154
|
-
accounts,
|
|
155
|
-
chains,
|
|
156
|
-
wallet
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
// Create a new Map to ensure Valtio detects the change
|
|
160
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
161
|
-
newConnectionsMap.set(namespace, newConnectionEntry);
|
|
162
|
-
baseState.connections = newConnectionsMap;
|
|
163
|
-
},
|
|
164
|
-
|
|
165
|
-
updateAccounts(namespace: ChainNamespace, accounts: CaipAddress[]) {
|
|
166
|
-
const connection = baseState.connections.get(namespace);
|
|
167
|
-
if (!connection) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
172
|
-
const updatedConnection = { ...connection, accounts };
|
|
173
|
-
newConnectionsMap.set(namespace, updatedConnection);
|
|
174
|
-
baseState.connections = newConnectionsMap;
|
|
175
|
-
},
|
|
176
|
-
|
|
177
|
-
updateBalance(namespace: ChainNamespace, address: CaipAddress, balance: Balance) {
|
|
178
|
-
const connection = baseState.connections.get(namespace);
|
|
179
|
-
if (!connection) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
const newBalances = { ...connection.balances, [address]: balance };
|
|
184
|
-
const updatedConnection = { ...connection, balances: newBalances };
|
|
185
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
186
|
-
newConnectionsMap.set(namespace, updatedConnection);
|
|
187
|
-
baseState.connections = newConnectionsMap;
|
|
188
|
-
},
|
|
189
|
-
|
|
190
|
-
setActiveNetwork(namespace: ChainNamespace, networkId: CaipNetworkId) {
|
|
191
|
-
const connection = baseState.connections.get(namespace);
|
|
192
|
-
|
|
193
|
-
if (!connection) {
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
baseState.connections.set(namespace, {
|
|
198
|
-
...connection,
|
|
199
|
-
caipNetwork: networkId
|
|
200
|
-
});
|
|
201
|
-
},
|
|
202
|
-
|
|
203
|
-
setNetworks(networks: AppKitNetwork[]) {
|
|
204
|
-
baseState.networks = networks;
|
|
205
|
-
},
|
|
206
|
-
|
|
207
|
-
getConnectedNetworks() {
|
|
208
|
-
return baseState.networks.filter(
|
|
209
|
-
network =>
|
|
210
|
-
baseState.connections
|
|
211
|
-
.get(network.chainNamespace)
|
|
212
|
-
?.accounts.some(account => account.startsWith(network.caipNetworkId))
|
|
213
|
-
);
|
|
214
|
-
},
|
|
215
|
-
|
|
216
|
-
async disconnect(namespace: ChainNamespace, isInternal = true) {
|
|
217
|
-
const connection = baseState.connections.get(namespace);
|
|
218
|
-
if (!connection) return;
|
|
219
|
-
|
|
220
|
-
// Get the current connector from the adapter
|
|
221
|
-
const connector = connection.adapter.connector;
|
|
222
|
-
if (!connector) return;
|
|
223
|
-
|
|
224
|
-
// Find all namespaces that use the same connector
|
|
225
|
-
const namespacesUsingConnector = Array.from(baseState.connections.keys()).filter(
|
|
226
|
-
ns => baseState.connections.get(ns)?.adapter.connector === connector
|
|
227
|
-
);
|
|
228
|
-
|
|
229
|
-
// Unsubscribe all event listeners from the adapter
|
|
230
|
-
namespacesUsingConnector.forEach(ns => {
|
|
231
|
-
const _connection = baseState.connections.get(ns);
|
|
232
|
-
if (_connection?.adapter) {
|
|
233
|
-
_connection.adapter.removeAllListeners();
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
// Disconnect the adapter
|
|
238
|
-
if (isInternal) {
|
|
239
|
-
await connection.adapter.disconnect();
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// Remove all namespaces that used this connector
|
|
243
|
-
const newConnectionsMap = new Map(baseState.connections);
|
|
244
|
-
namespacesUsingConnector.forEach(ns => {
|
|
245
|
-
newConnectionsMap.delete(ns);
|
|
246
|
-
});
|
|
247
|
-
baseState.connections = newConnectionsMap;
|
|
248
|
-
|
|
249
|
-
// Remove activeNamespace if it is in the list of namespaces using the connector
|
|
250
|
-
if (
|
|
251
|
-
baseState.activeNamespace &&
|
|
252
|
-
(baseState.activeNamespace === namespace ||
|
|
253
|
-
namespacesUsingConnector.includes(baseState.activeNamespace))
|
|
254
|
-
) {
|
|
255
|
-
baseState.activeNamespace = undefined;
|
|
256
|
-
StorageUtil.setActiveNamespace(undefined);
|
|
257
|
-
}
|
|
258
|
-
},
|
|
259
|
-
|
|
260
|
-
parseUnits(value: string, decimals: number) {
|
|
261
|
-
if (!baseState.activeNamespace) return undefined;
|
|
262
|
-
|
|
263
|
-
return baseState.connections
|
|
264
|
-
.get(baseState.activeNamespace)
|
|
265
|
-
?.adapter.parseUnits(value, decimals);
|
|
266
|
-
},
|
|
267
|
-
|
|
268
|
-
async signMessage(address: CaipAddress, message: string) {
|
|
269
|
-
if (!baseState.activeNamespace) return undefined;
|
|
270
|
-
|
|
271
|
-
const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
|
|
272
|
-
|
|
273
|
-
const evmAddress = address.split(':')[2];
|
|
274
|
-
const chainId = address.split(':')[1];
|
|
275
|
-
if (adapter instanceof EVMAdapter && evmAddress && chainId) {
|
|
276
|
-
return adapter.signMessage(evmAddress, message, chainId);
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
return undefined;
|
|
280
|
-
},
|
|
281
|
-
|
|
282
|
-
async sendTransaction(args: any) {
|
|
283
|
-
if (!baseState.activeNamespace) return undefined;
|
|
284
|
-
|
|
285
|
-
const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
|
|
286
|
-
|
|
287
|
-
if (adapter instanceof EVMAdapter) {
|
|
288
|
-
return adapter.sendTransaction(args);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
return undefined;
|
|
292
|
-
},
|
|
293
|
-
|
|
294
|
-
async estimateGas(args: any) {
|
|
295
|
-
if (!baseState.activeNamespace) return undefined;
|
|
296
|
-
|
|
297
|
-
const adapter = baseState.connections.get(baseState.activeNamespace)?.adapter;
|
|
298
|
-
|
|
299
|
-
if (adapter instanceof EVMAdapter) {
|
|
300
|
-
return adapter.estimateGas(args);
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
return undefined;
|
|
304
|
-
}
|
|
305
|
-
};
|