@reown/appkit-core-react-native 0.0.0-feat-multichain-20250520183003 → 0.0.0-feat-onramp-20250602135932
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 +14 -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 +2 -1
- package/lib/commonjs/controllers/OnRampController.js.map +1 -1
- package/lib/commonjs/controllers/OptionsController.js +3 -3
- package/lib/commonjs/controllers/OptionsController.js.map +1 -1
- package/lib/commonjs/controllers/RouterController.js.map +1 -1
- package/lib/commonjs/controllers/SwapController.js +5 -13
- 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 +8 -110
- package/lib/commonjs/utils/ConstantsUtil.js.map +1 -1
- package/lib/commonjs/utils/CoreHelperUtil.js.map +1 -1
- package/lib/commonjs/utils/StorageUtil.js +0 -67
- package/lib/commonjs/utils/StorageUtil.js.map +1 -1
- package/lib/commonjs/utils/SwapApiUtil.js +4 -9
- 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 +14 -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 +2 -1
- package/lib/module/controllers/OnRampController.js.map +1 -1
- package/lib/module/controllers/OptionsController.js +3 -3
- package/lib/module/controllers/OptionsController.js.map +1 -1
- package/lib/module/controllers/RouterController.js.map +1 -1
- package/lib/module/controllers/SwapController.js +5 -13
- 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 +8 -110
- package/lib/module/utils/ConstantsUtil.js.map +1 -1
- package/lib/module/utils/CoreHelperUtil.js.map +1 -1
- package/lib/module/utils/StorageUtil.js +0 -67
- package/lib/module/utils/StorageUtil.js.map +1 -1
- package/lib/module/utils/SwapApiUtil.js +4 -9
- 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 +1 -14
- 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.map +1 -1
- package/lib/typescript/controllers/OptionsController.d.ts +2 -3
- 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.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 -102
- 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 +1 -13
- 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 +14 -3
- 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 +14 -134
- package/src/controllers/ConnectionController.ts +1 -9
- 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 +5 -1
- package/src/controllers/OptionsController.ts +6 -7
- package/src/controllers/PublicStateController.ts +1 -1
- package/src/controllers/RouterController.ts +1 -2
- package/src/controllers/SwapController.ts +5 -14
- 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 +8 -112
- 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 +1 -82
- package/src/utils/SwapApiUtil.ts +4 -10
- package/src/utils/TypeUtil.ts +19 -5
- package/lib/commonjs/controllers/ConnectionsController.js +0 -156
- package/lib/commonjs/controllers/ConnectionsController.js.map +0 -1
- package/lib/module/controllers/ConnectionsController.js +0 -151
- package/lib/module/controllers/ConnectionsController.js.map +0 -1
- package/lib/typescript/controllers/ConnectionsController.d.ts +0 -41
- package/lib/typescript/controllers/ConnectionsController.d.ts.map +0 -1
- package/src/controllers/ConnectionsController.ts +0 -236
package/src/utils/TypeUtil.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
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,
|
|
@@ -8,13 +6,23 @@ import type {
|
|
|
8
6
|
Transaction,
|
|
9
7
|
ConnectorType
|
|
10
8
|
} from '@reown/appkit-common-react-native';
|
|
11
|
-
|
|
12
9
|
import { OnRampErrorType } from './ConstantsUtil';
|
|
13
10
|
|
|
14
11
|
export interface BaseError {
|
|
15
12
|
message?: string;
|
|
16
13
|
}
|
|
17
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
|
+
|
|
18
26
|
export type ConnectedWalletInfo =
|
|
19
27
|
| {
|
|
20
28
|
name?: string;
|
|
@@ -171,7 +179,6 @@ export interface BlockchainApiTransactionsRequest {
|
|
|
171
179
|
onramp?: 'coinbase';
|
|
172
180
|
signal?: AbortSignal;
|
|
173
181
|
cache?: RequestCache;
|
|
174
|
-
chainId?: CaipNetworkId;
|
|
175
182
|
}
|
|
176
183
|
|
|
177
184
|
export interface BlockchainApiTransactionsResponse {
|
|
@@ -339,6 +346,13 @@ export type BlockchainApiOnRampWidgetResponse = {
|
|
|
339
346
|
};
|
|
340
347
|
|
|
341
348
|
// -- OptionsController Types ---------------------------------------------------
|
|
349
|
+
export interface Token {
|
|
350
|
+
address: string;
|
|
351
|
+
image?: string;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
export type Tokens = Record<CaipNetworkId, Token>;
|
|
355
|
+
|
|
342
356
|
export type Metadata = {
|
|
343
357
|
name: string;
|
|
344
358
|
description: string;
|
|
@@ -447,7 +461,7 @@ export type Event =
|
|
|
447
461
|
type: 'track';
|
|
448
462
|
event: 'SWITCH_NETWORK';
|
|
449
463
|
properties: {
|
|
450
|
-
network:
|
|
464
|
+
network: string;
|
|
451
465
|
};
|
|
452
466
|
}
|
|
453
467
|
| {
|
|
@@ -1,156 +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 _StorageUtil = require("../utils/StorageUtil");
|
|
10
|
-
// -- Types --------------------------------------------- //
|
|
11
|
-
|
|
12
|
-
//TODO: balance could be elsewhere
|
|
13
|
-
|
|
14
|
-
// -- State --------------------------------------------- //
|
|
15
|
-
const baseState = (0, _valtio.proxy)({
|
|
16
|
-
activeNamespace: undefined,
|
|
17
|
-
connections: {},
|
|
18
|
-
networks: []
|
|
19
|
-
});
|
|
20
|
-
const derivedState = (0, _utils.derive)({
|
|
21
|
-
activeAddress: get => {
|
|
22
|
-
const snap = get(baseState);
|
|
23
|
-
if (!snap.activeNamespace) return undefined;
|
|
24
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
25
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
26
|
-
return undefined;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
//TODO: what happens if there are several accounts on the same chain?
|
|
30
|
-
const activeAccount = connection.accounts.find(account => account.startsWith(connection.activeChain));
|
|
31
|
-
return activeAccount;
|
|
32
|
-
},
|
|
33
|
-
activeBalance: get => {
|
|
34
|
-
const snap = get(baseState);
|
|
35
|
-
if (!snap.activeNamespace) return undefined;
|
|
36
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
37
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
const activeAccount = connection.accounts.find(account => account.startsWith(connection.activeChain));
|
|
41
|
-
if (!connection || !connection.balances || !activeAccount || Object.keys(connection.balances).length === 0) {
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
return connection.balances[activeAccount];
|
|
45
|
-
},
|
|
46
|
-
activeNetwork: get => {
|
|
47
|
-
const snap = get(baseState);
|
|
48
|
-
if (!snap.activeNamespace) return undefined;
|
|
49
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
50
|
-
if (!connection) return undefined;
|
|
51
|
-
return snap.networks.find(network => network.chainNamespace === snap.activeNamespace && network.id?.toString() === connection.activeChain?.split(':')[1]);
|
|
52
|
-
},
|
|
53
|
-
activeCaipNetworkId: get => {
|
|
54
|
-
const snap = get(baseState);
|
|
55
|
-
if (!snap.activeNamespace) return undefined;
|
|
56
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
57
|
-
if (!connection) return undefined;
|
|
58
|
-
return connection.activeChain;
|
|
59
|
-
},
|
|
60
|
-
walletInfo: get => {
|
|
61
|
-
const snap = get(baseState);
|
|
62
|
-
if (!snap.activeNamespace) return undefined;
|
|
63
|
-
return snap.connections[snap.activeNamespace]?.wallet;
|
|
64
|
-
}
|
|
65
|
-
}, {
|
|
66
|
-
proxy: baseState // Link derived proxy to the base state proxy
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
// -- Controller ---------------------------------------- //
|
|
70
|
-
const ConnectionsController = exports.ConnectionsController = {
|
|
71
|
-
state: derivedState,
|
|
72
|
-
setActiveNamespace(namespace) {
|
|
73
|
-
baseState.activeNamespace = namespace;
|
|
74
|
-
_StorageUtil.StorageUtil.setActiveNamespace(namespace);
|
|
75
|
-
},
|
|
76
|
-
storeConnection({
|
|
77
|
-
namespace,
|
|
78
|
-
adapter,
|
|
79
|
-
accounts,
|
|
80
|
-
chains,
|
|
81
|
-
wallet,
|
|
82
|
-
activeChain
|
|
83
|
-
}) {
|
|
84
|
-
baseState.connections[namespace] = {
|
|
85
|
-
balances: {},
|
|
86
|
-
activeChain: activeChain ?? chains[0],
|
|
87
|
-
adapter: (0, _valtio.ref)(adapter),
|
|
88
|
-
accounts,
|
|
89
|
-
chains,
|
|
90
|
-
wallet
|
|
91
|
-
};
|
|
92
|
-
},
|
|
93
|
-
updateAccounts(namespace, accounts) {
|
|
94
|
-
const connection = baseState.connections[namespace];
|
|
95
|
-
if (!connection) {
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
connection.accounts = accounts;
|
|
99
|
-
},
|
|
100
|
-
updateBalance(namespace, address, balance) {
|
|
101
|
-
const connection = baseState.connections[namespace];
|
|
102
|
-
if (!connection) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
connection.balances[address] = balance;
|
|
106
|
-
},
|
|
107
|
-
setActiveChain(namespace, chain) {
|
|
108
|
-
const connection = baseState.connections[namespace];
|
|
109
|
-
if (!connection) {
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
connection.activeChain = chain;
|
|
113
|
-
},
|
|
114
|
-
setNetworks(networks) {
|
|
115
|
-
baseState.networks = networks;
|
|
116
|
-
},
|
|
117
|
-
getConnectedNetworks() {
|
|
118
|
-
return baseState.networks.filter(network => baseState.connections[network.chainNamespace]?.chains.includes(network.caipNetworkId));
|
|
119
|
-
},
|
|
120
|
-
async disconnect(namespace, isInternal = true) {
|
|
121
|
-
const connection = baseState.connections[namespace];
|
|
122
|
-
if (!connection) return;
|
|
123
|
-
|
|
124
|
-
// Get the current connector from the adapter
|
|
125
|
-
const connector = connection.adapter.connector;
|
|
126
|
-
if (!connector) return;
|
|
127
|
-
|
|
128
|
-
// Find all namespaces that use the same connector
|
|
129
|
-
const namespacesUsingConnector = Object.keys(baseState.connections).filter(ns => baseState.connections[ns]?.adapter.connector === connector);
|
|
130
|
-
|
|
131
|
-
// Unsubscribe all event listeners from the adapter
|
|
132
|
-
namespacesUsingConnector.forEach(ns => {
|
|
133
|
-
const _connection = baseState.connections[ns];
|
|
134
|
-
if (_connection?.adapter) {
|
|
135
|
-
_connection.adapter.removeAllListeners();
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
// Disconnect the adapter
|
|
140
|
-
if (isInternal) {
|
|
141
|
-
await connection.adapter.disconnect();
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
// Remove all namespaces that used this connector
|
|
145
|
-
namespacesUsingConnector.forEach(ns => {
|
|
146
|
-
delete baseState.connections[ns];
|
|
147
|
-
});
|
|
148
|
-
|
|
149
|
-
// Remove activeNamespace if it is in the list of namespaces using the connector
|
|
150
|
-
if (baseState.activeNamespace && (baseState.activeNamespace === namespace || namespacesUsingConnector.includes(baseState.activeNamespace))) {
|
|
151
|
-
baseState.activeNamespace = undefined;
|
|
152
|
-
_StorageUtil.StorageUtil.setActiveNamespace(undefined);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
//# sourceMappingURL=ConnectionsController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_valtio","require","_utils","_StorageUtil","baseState","proxy","activeNamespace","undefined","connections","networks","derivedState","derive","activeAddress","get","snap","connection","accounts","length","activeAccount","find","account","startsWith","activeChain","activeBalance","balances","Object","keys","activeNetwork","network","chainNamespace","id","toString","split","activeCaipNetworkId","walletInfo","wallet","ConnectionsController","exports","state","setActiveNamespace","namespace","StorageUtil","storeConnection","adapter","chains","ref","updateAccounts","updateBalance","address","balance","setActiveChain","chain","setNetworks","getConnectedNetworks","filter","includes","caipNetworkId","disconnect","isInternal","connector","namespacesUsingConnector","ns","forEach","_connection","removeAllListeners"],"sourceRoot":"../../../src","sources":["controllers/ConnectionsController.ts"],"mappings":"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"}
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import { proxy, ref } from 'valtio';
|
|
2
|
-
import { derive } from 'valtio/utils';
|
|
3
|
-
import { StorageUtil } from '../utils/StorageUtil';
|
|
4
|
-
|
|
5
|
-
// -- Types --------------------------------------------- //
|
|
6
|
-
|
|
7
|
-
//TODO: balance could be elsewhere
|
|
8
|
-
|
|
9
|
-
// -- State --------------------------------------------- //
|
|
10
|
-
const baseState = proxy({
|
|
11
|
-
activeNamespace: undefined,
|
|
12
|
-
connections: {},
|
|
13
|
-
networks: []
|
|
14
|
-
});
|
|
15
|
-
const derivedState = derive({
|
|
16
|
-
activeAddress: get => {
|
|
17
|
-
const snap = get(baseState);
|
|
18
|
-
if (!snap.activeNamespace) return undefined;
|
|
19
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
20
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
//TODO: what happens if there are several accounts on the same chain?
|
|
25
|
-
const activeAccount = connection.accounts.find(account => account.startsWith(connection.activeChain));
|
|
26
|
-
return activeAccount;
|
|
27
|
-
},
|
|
28
|
-
activeBalance: get => {
|
|
29
|
-
const snap = get(baseState);
|
|
30
|
-
if (!snap.activeNamespace) return undefined;
|
|
31
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
32
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
33
|
-
return undefined;
|
|
34
|
-
}
|
|
35
|
-
const activeAccount = connection.accounts.find(account => account.startsWith(connection.activeChain));
|
|
36
|
-
if (!connection || !connection.balances || !activeAccount || Object.keys(connection.balances).length === 0) {
|
|
37
|
-
return undefined;
|
|
38
|
-
}
|
|
39
|
-
return connection.balances[activeAccount];
|
|
40
|
-
},
|
|
41
|
-
activeNetwork: get => {
|
|
42
|
-
const snap = get(baseState);
|
|
43
|
-
if (!snap.activeNamespace) return undefined;
|
|
44
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
45
|
-
if (!connection) return undefined;
|
|
46
|
-
return snap.networks.find(network => network.chainNamespace === snap.activeNamespace && network.id?.toString() === connection.activeChain?.split(':')[1]);
|
|
47
|
-
},
|
|
48
|
-
activeCaipNetworkId: get => {
|
|
49
|
-
const snap = get(baseState);
|
|
50
|
-
if (!snap.activeNamespace) return undefined;
|
|
51
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
52
|
-
if (!connection) return undefined;
|
|
53
|
-
return connection.activeChain;
|
|
54
|
-
},
|
|
55
|
-
walletInfo: get => {
|
|
56
|
-
const snap = get(baseState);
|
|
57
|
-
if (!snap.activeNamespace) return undefined;
|
|
58
|
-
return snap.connections[snap.activeNamespace]?.wallet;
|
|
59
|
-
}
|
|
60
|
-
}, {
|
|
61
|
-
proxy: baseState // Link derived proxy to the base state proxy
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
// -- Controller ---------------------------------------- //
|
|
65
|
-
export const ConnectionsController = {
|
|
66
|
-
state: derivedState,
|
|
67
|
-
setActiveNamespace(namespace) {
|
|
68
|
-
baseState.activeNamespace = namespace;
|
|
69
|
-
StorageUtil.setActiveNamespace(namespace);
|
|
70
|
-
},
|
|
71
|
-
storeConnection({
|
|
72
|
-
namespace,
|
|
73
|
-
adapter,
|
|
74
|
-
accounts,
|
|
75
|
-
chains,
|
|
76
|
-
wallet,
|
|
77
|
-
activeChain
|
|
78
|
-
}) {
|
|
79
|
-
baseState.connections[namespace] = {
|
|
80
|
-
balances: {},
|
|
81
|
-
activeChain: activeChain ?? chains[0],
|
|
82
|
-
adapter: ref(adapter),
|
|
83
|
-
accounts,
|
|
84
|
-
chains,
|
|
85
|
-
wallet
|
|
86
|
-
};
|
|
87
|
-
},
|
|
88
|
-
updateAccounts(namespace, accounts) {
|
|
89
|
-
const connection = baseState.connections[namespace];
|
|
90
|
-
if (!connection) {
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
connection.accounts = accounts;
|
|
94
|
-
},
|
|
95
|
-
updateBalance(namespace, address, balance) {
|
|
96
|
-
const connection = baseState.connections[namespace];
|
|
97
|
-
if (!connection) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
connection.balances[address] = balance;
|
|
101
|
-
},
|
|
102
|
-
setActiveChain(namespace, chain) {
|
|
103
|
-
const connection = baseState.connections[namespace];
|
|
104
|
-
if (!connection) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
connection.activeChain = chain;
|
|
108
|
-
},
|
|
109
|
-
setNetworks(networks) {
|
|
110
|
-
baseState.networks = networks;
|
|
111
|
-
},
|
|
112
|
-
getConnectedNetworks() {
|
|
113
|
-
return baseState.networks.filter(network => baseState.connections[network.chainNamespace]?.chains.includes(network.caipNetworkId));
|
|
114
|
-
},
|
|
115
|
-
async disconnect(namespace, isInternal = true) {
|
|
116
|
-
const connection = baseState.connections[namespace];
|
|
117
|
-
if (!connection) return;
|
|
118
|
-
|
|
119
|
-
// Get the current connector from the adapter
|
|
120
|
-
const connector = connection.adapter.connector;
|
|
121
|
-
if (!connector) return;
|
|
122
|
-
|
|
123
|
-
// Find all namespaces that use the same connector
|
|
124
|
-
const namespacesUsingConnector = Object.keys(baseState.connections).filter(ns => baseState.connections[ns]?.adapter.connector === connector);
|
|
125
|
-
|
|
126
|
-
// Unsubscribe all event listeners from the adapter
|
|
127
|
-
namespacesUsingConnector.forEach(ns => {
|
|
128
|
-
const _connection = baseState.connections[ns];
|
|
129
|
-
if (_connection?.adapter) {
|
|
130
|
-
_connection.adapter.removeAllListeners();
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
// Disconnect the adapter
|
|
135
|
-
if (isInternal) {
|
|
136
|
-
await connection.adapter.disconnect();
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// Remove all namespaces that used this connector
|
|
140
|
-
namespacesUsingConnector.forEach(ns => {
|
|
141
|
-
delete baseState.connections[ns];
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
// Remove activeNamespace if it is in the list of namespaces using the connector
|
|
145
|
-
if (baseState.activeNamespace && (baseState.activeNamespace === namespace || namespacesUsingConnector.includes(baseState.activeNamespace))) {
|
|
146
|
-
baseState.activeNamespace = undefined;
|
|
147
|
-
StorageUtil.setActiveNamespace(undefined);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
//# sourceMappingURL=ConnectionsController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["proxy","ref","derive","StorageUtil","baseState","activeNamespace","undefined","connections","networks","derivedState","activeAddress","get","snap","connection","accounts","length","activeAccount","find","account","startsWith","activeChain","activeBalance","balances","Object","keys","activeNetwork","network","chainNamespace","id","toString","split","activeCaipNetworkId","walletInfo","wallet","ConnectionsController","state","setActiveNamespace","namespace","storeConnection","adapter","chains","updateAccounts","updateBalance","address","balance","setActiveChain","chain","setNetworks","getConnectedNetworks","filter","includes","caipNetworkId","disconnect","isInternal","connector","namespacesUsingConnector","ns","forEach","_connection","removeAllListeners"],"sourceRoot":"../../../src","sources":["controllers/ConnectionsController.ts"],"mappings":"AAAA,SAASA,KAAK,EAAEC,GAAG,QAAQ,QAAQ;AACnC,SAASC,MAAM,QAAQ,cAAc;AAUrC,SAASC,WAAW,QAAQ,sBAAsB;;AAElD;;AAGA;;AAgBA;AACA,MAAMC,SAAS,GAAGJ,KAAK,CAA6B;EAClDK,eAAe,EAAEC,SAAS;EAC1BC,WAAW,EAAE,CAAC,CAAC;EACfC,QAAQ,EAAE;AACZ,CAAC,CAAC;AAEF,MAAMC,YAAY,GAAGP,MAAM,CACzB;EACEQ,aAAa,EAAGC,GAAG,IAA8B;IAC/C,MAAMC,IAAI,GAAGD,GAAG,CAACP,SAAS,CAAC;IAE3B,IAAI,CAACQ,IAAI,CAACP,eAAe,EAAE,OAAOC,SAAS;IAE3C,MAAMO,UAAU,GAAGD,IAAI,CAACL,WAAW,CAACK,IAAI,CAACP,eAAe,CAAC;IAEzD,IAAI,CAACQ,UAAU,IAAI,CAACA,UAAU,CAACC,QAAQ,IAAID,UAAU,CAACC,QAAQ,CAACC,MAAM,KAAK,CAAC,EAAE;MAC3E,OAAOT,SAAS;IAClB;;IAEA;IACA,MAAMU,aAAa,GAAGH,UAAU,CAACC,QAAQ,CAACG,IAAI,CAACC,OAAO,IACpDA,OAAO,CAACC,UAAU,CAACN,UAAU,CAACO,WAAW,CAC3C,CAAC;IAED,OAAOJ,aAAa;EACtB,CAAC;EACDK,aAAa,EAAGV,GAAG,IAA0B;IAC3C,MAAMC,IAAI,GAAGD,GAAG,CAACP,SAAS,CAAC;IAE3B,IAAI,CAACQ,IAAI,CAACP,eAAe,EAAE,OAAOC,SAAS;IAC3C,MAAMO,UAAU,GAAGD,IAAI,CAACL,WAAW,CAACK,IAAI,CAACP,eAAe,CAAC;IAEzD,IAAI,CAACQ,UAAU,IAAI,CAACA,UAAU,CAACC,QAAQ,IAAID,UAAU,CAACC,QAAQ,CAACC,MAAM,KAAK,CAAC,EAAE;MAC3E,OAAOT,SAAS;IAClB;IAEA,MAAMU,aAAa,GAAGH,UAAU,CAACC,QAAQ,CAACG,IAAI,CAACC,OAAO,IACpDA,OAAO,CAACC,UAAU,CAACN,UAAU,CAACO,WAAW,CAC3C,CAAC;IAED,IACE,CAACP,UAAU,IACX,CAACA,UAAU,CAACS,QAAQ,IACpB,CAACN,aAAa,IACdO,MAAM,CAACC,IAAI,CAACX,UAAU,CAACS,QAAQ,CAAC,CAACP,MAAM,KAAK,CAAC,EAC7C;MACA,OAAOT,SAAS;IAClB;IAEA,OAAOO,UAAU,CAACS,QAAQ,CAACN,aAAa,CAAC;EAC3C,CAAC;EACDS,aAAa,EAAGd,GAAG,IAAgC;IACjD,MAAMC,IAAI,GAAGD,GAAG,CAACP,SAAS,CAAC;IAE3B,IAAI,CAACQ,IAAI,CAACP,eAAe,EAAE,OAAOC,SAAS;IAE3C,MAAMO,UAAU,GAAGD,IAAI,CAACL,WAAW,CAACK,IAAI,CAACP,eAAe,CAAC;IAEzD,IAAI,CAACQ,UAAU,EAAE,OAAOP,SAAS;IAEjC,OAAOM,IAAI,CAACJ,QAAQ,CAACS,IAAI,CACvBS,OAAO,IACLA,OAAO,CAACC,cAAc,KAAKf,IAAI,CAACP,eAAe,IAC/CqB,OAAO,CAACE,EAAE,EAAEC,QAAQ,CAAC,CAAC,KAAKhB,UAAU,CAACO,WAAW,EAAEU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CACnE,CAAC;EACH,CAAC;EACDC,mBAAmB,EAAGpB,GAAG,IAAgC;IACvD,MAAMC,IAAI,GAAGD,GAAG,CAACP,SAAS,CAAC;IAE3B,IAAI,CAACQ,IAAI,CAACP,eAAe,EAAE,OAAOC,SAAS;IAE3C,MAAMO,UAAU,GAAGD,IAAI,CAACL,WAAW,CAACK,IAAI,CAACP,eAAe,CAAC;IAEzD,IAAI,CAACQ,UAAU,EAAE,OAAOP,SAAS;IAEjC,OAAOO,UAAU,CAACO,WAAW;EAC/B,CAAC;EACDY,UAAU,EAAGrB,GAAG,IAA6B;IAC3C,MAAMC,IAAI,GAAGD,GAAG,CAACP,SAAS,CAAC;IAE3B,IAAI,CAACQ,IAAI,CAACP,eAAe,EAAE,OAAOC,SAAS;IAE3C,OAAOM,IAAI,CAACL,WAAW,CAACK,IAAI,CAACP,eAAe,CAAC,EAAE4B,MAAM;EACvD;AACF,CAAC,EACD;EACEjC,KAAK,EAAEI,SAAS,CAAC;AACnB,CACF,CAAC;;AAED;AACA,OAAO,MAAM8B,qBAAqB,GAAG;EACnCC,KAAK,EAAE1B,YAAY;EAEnB2B,kBAAkBA,CAACC,SAA0B,EAAE;IAC7CjC,SAAS,CAACC,eAAe,GAAGgC,SAAS;IACrClC,WAAW,CAACiC,kBAAkB,CAACC,SAAS,CAAC;EAC3C,CAAC;EAEDC,eAAeA,CAAC;IACdD,SAAS;IACTE,OAAO;IACPzB,QAAQ;IACR0B,MAAM;IACNP,MAAM;IACNb;EAQF,CAAC,EAAE;IACDhB,SAAS,CAACG,WAAW,CAAC8B,SAAS,CAAC,GAAG;MACjCf,QAAQ,EAAE,CAAC,CAAC;MACZF,WAAW,EAAEA,WAAW,IAAIoB,MAAM,CAAC,CAAC,CAAE;MACtCD,OAAO,EAAEtC,GAAG,CAACsC,OAAO,CAAC;MACrBzB,QAAQ;MACR0B,MAAM;MACNP;IACF,CAAC;EACH,CAAC;EAEDQ,cAAcA,CAACJ,SAAiB,EAAEvB,QAAuB,EAAE;IACzD,MAAMD,UAAU,GAAGT,SAAS,CAACG,WAAW,CAAC8B,SAAS,CAAC;IACnD,IAAI,CAACxB,UAAU,EAAE;MACf;IACF;IACAA,UAAU,CAACC,QAAQ,GAAGA,QAAQ;EAChC,CAAC;EAED4B,aAAaA,CAACL,SAAiB,EAAEM,OAAoB,EAAEC,OAAgB,EAAE;IACvE,MAAM/B,UAAU,GAAGT,SAAS,CAACG,WAAW,CAAC8B,SAAS,CAAC;IACnD,IAAI,CAACxB,UAAU,EAAE;MACf;IACF;IACAA,UAAU,CAACS,QAAQ,CAACqB,OAAO,CAAC,GAAGC,OAAO;EACxC,CAAC;EAEDC,cAAcA,CAACR,SAAiB,EAAES,KAAoB,EAAE;IACtD,MAAMjC,UAAU,GAAGT,SAAS,CAACG,WAAW,CAAC8B,SAAS,CAAC;IAEnD,IAAI,CAACxB,UAAU,EAAE;MACf;IACF;IAEAA,UAAU,CAACO,WAAW,GAAG0B,KAAK;EAChC,CAAC;EAEDC,WAAWA,CAACvC,QAAyB,EAAE;IACrCJ,SAAS,CAACI,QAAQ,GAAGA,QAAQ;EAC/B,CAAC;EAEDwC,oBAAoBA,CAAA,EAAG;IACrB,OAAO5C,SAAS,CAACI,QAAQ,CAACyC,MAAM,CAC9BvB,OAAO,IACLtB,SAAS,CAACG,WAAW,CAACmB,OAAO,CAACC,cAAc,CAAC,EAAEa,MAAM,CAACU,QAAQ,CAACxB,OAAO,CAACyB,aAAa,CACxF,CAAC;EACH,CAAC;EAED,MAAMC,UAAUA,CAACf,SAAiB,EAAEgB,UAAU,GAAG,IAAI,EAAE;IACrD,MAAMxC,UAAU,GAAGT,SAAS,CAACG,WAAW,CAAC8B,SAAS,CAAC;IACnD,IAAI,CAACxB,UAAU,EAAE;;IAEjB;IACA,MAAMyC,SAAS,GAAGzC,UAAU,CAAC0B,OAAO,CAACe,SAAS;IAC9C,IAAI,CAACA,SAAS,EAAE;;IAEhB;IACA,MAAMC,wBAAwB,GAAGhC,MAAM,CAACC,IAAI,CAACpB,SAAS,CAACG,WAAW,CAAC,CAAC0C,MAAM,CACxEO,EAAE,IAAIpD,SAAS,CAACG,WAAW,CAACiD,EAAE,CAAC,EAAEjB,OAAO,CAACe,SAAS,KAAKA,SACzD,CAAC;;IAED;IACAC,wBAAwB,CAACE,OAAO,CAACD,EAAE,IAAI;MACrC,MAAME,WAAW,GAAGtD,SAAS,CAACG,WAAW,CAACiD,EAAE,CAAC;MAC7C,IAAIE,WAAW,EAAEnB,OAAO,EAAE;QACxBmB,WAAW,CAACnB,OAAO,CAACoB,kBAAkB,CAAC,CAAC;MAC1C;IACF,CAAC,CAAC;;IAEF;IACA,IAAIN,UAAU,EAAE;MACd,MAAMxC,UAAU,CAAC0B,OAAO,CAACa,UAAU,CAAC,CAAC;IACvC;;IAEA;IACAG,wBAAwB,CAACE,OAAO,CAACD,EAAE,IAAI;MACrC,OAAOpD,SAAS,CAACG,WAAW,CAACiD,EAAE,CAAC;IAClC,CAAC,CAAC;;IAEF;IACA,IACEpD,SAAS,CAACC,eAAe,KACxBD,SAAS,CAACC,eAAe,KAAKgC,SAAS,IACtCkB,wBAAwB,CAACL,QAAQ,CAAC9C,SAAS,CAACC,eAAe,CAAC,CAAC,EAC/D;MACAD,SAAS,CAACC,eAAe,GAAGC,SAAS;MACrCH,WAAW,CAACiC,kBAAkB,CAAC9B,SAAS,CAAC;IAC3C;EACF;AACF,CAAC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import type { AppKitNetwork, BlockchainAdapter, CaipAddress, CaipNetworkId, ChainNamespace, GetBalanceResponse, 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
|
-
chains: CaipNetworkId[];
|
|
8
|
-
activeChain: CaipNetworkId;
|
|
9
|
-
wallet?: WalletInfo;
|
|
10
|
-
}
|
|
11
|
-
export interface ConnectionsControllerState {
|
|
12
|
-
activeNamespace?: ChainNamespace;
|
|
13
|
-
connections: Record<string, Connection>;
|
|
14
|
-
networks: AppKitNetwork[];
|
|
15
|
-
}
|
|
16
|
-
export declare const ConnectionsController: {
|
|
17
|
-
state: ConnectionsControllerState & {
|
|
18
|
-
activeAddress: `${string}:${string}:${string}` | undefined;
|
|
19
|
-
activeBalance: GetBalanceResponse | undefined;
|
|
20
|
-
activeNetwork: AppKitNetwork | undefined;
|
|
21
|
-
activeCaipNetworkId: `${string}:${string}` | undefined;
|
|
22
|
-
walletInfo: WalletInfo | undefined;
|
|
23
|
-
};
|
|
24
|
-
setActiveNamespace(namespace?: ChainNamespace): void;
|
|
25
|
-
storeConnection({ namespace, adapter, accounts, chains, wallet, activeChain }: {
|
|
26
|
-
namespace: string;
|
|
27
|
-
adapter: BlockchainAdapter;
|
|
28
|
-
accounts: CaipAddress[];
|
|
29
|
-
chains: CaipNetworkId[];
|
|
30
|
-
wallet?: WalletInfo | undefined;
|
|
31
|
-
activeChain?: `${string}:${string}` | undefined;
|
|
32
|
-
}): void;
|
|
33
|
-
updateAccounts(namespace: string, accounts: CaipAddress[]): void;
|
|
34
|
-
updateBalance(namespace: string, address: CaipAddress, balance: Balance): void;
|
|
35
|
-
setActiveChain(namespace: string, chain: CaipNetworkId): void;
|
|
36
|
-
setNetworks(networks: AppKitNetwork[]): void;
|
|
37
|
-
getConnectedNetworks(): AppKitNetwork[];
|
|
38
|
-
disconnect(namespace: string, isInternal?: boolean): Promise<void>;
|
|
39
|
-
};
|
|
40
|
-
export {};
|
|
41
|
-
//# 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,KAAK,EACV,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,UAAU,EACX,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,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,EAAE,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,eAAe,CAAC,EAAE,cAAc,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AA8FD,eAAO,MAAM,qBAAqB;;;;;;;;mCAGD,cAAc;;mBAahC,MAAM;iBACR,iBAAiB;kBAChB,WAAW,EAAE;gBACf,aAAa,EAAE;;;;8BAcC,MAAM,YAAY,WAAW,EAAE;6BAQhC,MAAM,WAAW,WAAW,WAAW,OAAO;8BAQ7C,MAAM,SAAS,aAAa;0BAUhC,aAAa,EAAE;;0BAWT,MAAM;CAyCnC,CAAC"}
|
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import { proxy, ref } from 'valtio';
|
|
2
|
-
import { derive } from 'valtio/utils';
|
|
3
|
-
import type {
|
|
4
|
-
AppKitNetwork,
|
|
5
|
-
BlockchainAdapter,
|
|
6
|
-
CaipAddress,
|
|
7
|
-
CaipNetworkId,
|
|
8
|
-
ChainNamespace,
|
|
9
|
-
GetBalanceResponse,
|
|
10
|
-
WalletInfo
|
|
11
|
-
} from '@reown/appkit-common-react-native';
|
|
12
|
-
import { StorageUtil } from '../utils/StorageUtil';
|
|
13
|
-
|
|
14
|
-
// -- Types --------------------------------------------- //
|
|
15
|
-
type Balance = GetBalanceResponse;
|
|
16
|
-
|
|
17
|
-
//TODO: balance could be elsewhere
|
|
18
|
-
interface Connection {
|
|
19
|
-
accounts: CaipAddress[];
|
|
20
|
-
balances: Record<CaipAddress, Balance>; //TODO: make this an array of balances
|
|
21
|
-
adapter: BlockchainAdapter;
|
|
22
|
-
chains: CaipNetworkId[];
|
|
23
|
-
activeChain: CaipNetworkId;
|
|
24
|
-
wallet?: WalletInfo;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface ConnectionsControllerState {
|
|
28
|
-
activeNamespace?: ChainNamespace;
|
|
29
|
-
connections: Record<string, Connection>;
|
|
30
|
-
networks: AppKitNetwork[];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// -- State --------------------------------------------- //
|
|
34
|
-
const baseState = proxy<ConnectionsControllerState>({
|
|
35
|
-
activeNamespace: undefined,
|
|
36
|
-
connections: {},
|
|
37
|
-
networks: []
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const derivedState = derive(
|
|
41
|
-
{
|
|
42
|
-
activeAddress: (get): CaipAddress | undefined => {
|
|
43
|
-
const snap = get(baseState);
|
|
44
|
-
|
|
45
|
-
if (!snap.activeNamespace) return undefined;
|
|
46
|
-
|
|
47
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
48
|
-
|
|
49
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
50
|
-
return undefined;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
//TODO: what happens if there are several accounts on the same chain?
|
|
54
|
-
const activeAccount = connection.accounts.find(account =>
|
|
55
|
-
account.startsWith(connection.activeChain)
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
return activeAccount;
|
|
59
|
-
},
|
|
60
|
-
activeBalance: (get): Balance | undefined => {
|
|
61
|
-
const snap = get(baseState);
|
|
62
|
-
|
|
63
|
-
if (!snap.activeNamespace) return undefined;
|
|
64
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
65
|
-
|
|
66
|
-
if (!connection || !connection.accounts || connection.accounts.length === 0) {
|
|
67
|
-
return undefined;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const activeAccount = connection.accounts.find(account =>
|
|
71
|
-
account.startsWith(connection.activeChain)
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
if (
|
|
75
|
-
!connection ||
|
|
76
|
-
!connection.balances ||
|
|
77
|
-
!activeAccount ||
|
|
78
|
-
Object.keys(connection.balances).length === 0
|
|
79
|
-
) {
|
|
80
|
-
return undefined;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return connection.balances[activeAccount];
|
|
84
|
-
},
|
|
85
|
-
activeNetwork: (get): AppKitNetwork | undefined => {
|
|
86
|
-
const snap = get(baseState);
|
|
87
|
-
|
|
88
|
-
if (!snap.activeNamespace) return undefined;
|
|
89
|
-
|
|
90
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
91
|
-
|
|
92
|
-
if (!connection) return undefined;
|
|
93
|
-
|
|
94
|
-
return snap.networks.find(
|
|
95
|
-
network =>
|
|
96
|
-
network.chainNamespace === snap.activeNamespace &&
|
|
97
|
-
network.id?.toString() === connection.activeChain?.split(':')[1]
|
|
98
|
-
);
|
|
99
|
-
},
|
|
100
|
-
activeCaipNetworkId: (get): CaipNetworkId | undefined => {
|
|
101
|
-
const snap = get(baseState);
|
|
102
|
-
|
|
103
|
-
if (!snap.activeNamespace) return undefined;
|
|
104
|
-
|
|
105
|
-
const connection = snap.connections[snap.activeNamespace];
|
|
106
|
-
|
|
107
|
-
if (!connection) return undefined;
|
|
108
|
-
|
|
109
|
-
return connection.activeChain;
|
|
110
|
-
},
|
|
111
|
-
walletInfo: (get): WalletInfo | undefined => {
|
|
112
|
-
const snap = get(baseState);
|
|
113
|
-
|
|
114
|
-
if (!snap.activeNamespace) return undefined;
|
|
115
|
-
|
|
116
|
-
return snap.connections[snap.activeNamespace]?.wallet;
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
proxy: baseState // Link derived proxy to the base state proxy
|
|
121
|
-
}
|
|
122
|
-
);
|
|
123
|
-
|
|
124
|
-
// -- Controller ---------------------------------------- //
|
|
125
|
-
export const ConnectionsController = {
|
|
126
|
-
state: derivedState,
|
|
127
|
-
|
|
128
|
-
setActiveNamespace(namespace?: ChainNamespace) {
|
|
129
|
-
baseState.activeNamespace = namespace;
|
|
130
|
-
StorageUtil.setActiveNamespace(namespace);
|
|
131
|
-
},
|
|
132
|
-
|
|
133
|
-
storeConnection({
|
|
134
|
-
namespace,
|
|
135
|
-
adapter,
|
|
136
|
-
accounts,
|
|
137
|
-
chains,
|
|
138
|
-
wallet,
|
|
139
|
-
activeChain
|
|
140
|
-
}: {
|
|
141
|
-
namespace: string;
|
|
142
|
-
adapter: BlockchainAdapter;
|
|
143
|
-
accounts: CaipAddress[];
|
|
144
|
-
chains: CaipNetworkId[];
|
|
145
|
-
wallet?: WalletInfo;
|
|
146
|
-
activeChain?: CaipNetworkId;
|
|
147
|
-
}) {
|
|
148
|
-
baseState.connections[namespace] = {
|
|
149
|
-
balances: {},
|
|
150
|
-
activeChain: activeChain ?? chains[0]!,
|
|
151
|
-
adapter: ref(adapter),
|
|
152
|
-
accounts,
|
|
153
|
-
chains,
|
|
154
|
-
wallet
|
|
155
|
-
};
|
|
156
|
-
},
|
|
157
|
-
|
|
158
|
-
updateAccounts(namespace: string, accounts: CaipAddress[]) {
|
|
159
|
-
const connection = baseState.connections[namespace];
|
|
160
|
-
if (!connection) {
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
connection.accounts = accounts;
|
|
164
|
-
},
|
|
165
|
-
|
|
166
|
-
updateBalance(namespace: string, address: CaipAddress, balance: Balance) {
|
|
167
|
-
const connection = baseState.connections[namespace];
|
|
168
|
-
if (!connection) {
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
connection.balances[address] = balance;
|
|
172
|
-
},
|
|
173
|
-
|
|
174
|
-
setActiveChain(namespace: string, chain: CaipNetworkId) {
|
|
175
|
-
const connection = baseState.connections[namespace];
|
|
176
|
-
|
|
177
|
-
if (!connection) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
connection.activeChain = chain;
|
|
182
|
-
},
|
|
183
|
-
|
|
184
|
-
setNetworks(networks: AppKitNetwork[]) {
|
|
185
|
-
baseState.networks = networks;
|
|
186
|
-
},
|
|
187
|
-
|
|
188
|
-
getConnectedNetworks() {
|
|
189
|
-
return baseState.networks.filter(
|
|
190
|
-
network =>
|
|
191
|
-
baseState.connections[network.chainNamespace]?.chains.includes(network.caipNetworkId)
|
|
192
|
-
);
|
|
193
|
-
},
|
|
194
|
-
|
|
195
|
-
async disconnect(namespace: string, isInternal = true) {
|
|
196
|
-
const connection = baseState.connections[namespace];
|
|
197
|
-
if (!connection) return;
|
|
198
|
-
|
|
199
|
-
// Get the current connector from the adapter
|
|
200
|
-
const connector = connection.adapter.connector;
|
|
201
|
-
if (!connector) return;
|
|
202
|
-
|
|
203
|
-
// Find all namespaces that use the same connector
|
|
204
|
-
const namespacesUsingConnector = Object.keys(baseState.connections).filter(
|
|
205
|
-
ns => baseState.connections[ns]?.adapter.connector === connector
|
|
206
|
-
);
|
|
207
|
-
|
|
208
|
-
// Unsubscribe all event listeners from the adapter
|
|
209
|
-
namespacesUsingConnector.forEach(ns => {
|
|
210
|
-
const _connection = baseState.connections[ns];
|
|
211
|
-
if (_connection?.adapter) {
|
|
212
|
-
_connection.adapter.removeAllListeners();
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
// Disconnect the adapter
|
|
217
|
-
if (isInternal) {
|
|
218
|
-
await connection.adapter.disconnect();
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
// Remove all namespaces that used this connector
|
|
222
|
-
namespacesUsingConnector.forEach(ns => {
|
|
223
|
-
delete baseState.connections[ns];
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
// Remove activeNamespace if it is in the list of namespaces using the connector
|
|
227
|
-
if (
|
|
228
|
-
baseState.activeNamespace &&
|
|
229
|
-
(baseState.activeNamespace === namespace ||
|
|
230
|
-
namespacesUsingConnector.includes(baseState.activeNamespace))
|
|
231
|
-
) {
|
|
232
|
-
baseState.activeNamespace = undefined;
|
|
233
|
-
StorageUtil.setActiveNamespace(undefined);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
};
|