@subwallet/extension-base 1.3.45-1 → 1.3.47-0
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/background/KoniTypes.d.ts +5 -0
- package/background/KoniTypes.js +5 -0
- package/background/types.d.ts +2 -0
- package/cjs/background/KoniTypes.js +7 -1
- package/cjs/core/logic-validation/request.js +55 -28
- package/cjs/core/utils.js +22 -0
- package/cjs/koni/api/nft/ordinal_nft/index.js +3 -2
- package/cjs/koni/background/handlers/Extension.js +84 -61
- package/cjs/koni/background/handlers/State.js +3 -0
- package/cjs/koni/background/handlers/Tabs.js +11 -3
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/evm/index.js +64 -105
- package/cjs/page/index.js +5 -3
- package/cjs/page/substrate/Accounts.js +2 -1
- package/cjs/services/balance-service/helpers/subscribe/index.js +3 -76
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +8 -14
- package/cjs/services/buy-service/index.js +2 -0
- package/cjs/services/chain-service/index.js +3 -0
- package/cjs/services/chain-service/utils/index.js +34 -1
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/constants/chains.js +2 -1
- package/cjs/services/earning-service/handlers/native-staking/amplitude.js +32 -0
- package/cjs/services/earning-service/handlers/native-staking/astar.js +18 -0
- package/cjs/services/earning-service/handlers/native-staking/base.js +40 -29
- package/cjs/services/earning-service/handlers/native-staking/dtao.js +5 -0
- package/cjs/services/earning-service/handlers/native-staking/mythos.js +28 -0
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +17 -0
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +25 -2
- package/cjs/services/earning-service/handlers/native-staking/tao.js +5 -0
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +6 -3
- package/cjs/services/earning-service/service.js +65 -22
- package/cjs/services/history-service/index.js +12 -7
- package/cjs/services/keyring-service/context/handlers/Json.js +2 -1
- package/cjs/services/keyring-service/context/handlers/Ledger.js +7 -2
- package/cjs/services/request-service/handler/AuthRequestHandler.js +30 -6
- package/cjs/services/subscan-service/index.js +35 -104
- package/cjs/services/transaction-service/utils.js +10 -1
- package/cjs/strategy/api-request-strategy/index.js +1 -0
- package/cjs/strategy/api-request-strategy/utils/index.js +2 -2
- package/cjs/strategy/api-request-strategy-v2/index.js +138 -0
- package/cjs/strategy/api-request-strategy-v2/types.js +1 -0
- package/cjs/types/account/info/keyring.js +1 -0
- package/cjs/utils/account/analyze.js +5 -2
- package/cjs/utils/account/common.js +93 -2
- package/cjs/utils/account/transform.js +10 -0
- package/cjs/utils/asset.js +9 -2
- package/cjs/utils/gear/combine.js +4 -3
- package/cjs/utils/gear/vft.js +104 -135
- package/cjs/utils/staticData/index.js +7 -2
- package/core/logic-validation/request.js +31 -4
- package/core/types.d.ts +3 -2
- package/core/utils.js +24 -2
- package/koni/api/nft/ordinal_nft/index.js +3 -2
- package/koni/background/handlers/Extension.js +31 -8
- package/koni/background/handlers/State.js +4 -1
- package/koni/background/handlers/Tabs.js +11 -4
- package/package.json +21 -9
- package/packageInfo.js +1 -1
- package/page/evm/index.d.ts +9 -18
- package/page/evm/index.js +62 -101
- package/page/index.js +5 -3
- package/page/substrate/Accounts.js +2 -1
- package/services/balance-service/helpers/subscribe/index.d.ts +1 -11
- package/services/balance-service/helpers/subscribe/index.js +3 -74
- package/services/balance-service/helpers/subscribe/substrate/index.js +8 -14
- package/services/buy-service/index.js +2 -0
- package/services/chain-service/index.d.ts +1 -0
- package/services/chain-service/index.js +3 -0
- package/services/chain-service/utils/index.d.ts +10 -2
- package/services/chain-service/utils/index.js +29 -2
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +2 -1
- package/services/earning-service/handlers/native-staking/amplitude.d.ts +1 -0
- package/services/earning-service/handlers/native-staking/amplitude.js +32 -0
- package/services/earning-service/handlers/native-staking/astar.d.ts +1 -0
- package/services/earning-service/handlers/native-staking/astar.js +18 -0
- package/services/earning-service/handlers/native-staking/base.d.ts +2 -0
- package/services/earning-service/handlers/native-staking/base.js +40 -29
- package/services/earning-service/handlers/native-staking/dtao.d.ts +1 -0
- package/services/earning-service/handlers/native-staking/dtao.js +5 -0
- package/services/earning-service/handlers/native-staking/mythos.d.ts +1 -0
- package/services/earning-service/handlers/native-staking/mythos.js +28 -0
- package/services/earning-service/handlers/native-staking/para-chain.d.ts +1 -0
- package/services/earning-service/handlers/native-staking/para-chain.js +17 -0
- package/services/earning-service/handlers/native-staking/relay-chain.d.ts +1 -0
- package/services/earning-service/handlers/native-staking/relay-chain.js +25 -2
- package/services/earning-service/handlers/native-staking/tao.d.ts +1 -0
- package/services/earning-service/handlers/native-staking/tao.js +5 -0
- package/services/earning-service/handlers/nomination-pool/index.d.ts +1 -0
- package/services/earning-service/handlers/nomination-pool/index.js +6 -3
- package/services/earning-service/service.d.ts +3 -0
- package/services/earning-service/service.js +68 -25
- package/services/history-service/index.js +12 -7
- package/services/keyring-service/context/handlers/Json.js +2 -1
- package/services/keyring-service/context/handlers/Ledger.js +7 -2
- package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
- package/services/request-service/handler/AuthRequestHandler.js +30 -6
- package/services/request-service/types.d.ts +1 -0
- package/services/subscan-service/index.d.ts +13 -27
- package/services/subscan-service/index.js +26 -95
- package/services/transaction-service/utils.js +11 -2
- package/strategy/api-request-strategy/context/base.d.ts +2 -6
- package/strategy/api-request-strategy/index.js +1 -0
- package/strategy/api-request-strategy/types.d.ts +4 -2
- package/strategy/api-request-strategy/utils/index.js +2 -2
- package/strategy/api-request-strategy-v2/index.d.ts +22 -0
- package/strategy/api-request-strategy-v2/index.js +128 -0
- package/strategy/api-request-strategy-v2/types.d.ts +11 -0
- package/strategy/api-request-strategy-v2/types.js +1 -0
- package/types/account/action/subscribe.d.ts +3 -0
- package/types/account/info/keyring.d.ts +3 -0
- package/types/account/info/keyring.js +1 -0
- package/types/balance/transfer.d.ts +1 -0
- package/types/buy.d.ts +1 -1
- package/utils/account/analyze.js +5 -2
- package/utils/account/common.d.ts +13 -1
- package/utils/account/common.js +91 -2
- package/utils/account/transform.js +10 -0
- package/utils/asset.d.ts +2 -1
- package/utils/asset.js +7 -1
- package/utils/gear/combine.d.ts +2 -1
- package/utils/gear/combine.js +4 -4
- package/utils/gear/vft.d.ts +20 -9
- package/utils/gear/vft.js +104 -135
- package/utils/staticData/assetHubStaking.json +1 -0
- package/utils/staticData/index.d.ts +4 -1
- package/utils/staticData/index.js +5 -1
package/cjs/page/evm/index.js
CHANGED
|
@@ -4,124 +4,51 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.
|
|
7
|
+
exports.createSubWalletEvmProvider = createSubWalletEvmProvider;
|
|
8
8
|
var _safeEventEmitter = _interopRequireDefault(require("@metamask/safe-event-emitter"));
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
10
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
get connected() {
|
|
24
|
-
return this._connected;
|
|
25
|
-
}
|
|
26
|
-
isConnected() {
|
|
27
|
-
return this._connected;
|
|
28
|
-
}
|
|
29
|
-
subscribeExtensionEvents() {
|
|
12
|
+
function createSubWalletEvmProvider(sendMessage, version) {
|
|
13
|
+
const emitter = new _safeEventEmitter.default();
|
|
14
|
+
let connected = true;
|
|
15
|
+
let subscribeFlag = false;
|
|
16
|
+
const provider = Object.assign(emitter, {
|
|
17
|
+
isSubWallet: true,
|
|
18
|
+
isMetaMask: false,
|
|
19
|
+
version
|
|
20
|
+
});
|
|
21
|
+
function subscribeExtensionEvents() {
|
|
30
22
|
if (subscribeFlag) {
|
|
31
23
|
return;
|
|
32
24
|
}
|
|
33
|
-
|
|
25
|
+
sendMessage('evm(events.subscribe)', null, _ref => {
|
|
34
26
|
let {
|
|
35
27
|
payload,
|
|
36
28
|
type
|
|
37
29
|
} = _ref;
|
|
38
30
|
if (['connect', 'disconnect', 'accountsChanged', 'chainChanged', 'message', 'data', 'reconnect', 'error'].includes(type)) {
|
|
39
31
|
if (type === 'connect') {
|
|
40
|
-
|
|
32
|
+
connected = true;
|
|
41
33
|
} else if (type === 'disconnect') {
|
|
42
|
-
|
|
34
|
+
connected = false;
|
|
43
35
|
}
|
|
44
36
|
const finalType = type === 'data' ? 'message' : type;
|
|
45
|
-
|
|
46
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
47
|
-
this.emit(finalType, payload);
|
|
37
|
+
emitter.emit(finalType, payload);
|
|
48
38
|
} else {
|
|
49
39
|
console.warn('Can not handle event', type, payload);
|
|
50
40
|
}
|
|
51
|
-
}).then(
|
|
41
|
+
}).then(() => {
|
|
52
42
|
subscribeFlag = true;
|
|
53
43
|
}).catch(() => {
|
|
54
44
|
subscribeFlag = false;
|
|
55
45
|
});
|
|
56
|
-
subscribeFlag = true;
|
|
57
|
-
}
|
|
58
|
-
async enable() {
|
|
59
|
-
return this.request({
|
|
60
|
-
method: 'eth_requestAccounts'
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
on(eventName, listener) {
|
|
64
|
-
this.subscribeExtensionEvents();
|
|
65
|
-
super.on(eventName, listener);
|
|
66
|
-
return this;
|
|
67
46
|
}
|
|
68
|
-
|
|
69
|
-
this.subscribeExtensionEvents();
|
|
70
|
-
super.once(eventName, listener);
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
request(_ref2) {
|
|
74
|
-
let {
|
|
75
|
-
method,
|
|
76
|
-
params
|
|
77
|
-
} = _ref2;
|
|
78
|
-
// if (!this._isEnable) {
|
|
79
|
-
// if (method === 'eth_accounts') {
|
|
80
|
-
// return this.request<T>({ method: 'eth_requestAccounts' });
|
|
81
|
-
// }
|
|
82
|
-
// }
|
|
83
|
-
|
|
84
|
-
// Subscribe events
|
|
85
|
-
switch (method) {
|
|
86
|
-
case 'eth_requestAccounts':
|
|
87
|
-
return new Promise((resolve, reject) => {
|
|
88
|
-
const origin = document.title !== '' ? document.title : window.location.hostname;
|
|
89
|
-
this.sendMessage('pub(authorize.tabV2)', {
|
|
90
|
-
origin,
|
|
91
|
-
accountAuthTypes: ['evm']
|
|
92
|
-
}).then(() => {
|
|
93
|
-
// Return account list
|
|
94
|
-
this.request({
|
|
95
|
-
method: 'eth_accounts'
|
|
96
|
-
}).then(accounts => {
|
|
97
|
-
// @ts-ignore
|
|
98
|
-
resolve(accounts);
|
|
99
|
-
}).catch(e => {
|
|
100
|
-
reject(e);
|
|
101
|
-
});
|
|
102
|
-
}).catch(e => {
|
|
103
|
-
reject(e);
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
default:
|
|
107
|
-
return new Promise((resolve, reject) => {
|
|
108
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
109
|
-
this.sendMessage('evm(request)', {
|
|
110
|
-
params,
|
|
111
|
-
method
|
|
112
|
-
}).then(result => {
|
|
113
|
-
resolve(result);
|
|
114
|
-
}).catch(e => {
|
|
115
|
-
reject(e);
|
|
116
|
-
});
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
_sendSync(payload) {
|
|
47
|
+
const _sendSync = payload => {
|
|
121
48
|
let result;
|
|
122
49
|
switch (payload.method) {
|
|
123
50
|
case 'net_version':
|
|
124
|
-
result =
|
|
51
|
+
result = version ? `SubWallet v${version}` : null;
|
|
125
52
|
break;
|
|
126
53
|
default:
|
|
127
54
|
throw new Error(`Not support ${payload.method}`);
|
|
@@ -131,29 +58,61 @@ class SubWalletEvmProvider extends _safeEventEmitter.default {
|
|
|
131
58
|
jsonrpc: payload.jsonrpc,
|
|
132
59
|
result
|
|
133
60
|
};
|
|
134
|
-
}
|
|
135
|
-
|
|
61
|
+
};
|
|
62
|
+
provider.isConnected = () => connected;
|
|
63
|
+
provider.request = arg => {
|
|
64
|
+
if (arg.method === 'eth_requestAccounts') {
|
|
65
|
+
const origin = document.title || window.location.hostname;
|
|
66
|
+
return sendMessage('pub(authorize.tabV2)', {
|
|
67
|
+
origin,
|
|
68
|
+
accountAuthTypes: ['evm']
|
|
69
|
+
}).then(() => provider.request({
|
|
70
|
+
method: 'eth_accounts'
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
return sendMessage('evm(request)', arg);
|
|
74
|
+
};
|
|
75
|
+
provider.send = (methodOrPayload, callbackOrArgs) => {
|
|
136
76
|
if (typeof methodOrPayload === 'string' && (!callbackOrArgs || Array.isArray(callbackOrArgs))) {
|
|
137
|
-
return
|
|
77
|
+
return provider.request({
|
|
138
78
|
method: methodOrPayload,
|
|
139
79
|
params: callbackOrArgs
|
|
140
80
|
});
|
|
141
|
-
} else if (
|
|
142
|
-
return
|
|
143
|
-
callbackOrArgs(
|
|
81
|
+
} else if (typeof methodOrPayload === 'object' && typeof callbackOrArgs === 'function') {
|
|
82
|
+
return provider.request(methodOrPayload).then(result => {
|
|
83
|
+
callbackOrArgs(null, result);
|
|
144
84
|
});
|
|
145
85
|
}
|
|
146
|
-
return
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
86
|
+
return _sendSync(methodOrPayload);
|
|
87
|
+
};
|
|
88
|
+
provider.enable = async () => {
|
|
89
|
+
const accounts = await provider.request({
|
|
90
|
+
method: 'eth_requestAccounts'
|
|
91
|
+
});
|
|
92
|
+
connected = accounts.length > 0;
|
|
93
|
+
return accounts;
|
|
94
|
+
};
|
|
95
|
+
provider.sendAsync = (payload, callback) => {
|
|
96
|
+
provider.request(payload).then(result => {
|
|
151
97
|
callback(null, {
|
|
98
|
+
id: payload.id,
|
|
99
|
+
jsonrpc: payload.jsonrpc,
|
|
100
|
+
// @ts-ignore
|
|
152
101
|
result
|
|
153
102
|
});
|
|
154
103
|
}).catch(e => {
|
|
155
104
|
callback(e);
|
|
156
105
|
});
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
|
|
106
|
+
};
|
|
107
|
+
provider.on = (eventName, listener) => {
|
|
108
|
+
subscribeExtensionEvents();
|
|
109
|
+
_safeEventEmitter.default.prototype.on.call(emitter, eventName, listener);
|
|
110
|
+
return provider;
|
|
111
|
+
};
|
|
112
|
+
provider.once = (eventName, listener) => {
|
|
113
|
+
subscribeExtensionEvents();
|
|
114
|
+
_safeEventEmitter.default.prototype.once.call(emitter, eventName, listener);
|
|
115
|
+
return provider;
|
|
116
|
+
};
|
|
117
|
+
return provider;
|
|
118
|
+
}
|
package/cjs/page/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var _ProviderError = require("@subwallet/extension-base/background/errors/Provid
|
|
|
14
14
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
15
15
|
var _bitcoin = _interopRequireDefault(require("@subwallet/extension-base/page/bitcoin"));
|
|
16
16
|
var _cardano = _interopRequireDefault(require("@subwallet/extension-base/page/cardano"));
|
|
17
|
-
var _evm =
|
|
17
|
+
var _evm = require("@subwallet/extension-base/page/evm");
|
|
18
18
|
var _substrate = _interopRequireDefault(require("@subwallet/extension-base/page/substrate"));
|
|
19
19
|
var _defaults = require("../defaults");
|
|
20
20
|
var _getId = require("../utils/getId");
|
|
@@ -48,9 +48,11 @@ function sendMessage(message, request, subscriber) {
|
|
|
48
48
|
|
|
49
49
|
async function enable(origin, opt) {
|
|
50
50
|
const accountAuthTypes = (opt === null || opt === void 0 ? void 0 : opt.accountAuthType) === 'both' ? ['substrate', 'evm'] : [(opt === null || opt === void 0 ? void 0 : opt.accountAuthType) || 'substrate'];
|
|
51
|
+
const canConnectSubstrateEcdsa = accountAuthTypes.includes('evm');
|
|
51
52
|
await sendMessage('pub(authorize.tabV2)', {
|
|
52
53
|
origin,
|
|
53
|
-
accountAuthTypes
|
|
54
|
+
accountAuthTypes,
|
|
55
|
+
canConnectSubstrateEcdsa
|
|
54
56
|
});
|
|
55
57
|
return new _substrate.default(sendMessage);
|
|
56
58
|
}
|
|
@@ -74,7 +76,7 @@ function handleResponse(data) {
|
|
|
74
76
|
}
|
|
75
77
|
}
|
|
76
78
|
function initEvmProvider(version) {
|
|
77
|
-
return
|
|
79
|
+
return (0, _evm.createSubWalletEvmProvider)(sendMessage, version);
|
|
78
80
|
}
|
|
79
81
|
function initCardanoProvider() {
|
|
80
82
|
return new _cardano.default(sendMessage);
|
|
@@ -1,94 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
|
-
exports.getAccountJsonByAddress = void 0;
|
|
8
6
|
exports.subscribeBalance = subscribeBalance;
|
|
9
7
|
var _types = require("@subwallet/chain-list/types");
|
|
10
8
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
|
-
var
|
|
9
|
+
var _bitcoin = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/bitcoin");
|
|
12
10
|
var _cardano = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano");
|
|
13
11
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
14
12
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
15
|
-
var _uiKeyring = _interopRequireDefault(require("@subwallet/ui-keyring"));
|
|
16
13
|
var _ton = require("./ton/ton");
|
|
17
14
|
var _evm = require("./evm");
|
|
18
15
|
var _substrate = require("./substrate");
|
|
19
16
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
20
17
|
// SPDX-License-Identifier: Apache-2.0
|
|
21
18
|
|
|
22
|
-
/**
|
|
23
|
-
* @function getAccountJsonByAddress
|
|
24
|
-
* @desc Get account info by address
|
|
25
|
-
* <p>
|
|
26
|
-
* Note: Use on the background only
|
|
27
|
-
* </p>
|
|
28
|
-
* @param {string} address - Address
|
|
29
|
-
* @returns {AccountJson|null} - Account info or null if not found
|
|
30
|
-
*/
|
|
31
|
-
const getAccountJsonByAddress = address => {
|
|
32
|
-
try {
|
|
33
|
-
const pair = _uiKeyring.default.getPair(address);
|
|
34
|
-
if (pair) {
|
|
35
|
-
return (0, _utils2.pairToAccount)(pair);
|
|
36
|
-
} else {
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
} catch (e) {
|
|
40
|
-
console.warn(e);
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
/** Filter addresses to subscribe by chain info */
|
|
46
|
-
exports.getAccountJsonByAddress = getAccountJsonByAddress;
|
|
47
|
-
const filterAddress = (addresses, chainInfo) => {
|
|
48
|
-
const {
|
|
49
|
-
_bitcoin,
|
|
50
|
-
bitcoin,
|
|
51
|
-
cardano,
|
|
52
|
-
evm,
|
|
53
|
-
substrate,
|
|
54
|
-
ton
|
|
55
|
-
} = (0, _utils2.getAddressesByChainTypeMap)(addresses, chainInfo);
|
|
56
|
-
if ((0, _utils._isChainEvmCompatible)(chainInfo)) {
|
|
57
|
-
return [evm, [bitcoin, substrate, ton, cardano, _bitcoin].flat()];
|
|
58
|
-
} else if ((0, _utils._isChainBitcoinCompatible)(chainInfo)) {
|
|
59
|
-
return [bitcoin, [evm, substrate, ton, cardano, _bitcoin].flat()];
|
|
60
|
-
} else if ((0, _utils._isChainTonCompatible)(chainInfo)) {
|
|
61
|
-
return [ton, [bitcoin, evm, substrate, cardano, _bitcoin].flat()];
|
|
62
|
-
} else if ((0, _utils._isChainCardanoCompatible)(chainInfo)) {
|
|
63
|
-
return [cardano, [bitcoin, evm, substrate, ton, _bitcoin].flat()];
|
|
64
|
-
} else {
|
|
65
|
-
const fetchList = [];
|
|
66
|
-
const unfetchList = [];
|
|
67
|
-
substrate.forEach(address => {
|
|
68
|
-
const account = getAccountJsonByAddress(address);
|
|
69
|
-
if (account) {
|
|
70
|
-
if (account.isHardware) {
|
|
71
|
-
if (account.isGeneric) {
|
|
72
|
-
fetchList.push(address);
|
|
73
|
-
} else {
|
|
74
|
-
const availGen = account.availableGenesisHashes || [];
|
|
75
|
-
const gen = (0, _utils._getSubstrateGenesisHash)(chainInfo);
|
|
76
|
-
if (availGen.includes(gen)) {
|
|
77
|
-
fetchList.push(address);
|
|
78
|
-
} else {
|
|
79
|
-
unfetchList.push(address);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
} else {
|
|
83
|
-
fetchList.push(address);
|
|
84
|
-
}
|
|
85
|
-
} else {
|
|
86
|
-
fetchList.push(address);
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
return [fetchList, [unfetchList, bitcoin, evm, ton, cardano, _bitcoin].flat()];
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
19
|
const handleUnsupportedOrPendingAddresses = (addresses, chainSlug, chainAssetMap, state, callback) => {
|
|
93
20
|
const tokens = (0, _utils2.filterAssetsByChainAndType)(chainAssetMap, chainSlug, [_types._AssetType.NATIVE, _types._AssetType.ERC20, _types._AssetType.PSP22, _types._AssetType.LOCAL, _types._AssetType.GRC20, _types._AssetType.VFT, _types._AssetType.TEP74, _types._AssetType.CIP26]);
|
|
94
21
|
const now = new Date().getTime();
|
|
@@ -120,7 +47,7 @@ function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoM
|
|
|
120
47
|
// Looping over each chain
|
|
121
48
|
const unsubList = Object.values(chainInfoMap).map(async chainInfo => {
|
|
122
49
|
const chainSlug = chainInfo.slug;
|
|
123
|
-
const [useAddresses, notSupportAddresses] =
|
|
50
|
+
const [useAddresses, notSupportAddresses] = (0, _utils2.filterAddressByChainInfo)(addresses, chainInfo);
|
|
124
51
|
if (notSupportAddresses.length) {
|
|
125
52
|
handleUnsupportedOrPendingAddresses(notSupportAddresses, chainSlug, chainAssetMap, _KoniTypes.APIItemState.NOT_SUPPORT, callback);
|
|
126
53
|
}
|
|
@@ -156,7 +83,7 @@ function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoM
|
|
|
156
83
|
}
|
|
157
84
|
const bitcoinApi = bitcoinApiMap[chainSlug];
|
|
158
85
|
if ((0, _utils._isPureBitcoinChain)(chainInfo)) {
|
|
159
|
-
return (0,
|
|
86
|
+
return (0, _bitcoin.subscribeBitcoinBalance)({
|
|
160
87
|
addresses: useAddresses,
|
|
161
88
|
assetMap: chainAssetMap,
|
|
162
89
|
bitcoinApi,
|
|
@@ -338,17 +338,15 @@ const subscribeTokensAccountsPallet = async _ref6 => {
|
|
|
338
338
|
const tokensAccountsKey = 'query_tokens_accounts';
|
|
339
339
|
const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
|
|
340
340
|
const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chainInfo.slug, tokenTypes);
|
|
341
|
-
|
|
342
|
-
// Hotfix balance for gdot
|
|
343
|
-
const getGdotBalance = async () => {
|
|
344
|
-
const gdotBalances = await queryGdotBalance(substrateApi, addresses, assetMap[gdotSlug], extrinsicType);
|
|
345
|
-
callback(gdotBalances);
|
|
346
|
-
};
|
|
347
341
|
const unsubList = await Promise.all(Object.values(tokenMap).map(tokenInfo => {
|
|
348
|
-
|
|
349
|
-
if (tokenInfo.
|
|
342
|
+
var _tokenInfo$metadata;
|
|
343
|
+
if ((_tokenInfo$metadata = tokenInfo.metadata) !== null && _tokenInfo$metadata !== void 0 && _tokenInfo$metadata.isGigaToken) {
|
|
350
344
|
return (0, _rxjs.timer)(0, _constants.CRON_REFRESH_PRICE_INTERVAL).subscribe(() => {
|
|
351
|
-
|
|
345
|
+
const getGigaTokenBalance = async () => {
|
|
346
|
+
const gigaTokenBalances = await queryGigaTokenBalance(substrateApi, addresses, assetMap[tokenInfo.slug], extrinsicType);
|
|
347
|
+
callback(gigaTokenBalances);
|
|
348
|
+
};
|
|
349
|
+
getGigaTokenBalance().catch(console.error);
|
|
352
350
|
});
|
|
353
351
|
}
|
|
354
352
|
try {
|
|
@@ -561,11 +559,7 @@ const subscribeSubnetAlphaPallet = async _ref9 => {
|
|
|
561
559
|
clearInterval(interval);
|
|
562
560
|
};
|
|
563
561
|
};
|
|
564
|
-
|
|
565
|
-
// Hot fix for gdot balance
|
|
566
|
-
|
|
567
|
-
const gdotSlug = 'hydradx_main-LOCAL-GDOT';
|
|
568
|
-
async function queryGdotBalance(substrateApi, addresses, tokenInfo, extrinsicType) {
|
|
562
|
+
async function queryGigaTokenBalance(substrateApi, addresses, tokenInfo, extrinsicType) {
|
|
569
563
|
return await Promise.all(addresses.map(async address => {
|
|
570
564
|
const _balanceInfo = await substrateApi.api.call.currenciesApi.account((0, _utils2._getTokenOnChainAssetId)(tokenInfo), address);
|
|
571
565
|
const balanceInfo = _balanceInfo.toPrimitive();
|
|
@@ -1043,6 +1043,9 @@ class ChainService {
|
|
|
1043
1043
|
async fetchLatestSufficientChains() {
|
|
1044
1044
|
return (await (0, _utils2.fetchStaticData)('chains/supported-sufficient-chains')) || [];
|
|
1045
1045
|
}
|
|
1046
|
+
async fetchAhMapChain() {
|
|
1047
|
+
return await (0, _utils2.fetchStaticData)('asset-hub-staking-map');
|
|
1048
|
+
}
|
|
1046
1049
|
async initChains() {
|
|
1047
1050
|
const storedChainSettings = await this.dbService.getAllChainStore();
|
|
1048
1051
|
const defaultChainInfoMap = filterChainInfoMap(_chainList.ChainInfoMap, ignoredList);
|
|
@@ -28,6 +28,8 @@ var _exportNames = {
|
|
|
28
28
|
_isBridgedToken: true,
|
|
29
29
|
_getTokenMinAmount: true,
|
|
30
30
|
_isChainEvmCompatible: true,
|
|
31
|
+
_isChainCompatibleLedgerEvm: true,
|
|
32
|
+
_isSubstrateEvmCompatibleChain: true,
|
|
31
33
|
_isChainBitcoinCompatible: true,
|
|
32
34
|
_isChainTonCompatible: true,
|
|
33
35
|
_isChainCardanoCompatible: true,
|
|
@@ -56,6 +58,7 @@ var _exportNames = {
|
|
|
56
58
|
_getTokenTypesSupportedByChain: true,
|
|
57
59
|
_getChainNativeTokenBasicInfo: true,
|
|
58
60
|
_getChainNativeTokenSlug: true,
|
|
61
|
+
_getChainSubstrateTokenSymbol: true,
|
|
59
62
|
_isLocalToken: true,
|
|
60
63
|
_isTokenEvmSmartContract: true,
|
|
61
64
|
_isTokenTonSmartContract: true,
|
|
@@ -120,6 +123,7 @@ exports._getChainName = _getChainName;
|
|
|
120
123
|
exports._getChainNativeTokenBasicInfo = _getChainNativeTokenBasicInfo;
|
|
121
124
|
exports._getChainNativeTokenSlug = _getChainNativeTokenSlug;
|
|
122
125
|
exports._getChainSubstrateAddressPrefix = _getChainSubstrateAddressPrefix;
|
|
126
|
+
exports._getChainSubstrateTokenSymbol = _getChainSubstrateTokenSymbol;
|
|
123
127
|
exports._getContractAddressOfToken = _getContractAddressOfToken;
|
|
124
128
|
exports._getCrowdloanUrlFromChain = _getCrowdloanUrlFromChain;
|
|
125
129
|
exports._getCustomAssets = _getCustomAssets;
|
|
@@ -152,6 +156,7 @@ exports._isBridgedToken = _isBridgedToken;
|
|
|
152
156
|
exports._isCIP26Token = _isCIP26Token;
|
|
153
157
|
exports._isChainBitcoinCompatible = _isChainBitcoinCompatible;
|
|
154
158
|
exports._isChainCardanoCompatible = _isChainCardanoCompatible;
|
|
159
|
+
exports._isChainCompatibleLedgerEvm = _isChainCompatibleLedgerEvm;
|
|
155
160
|
exports._isChainEnabled = _isChainEnabled;
|
|
156
161
|
exports._isChainEvmCompatible = _isChainEvmCompatible;
|
|
157
162
|
exports._isChainInfoCompatibleWithAccountInfo = void 0;
|
|
@@ -184,6 +189,7 @@ exports._isPureSubstrateChain = _isPureSubstrateChain;
|
|
|
184
189
|
exports._isPureTonChain = _isPureTonChain;
|
|
185
190
|
exports._isRelayChain = _isRelayChain;
|
|
186
191
|
exports._isSmartContractToken = _isSmartContractToken;
|
|
192
|
+
exports._isSubstrateEvmCompatibleChain = _isSubstrateEvmCompatibleChain;
|
|
187
193
|
exports._isSubstrateParaChain = _isSubstrateParaChain;
|
|
188
194
|
exports._isSubstrateRelayChain = _isSubstrateRelayChain;
|
|
189
195
|
exports._isSupportOrdinal = void 0;
|
|
@@ -358,6 +364,12 @@ function _getTokenMinAmount(tokenInfo) {
|
|
|
358
364
|
function _isChainEvmCompatible(chainInfo) {
|
|
359
365
|
return !!chainInfo.evmInfo;
|
|
360
366
|
}
|
|
367
|
+
function _isChainCompatibleLedgerEvm(chainInfo) {
|
|
368
|
+
return !!chainInfo.evmInfo && chainInfo.evmInfo.evmChainId > 0;
|
|
369
|
+
}
|
|
370
|
+
function _isSubstrateEvmCompatibleChain(chainInfo) {
|
|
371
|
+
return !!chainInfo.evmInfo && !!chainInfo.substrateInfo;
|
|
372
|
+
}
|
|
361
373
|
function _isChainBitcoinCompatible(chainInfo) {
|
|
362
374
|
return !!chainInfo.bitcoinInfo;
|
|
363
375
|
}
|
|
@@ -529,6 +541,13 @@ function _getChainNativeTokenSlug(chainInfo) {
|
|
|
529
541
|
}
|
|
530
542
|
return `${chainInfo.slug}-${_types._AssetType.NATIVE}-${_getChainNativeTokenBasicInfo(chainInfo).symbol}`;
|
|
531
543
|
}
|
|
544
|
+
function _getChainSubstrateTokenSymbol(chainInfo) {
|
|
545
|
+
if (chainInfo.substrateInfo) {
|
|
546
|
+
return chainInfo.substrateInfo.symbol || '';
|
|
547
|
+
} else {
|
|
548
|
+
return '';
|
|
549
|
+
}
|
|
550
|
+
}
|
|
532
551
|
function _isLocalToken(tokenInfo) {
|
|
533
552
|
return tokenInfo.assetType === _types._AssetType.LOCAL;
|
|
534
553
|
}
|
|
@@ -636,6 +655,9 @@ function _getBlockExplorerFromChain(chainInfo) {
|
|
|
636
655
|
} else if (_isPureBitcoinChain(chainInfo)) {
|
|
637
656
|
var _chainInfo$bitcoinInf;
|
|
638
657
|
blockExplorer = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$bitcoinInf = chainInfo.bitcoinInfo) === null || _chainInfo$bitcoinInf === void 0 ? void 0 : _chainInfo$bitcoinInf.blockExplorer;
|
|
658
|
+
} else if (_isPureTonChain(chainInfo)) {
|
|
659
|
+
var _chainInfo$tonInfo;
|
|
660
|
+
blockExplorer = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$tonInfo = chainInfo.tonInfo) === null || _chainInfo$tonInfo === void 0 ? void 0 : _chainInfo$tonInfo.blockExplorer;
|
|
639
661
|
} else {
|
|
640
662
|
var _chainInfo$substrateI18;
|
|
641
663
|
blockExplorer = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$substrateI18 = chainInfo.substrateInfo) === null || _chainInfo$substrateI18 === void 0 ? void 0 : _chainInfo$substrateI18.blockExplorer;
|
|
@@ -816,11 +838,22 @@ const _chainInfoToChainType = chainInfo => {
|
|
|
816
838
|
return _types3.AccountChainType.SUBSTRATE;
|
|
817
839
|
};
|
|
818
840
|
exports._chainInfoToChainType = _chainInfoToChainType;
|
|
819
|
-
const _isChainInfoCompatibleWithAccountInfo = (chainInfo,
|
|
841
|
+
const _isChainInfoCompatibleWithAccountInfo = (chainInfo, accountInfo) => {
|
|
842
|
+
const {
|
|
843
|
+
chainType: accountChainType,
|
|
844
|
+
signMode: accountSignMode,
|
|
845
|
+
type: accountType
|
|
846
|
+
} = accountInfo;
|
|
820
847
|
if (accountChainType === _types3.AccountChainType.SUBSTRATE) {
|
|
821
848
|
return _isPureSubstrateChain(chainInfo) && _types4.SubstrateKeypairTypes.includes(accountType);
|
|
822
849
|
}
|
|
823
850
|
if (accountChainType === _types3.AccountChainType.ETHEREUM) {
|
|
851
|
+
if (accountSignMode === _types3.AccountSignMode.ECDSA_SUBSTRATE_LEDGER) {
|
|
852
|
+
return _isSubstrateEvmCompatibleChain(chainInfo) && _types4.EthereumKeypairTypes.includes(accountType);
|
|
853
|
+
}
|
|
854
|
+
if (accountSignMode === _types3.AccountSignMode.GENERIC_LEDGER) {
|
|
855
|
+
return _isChainCompatibleLedgerEvm(chainInfo) && _types4.EthereumKeypairTypes.includes(accountType);
|
|
856
|
+
}
|
|
824
857
|
return _isChainEvmCompatible(chainInfo) && _types4.EthereumKeypairTypes.includes(accountType);
|
|
825
858
|
}
|
|
826
859
|
if (accountChainType === _types3.AccountChainType.TON) {
|
|
@@ -11,7 +11,7 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
|
|
|
11
11
|
const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
|
|
12
12
|
const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev';
|
|
13
13
|
const fetchFile = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'list.json' : 'preview.json';
|
|
14
|
-
const ChainListVersion = '0.2.
|
|
14
|
+
const ChainListVersion = '0.2.109'; // update this when build chainlist
|
|
15
15
|
|
|
16
16
|
// todo: move this interface to chainlist
|
|
17
17
|
|
|
@@ -8,7 +8,8 @@ exports._STAKING_CHAIN_GROUP = exports.TON_CHAINS = exports.ST_LIQUID_TOKEN_ABI
|
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
|
|
10
10
|
const _STAKING_CHAIN_GROUP = {
|
|
11
|
-
relay: ['polkadot', 'kusama', 'aleph', 'polkadex', 'ternoa', 'alephTest', 'polkadexTest', 'westend', 'kate', 'edgeware', 'creditcoin', 'vara_network', 'goldberg_testnet', 'availTuringTest', 'avail_mainnet', 'vara_testnet', 'dentnet', 'cere'],
|
|
11
|
+
relay: ['polkadot', 'kusama', 'aleph', 'polkadex', 'ternoa', 'alephTest', 'polkadexTest', 'westend', 'kate', 'edgeware', 'creditcoin', 'vara_network', 'goldberg_testnet', 'availTuringTest', 'avail_mainnet', 'vara_testnet', 'dentnet', 'cere', 'statemine', 'statemint', 'westend_assethub'],
|
|
12
|
+
assetHub: ['statemine', 'statemint', 'westend_assethub'],
|
|
12
13
|
para: ['moonbeam', 'moonriver', 'moonbase', 'turing', 'turingStaging', 'bifrost', 'bifrost_testnet', 'calamari_test', 'calamari', 'manta_network', 'polimec'],
|
|
13
14
|
astar: ['astar', 'shiden', 'shibuya'],
|
|
14
15
|
amplitude: ['amplitude', 'amplitude_test', 'kilt', 'kilt_peregrine', 'pendulum', 'krest_network'],
|
|
@@ -178,6 +178,38 @@ class AmplitudeNativeStakingPoolHandler extends _basePara.default {
|
|
|
178
178
|
unstakings: unstakingList
|
|
179
179
|
};
|
|
180
180
|
}
|
|
181
|
+
async checkAccountHaveStake(useAddresses) {
|
|
182
|
+
var _substrateApi$api$que, _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4, _substrateApi$api$que5, _substrateApi$api$que6;
|
|
183
|
+
const result = [];
|
|
184
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
185
|
+
const ledgers = await ((_substrateApi$api$que = substrateApi.api.query.parachainStaking) === null || _substrateApi$api$que === void 0 ? void 0 : (_substrateApi$api$que2 = _substrateApi$api$que.delegatorState) === null || _substrateApi$api$que2 === void 0 ? void 0 : (_substrateApi$api$que3 = _substrateApi$api$que2.multi) === null || _substrateApi$api$que3 === void 0 ? void 0 : _substrateApi$api$que3.call(_substrateApi$api$que2, useAddresses));
|
|
186
|
+
const _unstakingStates = await ((_substrateApi$api$que4 = substrateApi.api.query.parachainStaking) === null || _substrateApi$api$que4 === void 0 ? void 0 : (_substrateApi$api$que5 = _substrateApi$api$que4.unstaking) === null || _substrateApi$api$que5 === void 0 ? void 0 : (_substrateApi$api$que6 = _substrateApi$api$que5.multi) === null || _substrateApi$api$que6 === void 0 ? void 0 : _substrateApi$api$que6.call(_substrateApi$api$que5, useAddresses));
|
|
187
|
+
if (!ledgers || !_unstakingStates) {
|
|
188
|
+
return [];
|
|
189
|
+
}
|
|
190
|
+
for (let i = 0; i < useAddresses.length; i++) {
|
|
191
|
+
const owner = useAddresses[i];
|
|
192
|
+
const _delegatorState = ledgers[i];
|
|
193
|
+
let delegatorState = [];
|
|
194
|
+
const unstakingInfo = _unstakingStates[i].toPrimitive();
|
|
195
|
+
if (_constants2._STAKING_CHAIN_GROUP.krest_network.includes(this.chain)) {
|
|
196
|
+
const krestDelegatorState = _delegatorState.toPrimitive();
|
|
197
|
+
const delegates = krestDelegatorState === null || krestDelegatorState === void 0 ? void 0 : krestDelegatorState.delegations;
|
|
198
|
+
if (delegates) {
|
|
199
|
+
delegatorState = delegatorState.concat(delegates);
|
|
200
|
+
}
|
|
201
|
+
} else {
|
|
202
|
+
const delegate = _delegatorState.toPrimitive();
|
|
203
|
+
if (delegate) {
|
|
204
|
+
delegatorState.push(delegate);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
if (delegatorState.length || unstakingInfo && Object.keys(unstakingInfo).length) {
|
|
208
|
+
result.push(owner);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return Promise.resolve(result);
|
|
212
|
+
}
|
|
181
213
|
async subscribePoolPosition(useAddresses, resultCallback) {
|
|
182
214
|
let cancel = false;
|
|
183
215
|
const substrateApi = await this.substrateApi.isReady;
|
|
@@ -294,6 +294,24 @@ class AstarNativeStakingPoolHandler extends _basePara.default {
|
|
|
294
294
|
unsub && unsub();
|
|
295
295
|
};
|
|
296
296
|
}
|
|
297
|
+
async checkAccountHaveStake(useAddresses) {
|
|
298
|
+
var _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4;
|
|
299
|
+
const result = [];
|
|
300
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
301
|
+
const ledgers = await ((_substrateApi$api$que2 = substrateApi.api.query.dappsStaking) === null || _substrateApi$api$que2 === void 0 ? void 0 : (_substrateApi$api$que3 = _substrateApi$api$que2.ledger) === null || _substrateApi$api$que3 === void 0 ? void 0 : (_substrateApi$api$que4 = _substrateApi$api$que3.multi) === null || _substrateApi$api$que4 === void 0 ? void 0 : _substrateApi$api$que4.call(_substrateApi$api$que3, useAddresses));
|
|
302
|
+
if (!ledgers) {
|
|
303
|
+
return [];
|
|
304
|
+
}
|
|
305
|
+
for (let i = 0; i < useAddresses.length; i++) {
|
|
306
|
+
const owner = useAddresses[i];
|
|
307
|
+
const _ledger = ledgers[i];
|
|
308
|
+
const ledger = _ledger.toPrimitive();
|
|
309
|
+
if (ledger && ledger.locked > 0) {
|
|
310
|
+
result.push(owner);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return result;
|
|
314
|
+
}
|
|
297
315
|
|
|
298
316
|
/* Subscribe pool position */
|
|
299
317
|
|