@subwallet/extension-base 1.1.43-0 → 1.1.44-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/cjs/koni/api/dotsama/transfer.js +9 -9
- package/cjs/koni/api/nft/index.js +1 -1
- package/cjs/koni/api/nft/ordinal_nft/constants.js +1 -5
- package/cjs/koni/api/nft/ordinal_nft/index.js +3 -8
- package/cjs/koni/api/nft/transfer.js +22 -12
- package/cjs/koni/api/nft/unique_network_nft/index.js +10 -9
- package/cjs/koni/background/handlers/Extension.js +1 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/constants.js +5 -4
- package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +63 -0
- package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +21 -19
- package/cjs/services/migration-service/scripts/index.js +6 -4
- package/cjs/services/subscan-service/index.js +80 -18
- package/cjs/services/subscan-service/subscan-chain-map.js +3 -1
- package/koni/api/dotsama/transfer.js +9 -9
- package/koni/api/nft/index.js +2 -2
- package/koni/api/nft/ordinal_nft/constants.d.ts +0 -2
- package/koni/api/nft/ordinal_nft/constants.js +0 -2
- package/koni/api/nft/ordinal_nft/index.d.ts +1 -1
- package/koni/api/nft/ordinal_nft/index.js +3 -8
- package/koni/api/nft/transfer.d.ts +2 -2
- package/koni/api/nft/transfer.js +22 -12
- package/koni/api/nft/unique_network_nft/index.js +10 -9
- package/koni/background/handlers/Extension.js +1 -1
- package/package.json +11 -11
- package/packageInfo.js +1 -1
- package/services/chain-service/constants.d.ts +0 -1
- package/services/chain-service/constants.js +5 -4
- package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.d.ts +4 -0
- package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +54 -0
- package/services/migration-service/scripts/databases/MigrateAssetSetting.js +21 -19
- package/services/migration-service/scripts/index.js +6 -3
- package/services/subscan-service/index.d.ts +8 -1
- package/services/subscan-service/index.js +79 -18
- package/services/subscan-service/subscan-chain-map.js +3 -1
- package/services/subscan-service/types.d.ts +7 -0
- package/cjs/koni/api/nft/ordinal_nft/utils.js +0 -41
- package/koni/api/nft/ordinal_nft/utils.d.ts +0 -2
- package/koni/api/nft/ordinal_nft/utils.js +0 -33
|
@@ -86,9 +86,9 @@ async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMap, chai
|
|
|
86
86
|
) {
|
|
87
87
|
result.supportTransfer = false;
|
|
88
88
|
result.supportTransferAll = false;
|
|
89
|
-
|
|
90
|
-
result.supportTransfer = true;
|
|
91
|
-
result.supportTransferAll = true;
|
|
89
|
+
// } else if (_TRANSFER_CHAIN_GROUP.crab.includes(networkKey) && _BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol)) {
|
|
90
|
+
// result.supportTransfer = true;
|
|
91
|
+
// result.supportTransferAll = true;
|
|
92
92
|
} else if (isTxBalancesSupported && (0, _utils2._isNativeToken)(tokenInfo)) {
|
|
93
93
|
result.supportTransfer = true;
|
|
94
94
|
result.supportTransferAll = true;
|
|
@@ -173,12 +173,12 @@ const createTransferExtrinsic = async _ref => {
|
|
|
173
173
|
) {
|
|
174
174
|
// transfer = api.tx.eqBalances.transfer(_getTokenOnChainAssetId(tokenInfo), to, value);
|
|
175
175
|
/* empty */
|
|
176
|
-
|
|
177
|
-
if (transferAll) {
|
|
178
|
-
|
|
179
|
-
} else if (value) {
|
|
180
|
-
|
|
181
|
-
}
|
|
176
|
+
// } else if (!_isNativeToken(tokenInfo) && (_TRANSFER_CHAIN_GROUP.crab.includes(networkKey) || _BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol))) {
|
|
177
|
+
// if (transferAll) {
|
|
178
|
+
// transfer = api.tx.kton.transferAll(to, false);
|
|
179
|
+
// } else if (value) {
|
|
180
|
+
// transfer = api.tx.kton.transfer(to, new BN(value));
|
|
181
|
+
// }
|
|
182
182
|
} else if (_constants._TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo)) {
|
|
183
183
|
transfer = api.tx.currencies.transfer(to, (0, _utils2._getTokenOnChainInfo)(tokenInfo), value);
|
|
184
184
|
} else if (_constants._TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !(0, _utils2._isNativeToken)(tokenInfo)) {
|
|
@@ -136,7 +136,7 @@ class NftHandler {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
if ((0, _utils._isSupportOrdinal)(chain)) {
|
|
139
|
+
if ((0, _utils._isSupportOrdinal)(chain) && _utils2.targetIsWeb) {
|
|
140
140
|
var _chainInfo$extraInfo;
|
|
141
141
|
const subscanChain = (_chainInfo$extraInfo = chainInfo.extraInfo) === null || _chainInfo$extraInfo === void 0 ? void 0 : _chainInfo$extraInfo.subscanSlug;
|
|
142
142
|
if (subscanChain) {
|
|
@@ -3,14 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.BASE_FETCH_ORDINAL_EVENT_DATA = void 0;
|
|
7
7
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
|
|
10
|
-
const GET_EVENT_LIST_API = 'https://{{chain}}.api.subscan.io/api/v2/scan/events';
|
|
11
|
-
exports.GET_EVENT_LIST_API = GET_EVENT_LIST_API;
|
|
12
|
-
const GET_EXTRINSIC_PARAMS_API = 'https://{{chain}}.api.subscan.io/api/scan/extrinsic/params';
|
|
13
|
-
exports.GET_EXTRINSIC_PARAMS_API = GET_EXTRINSIC_PARAMS_API;
|
|
14
10
|
const BASE_FETCH_ORDINAL_EVENT_DATA = {
|
|
15
11
|
event_id: 'Remarked',
|
|
16
12
|
module: 'system',
|
|
@@ -5,9 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _constants = require("@subwallet/extension-base/constants");
|
|
8
|
-
var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
|
|
9
|
-
var _utils = require("@subwallet/extension-base/koni/api/nft/ordinal_nft/utils");
|
|
10
8
|
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
9
|
+
var _nft = require("../nft");
|
|
11
10
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
12
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
13
12
|
|
|
@@ -52,14 +51,10 @@ class OrdinalNftApi extends _nft.BaseNftApi {
|
|
|
52
51
|
this.subscanChain = subscanChain;
|
|
53
52
|
}
|
|
54
53
|
async handleNft(address, handleNftParams) {
|
|
55
|
-
const events = await _handlers.state.subscanService.
|
|
56
|
-
return await (0, _utils.fetchRemarkEvent)(this.subscanChain, address);
|
|
57
|
-
});
|
|
54
|
+
const events = await _handlers.state.subscanService.getAccountRemarkEvents(this.subscanChain, address);
|
|
58
55
|
if (events && events.length) {
|
|
59
56
|
const extrinsicIds = events.map(data => data.extrinsic_index);
|
|
60
|
-
const extrinsicParams = await _handlers.state.subscanService.
|
|
61
|
-
return await (0, _utils.fetchExtrinsicParams)(this.subscanChain, extrinsicIds);
|
|
62
|
-
});
|
|
57
|
+
const extrinsicParams = await _handlers.state.subscanService.getExtrinsicParams(this.subscanChain, extrinsicIds);
|
|
63
58
|
const items = [];
|
|
64
59
|
for (const data of extrinsicParams) {
|
|
65
60
|
const {
|
|
@@ -41,13 +41,24 @@ function rmrkGetExtrinsic(substrateApi, senderAddress, recipientAddress, params)
|
|
|
41
41
|
return null;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
|
-
function uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params) {
|
|
44
|
+
async function uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params) {
|
|
45
45
|
try {
|
|
46
46
|
const itemId = params.itemId;
|
|
47
47
|
const collectionId = params.collectionId;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
|
|
49
|
+
// @ts-ignore
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
51
|
+
const collectionInfo = (await substrateApi.api.rpc.unique.collectionById(collectionId)).toHuman();
|
|
52
|
+
const isTransfersEnabled = collectionInfo.limits.transfersEnabled;
|
|
53
|
+
|
|
54
|
+
// isTransfersEnabled equal to null mean that it's set as default (enable transfer)
|
|
55
|
+
if (isTransfersEnabled || isTransfersEnabled === null) {
|
|
56
|
+
return substrateApi.api.tx.unique.transfer({
|
|
57
|
+
Substrate: recipientAddress
|
|
58
|
+
}, collectionId, itemId, 1);
|
|
59
|
+
} else {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
51
62
|
} catch (e) {
|
|
52
63
|
console.error(e);
|
|
53
64
|
return null;
|
|
@@ -73,7 +84,7 @@ function statemintGetExtrinsic(substrateApi, senderAddress, recipientAddress, pa
|
|
|
73
84
|
return null;
|
|
74
85
|
}
|
|
75
86
|
}
|
|
76
|
-
function getNftTransferExtrinsic(networkKey, substrateApi, senderAddress, recipientAddress, params) {
|
|
87
|
+
async function getNftTransferExtrinsic(networkKey, substrateApi, senderAddress, recipientAddress, params) {
|
|
77
88
|
switch (networkKey) {
|
|
78
89
|
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.acala:
|
|
79
90
|
return acalaGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
@@ -81,13 +92,12 @@ function getNftTransferExtrinsic(networkKey, substrateApi, senderAddress, recipi
|
|
|
81
92
|
return acalaGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
82
93
|
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.kusama:
|
|
83
94
|
return rmrkGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
// return uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
95
|
+
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.uniqueNft:
|
|
96
|
+
return await uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
97
|
+
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.quartz:
|
|
98
|
+
return await uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
99
|
+
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.opal:
|
|
100
|
+
return await uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
91
101
|
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.statemine:
|
|
92
102
|
return statemineGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
93
103
|
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.statemint:
|
|
@@ -25,18 +25,19 @@ class UniqueNftApi extends _nft.BaseNftApi {
|
|
|
25
25
|
const attRecord = nft.attributes;
|
|
26
26
|
if (attRecord) {
|
|
27
27
|
for (const item in attRecord) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
const attName = attRecord[item].name._;
|
|
29
|
+
const attInfo = attRecord[item].value;
|
|
30
|
+
if (Array.isArray(attInfo)) {
|
|
31
|
+
const attList = [];
|
|
32
|
+
for (const trait of attInfo) {
|
|
33
|
+
attList.push(trait._);
|
|
33
34
|
}
|
|
34
|
-
propertiesMap
|
|
35
|
-
value:
|
|
35
|
+
propertiesMap[attName] = {
|
|
36
|
+
value: attList
|
|
36
37
|
};
|
|
37
38
|
} else {
|
|
38
|
-
propertiesMap[
|
|
39
|
-
value:
|
|
39
|
+
propertiesMap[attName] = {
|
|
40
|
+
value: attInfo._
|
|
40
41
|
};
|
|
41
42
|
}
|
|
42
43
|
}
|
|
@@ -2067,7 +2067,7 @@ class KoniExtension {
|
|
|
2067
2067
|
const isPSP34 = params === null || params === void 0 ? void 0 : params.isPsp34;
|
|
2068
2068
|
const networkKey = params === null || params === void 0 ? void 0 : params.networkKey;
|
|
2069
2069
|
const apiProps = this.#koniState.getSubstrateApi(networkKey);
|
|
2070
|
-
const extrinsic = !isPSP34 ? (0, _transfer2.getNftTransferExtrinsic)(networkKey, apiProps, senderAddress, recipientAddress, params || {}) : await (0, _wasm.getPSP34TransferExtrinsic)(networkKey, apiProps, senderAddress, recipientAddress, params || {});
|
|
2070
|
+
const extrinsic = !isPSP34 ? await (0, _transfer2.getNftTransferExtrinsic)(networkKey, apiProps, senderAddress, recipientAddress, params || {}) : await (0, _wasm.getPSP34TransferExtrinsic)(networkKey, apiProps, senderAddress, recipientAddress, params || {});
|
|
2071
2071
|
|
|
2072
2072
|
// this.addContact(recipientAddress);
|
|
2073
2073
|
|
package/cjs/packageInfo.js
CHANGED
|
@@ -40,7 +40,7 @@ const _BALANCE_CHAIN_GROUP = {
|
|
|
40
40
|
genshiro: ['genshiro_testnet', 'genshiro'],
|
|
41
41
|
equilibrium_parachain: ['equilibrium_parachain'],
|
|
42
42
|
bifrost: ['bifrost', 'acala', 'karura', 'acala_testnet', 'pioneer', 'bitcountry', 'bifrost_dot', 'hydradx_main', 'pendulum', 'amplitude', 'continuum_network'],
|
|
43
|
-
statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet'],
|
|
43
|
+
statemine: ['statemine', 'astar', 'shiden', 'statemint', 'moonbeam', 'moonbase', 'moonriver', 'crabParachain', 'darwinia2', 'parallel', 'calamari', 'manta_network', 'rococo_assethub', 'liberlandTest', 'liberland', 'dentnet', 'pangolin'],
|
|
44
44
|
kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
|
|
45
45
|
// perhaps there are some runtime updates
|
|
46
46
|
centrifuge: ['centrifuge'],
|
|
@@ -219,7 +219,7 @@ const _TRANSFER_CHAIN_GROUP = {
|
|
|
219
219
|
acala: ['karura', 'acala', 'acala_testnet'],
|
|
220
220
|
kintsugi: ['kintsugi', 'kintsugi_test', 'interlay', 'mangatax_para'],
|
|
221
221
|
genshiro: ['genshiro_testnet', 'genshiro', 'equilibrium_parachain'],
|
|
222
|
-
crab: ['crab', 'pangolin'],
|
|
222
|
+
// crab: ['crab', 'pangolin'],
|
|
223
223
|
bitcountry: ['pioneer', 'bitcountry', 'bifrost', 'bifrost_dot'],
|
|
224
224
|
statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel', 'liberland', 'liberlandTest', 'dentnet'],
|
|
225
225
|
riochain: ['riochain'],
|
|
@@ -227,7 +227,7 @@ const _TRANSFER_CHAIN_GROUP = {
|
|
|
227
227
|
avail: ['kate', 'goldberg_testnet'],
|
|
228
228
|
pendulum: ['pendulum', 'amplitude', 'amplitude_test', 'hydradx_main'],
|
|
229
229
|
centrifuge: ['centrifuge'],
|
|
230
|
-
disable_transfer: ['invarch']
|
|
230
|
+
disable_transfer: ['invarch', 'crab', 'pangolin']
|
|
231
231
|
};
|
|
232
232
|
exports._TRANSFER_CHAIN_GROUP = _TRANSFER_CHAIN_GROUP;
|
|
233
233
|
const _BALANCE_PARSING_CHAIN_GROUP = {
|
|
@@ -260,7 +260,8 @@ const _DEFAULT_ACTIVE_CHAINS = [..._chainList._DEFAULT_CHAINS, 'vara_network'];
|
|
|
260
260
|
exports._DEFAULT_ACTIVE_CHAINS = _DEFAULT_ACTIVE_CHAINS;
|
|
261
261
|
const EVM_PASS_CONNECT_STATUS = {
|
|
262
262
|
arbitrum_one: ['*'],
|
|
263
|
-
okxTest: ['*']
|
|
263
|
+
okxTest: ['*'],
|
|
264
|
+
astarZkEvm: ['*']
|
|
264
265
|
};
|
|
265
266
|
exports.EVM_PASS_CONNECT_STATUS = EVM_PASS_CONNECT_STATUS;
|
|
266
267
|
const EVM_REFORMAT_DECIMALS = {
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class MigrateTransactionHistoryBySymbol extends _Base.default {
|
|
13
|
+
async run() {
|
|
14
|
+
const state = this.state;
|
|
15
|
+
try {
|
|
16
|
+
const changeSlugsMap = {
|
|
17
|
+
'ethereum-ERC20-WFTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870': 'ethereum-ERC20-FTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870',
|
|
18
|
+
'moonbeam-ERC20-CSG-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F': 'moonbeam-ERC20-CGS-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F',
|
|
19
|
+
'astar-LOCAL-aUSD': 'astar-LOCAL-aSEED',
|
|
20
|
+
'astarEvm-ERC20-aUSD-0xfFFFFfFF00000000000000010000000000000001': 'astarEvm-ERC20-aSEED-0xfFFFFfFF00000000000000010000000000000001',
|
|
21
|
+
'moonriver-LOCAL-xcaUSD': 'moonriver-LOCAL-xcaSeed',
|
|
22
|
+
'moonriver-LOCAL-xckBTC': 'moonriver-LOCAL-xcKBTC',
|
|
23
|
+
'bifrost-LOCAL-aUSD': 'bifrost-LOCAL-KUSD',
|
|
24
|
+
'calamari-LOCAL-aUSD': 'calamari-LOCAL-AUSD',
|
|
25
|
+
'shiden-LOCAL-aUSD': 'shiden-LOCAL-aSEED',
|
|
26
|
+
'shidenEvm-ERC20-aUSD-0xfFFfFFfF00000000000000010000000000000000': 'shidenEvm-ERC20-aSEED-0xfFFfFFfF00000000000000010000000000000000',
|
|
27
|
+
'ethereum_goerli-NATIVE-GoerliETH': 'ethereum_goerli-NATIVE-ETH',
|
|
28
|
+
'binance_test-NATIVE-BNB': 'binance_test-NATIVE-tBNB',
|
|
29
|
+
'pangolin-LOCAL-CKTON': 'pangolin-LOCAL-PKTON',
|
|
30
|
+
'zeta_test-NATIVE-aZETA': 'zeta_test-NATIVE-ZETA',
|
|
31
|
+
'origintrail-NATIVE-OTP': 'origintrail-NATIVE-NEURO',
|
|
32
|
+
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC'
|
|
33
|
+
};
|
|
34
|
+
const allTxs = [];
|
|
35
|
+
await Promise.all(Object.entries(changeSlugsMap).map(async (_ref, i) => {
|
|
36
|
+
let [oldSlug, newSlug] = _ref;
|
|
37
|
+
const oldSlugSplit = oldSlug.split('-');
|
|
38
|
+
const oldChainSlug = oldSlugSplit[0];
|
|
39
|
+
const oldSymbolSlug = oldSlugSplit[2];
|
|
40
|
+
const newSlugSplit = newSlug.split('-');
|
|
41
|
+
const newSymbolSlug = newSlugSplit[2];
|
|
42
|
+
const filterTransactions = await state.dbService.stores.transaction.table.where({
|
|
43
|
+
chain: oldChainSlug
|
|
44
|
+
}).and(tx => {
|
|
45
|
+
var _tx$amount;
|
|
46
|
+
return ((_tx$amount = tx.amount) === null || _tx$amount === void 0 ? void 0 : _tx$amount.symbol) === oldSymbolSlug;
|
|
47
|
+
}).toArray();
|
|
48
|
+
if (filterTransactions.length > 0) {
|
|
49
|
+
for (const transaction of filterTransactions) {
|
|
50
|
+
if (transaction.amount && transaction.amount.symbol === oldSymbolSlug) {
|
|
51
|
+
transaction.amount.symbol = newSymbolSlug;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
allTxs.push(...filterTransactions);
|
|
56
|
+
}));
|
|
57
|
+
await state.dbService.stores.transaction.table.bulkPut(allTxs);
|
|
58
|
+
} catch (e) {
|
|
59
|
+
this.logger.error(e);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.default = MigrateTransactionHistoryBySymbol;
|
|
@@ -12,27 +12,29 @@ var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/m
|
|
|
12
12
|
class MigrateAssetSetting extends _Base.default {
|
|
13
13
|
async run() {
|
|
14
14
|
try {
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
15
|
+
const changeSlugsMap = {
|
|
16
|
+
'ethereum-ERC20-WFTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870': 'ethereum-ERC20-FTM-0x4E15361FD6b4BB609Fa63C81A2be19d873717870',
|
|
17
|
+
'moonbeam-ERC20-CSG-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F': 'moonbeam-ERC20-CGS-0x2Dfc76901bB2ac2A5fA5fc479590A490BBB10a5F',
|
|
18
|
+
'astar-LOCAL-aUSD': 'astar-LOCAL-aSEED',
|
|
19
|
+
'astarEvm-ERC20-aUSD-0xfFFFFfFF00000000000000010000000000000001': 'astarEvm-ERC20-aSEED-0xfFFFFfFF00000000000000010000000000000001',
|
|
20
|
+
'moonriver-LOCAL-xcaUSD': 'moonriver-LOCAL-xcaSeed',
|
|
21
|
+
'moonriver-LOCAL-xckBTC': 'moonriver-LOCAL-xcKBTC',
|
|
22
|
+
'bifrost-LOCAL-aUSD': 'bifrost-LOCAL-KUSD',
|
|
23
|
+
'calamari-LOCAL-aUSD': 'calamari-LOCAL-AUSD',
|
|
24
|
+
'shiden-LOCAL-aUSD': 'shiden-LOCAL-aSEED',
|
|
25
|
+
'shidenEvm-ERC20-aUSD-0xfFFfFFfF00000000000000010000000000000000': 'shidenEvm-ERC20-aSEED-0xfFFfFFfF00000000000000010000000000000000',
|
|
26
|
+
'ethereum_goerli-NATIVE-GoerliETH': 'ethereum_goerli-NATIVE-ETH',
|
|
27
|
+
'binance_test-NATIVE-BNB': 'binance_test-NATIVE-tBNB',
|
|
28
|
+
'pangolin-LOCAL-CKTON': 'pangolin-LOCAL-PKTON',
|
|
29
|
+
'zeta_test-NATIVE-aZETA': 'zeta_test-NATIVE-ZETA',
|
|
30
|
+
'origintrail-NATIVE-OTP': 'origintrail-NATIVE-NEURO',
|
|
31
|
+
'moonbeam-LOCAL-xciBTC': 'moonbeam-LOCAL-xcIBTC'
|
|
32
|
+
};
|
|
29
33
|
const assetSetting = await this.state.chainService.getAssetSettings();
|
|
30
34
|
const migratedAssetSetting = {};
|
|
31
|
-
for (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const isVisible = assetSetting[slug].visible;
|
|
35
|
-
const newSlug = newSlugs[i];
|
|
35
|
+
for (const [oldSlug, newSlug] of Object.entries(changeSlugsMap)) {
|
|
36
|
+
if (Object.keys(assetSetting).includes(oldSlug)) {
|
|
37
|
+
const isVisible = assetSetting[oldSlug].visible;
|
|
36
38
|
migratedAssetSetting[newSlug] = {
|
|
37
39
|
visible: isVisible
|
|
38
40
|
};
|
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.EVERYTIME = void 0;
|
|
8
8
|
var _DeleteEarningData = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/DeleteEarningData"));
|
|
9
|
+
var _MigrateTransactionHistoryBySymbol = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateTransactionHistoryBySymbol"));
|
|
10
|
+
var _MigrateAssetSetting = _interopRequireDefault(require("./databases/MigrateAssetSetting"));
|
|
9
11
|
var _MigrateEarningVersion = _interopRequireDefault(require("./databases/MigrateEarningVersion"));
|
|
10
12
|
var _MigrateEthProvider = _interopRequireDefault(require("./providers/MigrateEthProvider"));
|
|
11
13
|
var _MigratePioneerProvider = _interopRequireDefault(require("./providers/MigratePioneerProvider"));
|
|
@@ -28,8 +30,6 @@ var _MigrateWalletReference = _interopRequireDefault(require("./MigrateWalletRef
|
|
|
28
30
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
29
31
|
// SPDX-License-Identifier: Apache-2.0
|
|
30
32
|
|
|
31
|
-
// import MigrateAssetSetting from './databases/MigrateAssetSetting';
|
|
32
|
-
|
|
33
33
|
const EVERYTIME = '__everytime__';
|
|
34
34
|
exports.EVERYTIME = EVERYTIME;
|
|
35
35
|
var _default = {
|
|
@@ -53,8 +53,10 @@ var _default = {
|
|
|
53
53
|
'1.1.24-01': _MigrateProvidersV1M1P.default,
|
|
54
54
|
'1.1.26-01': _MigratePolygonUSDCProvider.default,
|
|
55
55
|
'1.1.28-01': _MigrateEarningVersion.default,
|
|
56
|
-
'1.1.41-01': _DeleteChainStaking.default
|
|
57
|
-
|
|
56
|
+
'1.1.41-01': _DeleteChainStaking.default,
|
|
57
|
+
'1.1.44-01': _MigrateAssetSetting.default,
|
|
58
|
+
'1.1.44-02': _MigrateTransactionHistoryBySymbol.default
|
|
59
|
+
// [`${EVERYTIME}-1.1.42-02`]: MigrateTransactionHistoryBySymbol
|
|
58
60
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
59
61
|
};
|
|
60
62
|
exports.default = _default;
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.SubscanService = void 0;
|
|
8
8
|
var _SWError = require("@subwallet/extension-base/background/errors/SWError");
|
|
9
|
+
var _constants = require("@subwallet/extension-base/koni/api/nft/ordinal_nft/constants");
|
|
9
10
|
var _utils = require("@subwallet/extension-base/utils");
|
|
10
11
|
var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
11
12
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
@@ -13,9 +14,12 @@ var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
|
13
14
|
|
|
14
15
|
const QUERY_ROW = 100;
|
|
15
16
|
class SubscanService {
|
|
16
|
-
|
|
17
|
+
callRate = 2; // limit per interval check
|
|
18
|
+
limitRate = 2; // max rate per interval check
|
|
17
19
|
intervalCheck = 1000; // interval check in ms
|
|
18
20
|
maxRetry = 9; // interval check in ms
|
|
21
|
+
rollbackRateTime = 30 * 1000; // rollback rate time in ms
|
|
22
|
+
timeoutRollbackRate = undefined;
|
|
19
23
|
requestMap = {};
|
|
20
24
|
nextId = 0;
|
|
21
25
|
isRunning = false;
|
|
@@ -24,10 +28,18 @@ class SubscanService {
|
|
|
24
28
|
}
|
|
25
29
|
constructor(subscanChainMap, options) {
|
|
26
30
|
this.subscanChainMap = subscanChainMap;
|
|
31
|
+
this.callRate = (options === null || options === void 0 ? void 0 : options.limitRate) || this.callRate;
|
|
27
32
|
this.limitRate = (options === null || options === void 0 ? void 0 : options.limitRate) || this.limitRate;
|
|
28
33
|
this.intervalCheck = (options === null || options === void 0 ? void 0 : options.intervalCheck) || this.intervalCheck;
|
|
29
34
|
this.maxRetry = (options === null || options === void 0 ? void 0 : options.maxRetry) || this.maxRetry;
|
|
30
35
|
}
|
|
36
|
+
reduceLimitRate() {
|
|
37
|
+
clearTimeout(this.timeoutRollbackRate);
|
|
38
|
+
this.callRate = Math.ceil(this.limitRate / 2);
|
|
39
|
+
this.timeoutRollbackRate = setTimeout(() => {
|
|
40
|
+
this.callRate = this.limitRate;
|
|
41
|
+
}, this.rollbackRateTime);
|
|
42
|
+
}
|
|
31
43
|
getApiUrl(chain, path) {
|
|
32
44
|
const subscanChain = this.subscanChainMap[chain];
|
|
33
45
|
if (!subscanChain) {
|
|
@@ -44,13 +56,14 @@ class SubscanService {
|
|
|
44
56
|
body: JSON.stringify(body)
|
|
45
57
|
});
|
|
46
58
|
}
|
|
47
|
-
addRequest(run) {
|
|
59
|
+
addRequest(run, ordinal) {
|
|
48
60
|
const newId = this.getId();
|
|
49
61
|
return new Promise((resolve, reject) => {
|
|
50
62
|
this.requestMap[newId] = {
|
|
51
63
|
id: newId,
|
|
52
64
|
status: 'pending',
|
|
53
65
|
retry: -1,
|
|
66
|
+
ordinal,
|
|
54
67
|
run,
|
|
55
68
|
resolve,
|
|
56
69
|
reject
|
|
@@ -72,7 +85,7 @@ class SubscanService {
|
|
|
72
85
|
}
|
|
73
86
|
|
|
74
87
|
// Get first this.limit requests base on id
|
|
75
|
-
const requests = remainingRequests.filter(request => request.status !== 'running').sort((a, b) => a.id - b.id).slice(0, this.
|
|
88
|
+
const requests = remainingRequests.filter(request => request.status !== 'running').sort((a, b) => a.id - b.id).sort((a, b) => a.ordinal - b.ordinal).slice(0, this.callRate);
|
|
76
89
|
|
|
77
90
|
// Start requests
|
|
78
91
|
requests.forEach(request => {
|
|
@@ -80,12 +93,20 @@ class SubscanService {
|
|
|
80
93
|
request.run().then(rs => {
|
|
81
94
|
request.resolve(rs);
|
|
82
95
|
}).catch(e => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
96
|
+
const error = JSON.parse(e.message);
|
|
97
|
+
|
|
98
|
+
// Limit rate
|
|
99
|
+
if (error.code === 20008) {
|
|
100
|
+
if (request.retry < maxRetry) {
|
|
101
|
+
request.status = 'pending';
|
|
102
|
+
request.retry++;
|
|
103
|
+
this.reduceLimitRate();
|
|
104
|
+
} else {
|
|
105
|
+
// Reject request
|
|
106
|
+
request.reject(new _SWError.SWError('MAX_RETRY', String(e)));
|
|
107
|
+
}
|
|
86
108
|
} else {
|
|
87
|
-
|
|
88
|
-
request.reject(new _SWError.SWError('MAX_RETRY', String(e)));
|
|
109
|
+
request.reject(new _SWError.SWError('UNKNOWN', String(e)));
|
|
89
110
|
}
|
|
90
111
|
});
|
|
91
112
|
});
|
|
@@ -109,7 +130,7 @@ class SubscanService {
|
|
|
109
130
|
}
|
|
110
131
|
const jsonData = await rs.json();
|
|
111
132
|
return jsonData.data;
|
|
112
|
-
});
|
|
133
|
+
}, 1);
|
|
113
134
|
}
|
|
114
135
|
getCrowdloanContributions(relayChain, address) {
|
|
115
136
|
let page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
@@ -125,7 +146,7 @@ class SubscanService {
|
|
|
125
146
|
}
|
|
126
147
|
const jsonData = await rs.json();
|
|
127
148
|
return jsonData.data;
|
|
128
|
-
});
|
|
149
|
+
}, 2);
|
|
129
150
|
}
|
|
130
151
|
getExtrinsicsList(chain, address) {
|
|
131
152
|
let page = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
@@ -137,7 +158,7 @@ class SubscanService {
|
|
|
137
158
|
return `${blockRange.from || 0}-${blockRange.to}`;
|
|
138
159
|
})();
|
|
139
160
|
return this.addRequest(async () => {
|
|
140
|
-
const rs = await this.postRequest(this.getApiUrl(chain, 'api/scan/extrinsics'), {
|
|
161
|
+
const rs = await this.postRequest(this.getApiUrl(chain, 'api/v2/scan/extrinsics'), {
|
|
141
162
|
page,
|
|
142
163
|
row: QUERY_ROW,
|
|
143
164
|
address,
|
|
@@ -148,7 +169,7 @@ class SubscanService {
|
|
|
148
169
|
}
|
|
149
170
|
const jsonData = await rs.json();
|
|
150
171
|
return jsonData.data;
|
|
151
|
-
});
|
|
172
|
+
}, 0);
|
|
152
173
|
}
|
|
153
174
|
async fetchAllPossibleExtrinsicItems(chain, address, cbAfterEachRequest) {
|
|
154
175
|
let limit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {
|
|
@@ -170,11 +191,26 @@ class SubscanService {
|
|
|
170
191
|
if (res.count > maxCount) {
|
|
171
192
|
maxCount = res.count;
|
|
172
193
|
}
|
|
173
|
-
|
|
174
|
-
|
|
194
|
+
const extrinsics = res.extrinsics;
|
|
195
|
+
const extrinsicIndexes = extrinsics.map(item => item.extrinsic_index);
|
|
196
|
+
const extrinsicParams = await this.getExtrinsicParams(chain, extrinsicIndexes, 0);
|
|
197
|
+
for (const data of extrinsicParams) {
|
|
198
|
+
const {
|
|
199
|
+
extrinsic_index: extrinsicIndex,
|
|
200
|
+
params
|
|
201
|
+
} = data;
|
|
202
|
+
const extrinsic = extrinsics.find(item => item.extrinsic_index === extrinsicIndex);
|
|
203
|
+
if (extrinsic) {
|
|
204
|
+
extrinsic.params = JSON.stringify(params);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Call callback after each request, for parse data
|
|
209
|
+
cbAfterEachRequest === null || cbAfterEachRequest === void 0 ? void 0 : cbAfterEachRequest(extrinsics);
|
|
210
|
+
for (const item of extrinsics) {
|
|
175
211
|
resultMap[item.extrinsic_hash] = item;
|
|
176
|
-
}
|
|
177
|
-
currentCount +=
|
|
212
|
+
}
|
|
213
|
+
currentCount += extrinsics.length;
|
|
178
214
|
if (page > limit.page || currentCount > limit.record) {
|
|
179
215
|
return;
|
|
180
216
|
}
|
|
@@ -207,7 +243,7 @@ class SubscanService {
|
|
|
207
243
|
}
|
|
208
244
|
const jsonData = await rs.json();
|
|
209
245
|
return jsonData.data;
|
|
210
|
-
});
|
|
246
|
+
}, 0);
|
|
211
247
|
}
|
|
212
248
|
async fetchAllPossibleTransferItems(chain, address, direction, cbAfterEachRequest) {
|
|
213
249
|
let limit = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {
|
|
@@ -266,7 +302,33 @@ class SubscanService {
|
|
|
266
302
|
}
|
|
267
303
|
const jsonData = await rs.json();
|
|
268
304
|
return jsonData.data;
|
|
269
|
-
});
|
|
305
|
+
}, 2);
|
|
306
|
+
}
|
|
307
|
+
getAccountRemarkEvents(chain, address) {
|
|
308
|
+
return this.addRequest(async () => {
|
|
309
|
+
const rs = await this.postRequest(this.getApiUrl(chain, 'api/v2/scan/events'), {
|
|
310
|
+
..._constants.BASE_FETCH_ORDINAL_EVENT_DATA,
|
|
311
|
+
address
|
|
312
|
+
});
|
|
313
|
+
if (rs.status !== 200) {
|
|
314
|
+
throw new _SWError.SWError('SubscanService.getAccountRemarkEvents', await rs.text());
|
|
315
|
+
}
|
|
316
|
+
const jsonData = await rs.json();
|
|
317
|
+
return jsonData.data.events;
|
|
318
|
+
}, 3);
|
|
319
|
+
}
|
|
320
|
+
getExtrinsicParams(chain, extrinsicIndexes) {
|
|
321
|
+
let ordinal = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;
|
|
322
|
+
return this.addRequest(async () => {
|
|
323
|
+
const rs = await this.postRequest(this.getApiUrl(chain, 'api/scan/extrinsic/params'), {
|
|
324
|
+
extrinsic_index: extrinsicIndexes
|
|
325
|
+
});
|
|
326
|
+
if (rs.status !== 200) {
|
|
327
|
+
throw new _SWError.SWError('SubscanService.getExtrinsicParams', await rs.text());
|
|
328
|
+
}
|
|
329
|
+
const jsonData = await rs.json();
|
|
330
|
+
return jsonData.data;
|
|
331
|
+
}, ordinal);
|
|
270
332
|
}
|
|
271
333
|
}
|
|
272
334
|
exports.SubscanService = SubscanService;
|
|
@@ -138,7 +138,9 @@ const SUBSCAN_BALANCE_CHAIN_MAP = {
|
|
|
138
138
|
vara_network: 'vara',
|
|
139
139
|
bifrost: 'bifrost',
|
|
140
140
|
creditcoin: 'creditcoin',
|
|
141
|
-
joystream: 'joystream'
|
|
141
|
+
joystream: 'joystream',
|
|
142
|
+
manta_network: 'manta',
|
|
143
|
+
continuum_network: 'continuum'
|
|
142
144
|
};
|
|
143
145
|
exports.SUBSCAN_BALANCE_CHAIN_MAP = SUBSCAN_BALANCE_CHAIN_MAP;
|
|
144
146
|
const SUBSCAN_BALANCE_CHAIN_MAP_REVERSE = Object.fromEntries(Object.entries(SUBSCAN_BALANCE_CHAIN_MAP).map(_ref => {
|
|
@@ -78,9 +78,9 @@ export async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMa
|
|
|
78
78
|
) {
|
|
79
79
|
result.supportTransfer = false;
|
|
80
80
|
result.supportTransferAll = false;
|
|
81
|
-
|
|
82
|
-
result.supportTransfer = true;
|
|
83
|
-
result.supportTransferAll = true;
|
|
81
|
+
// } else if (_TRANSFER_CHAIN_GROUP.crab.includes(networkKey) && _BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol)) {
|
|
82
|
+
// result.supportTransfer = true;
|
|
83
|
+
// result.supportTransferAll = true;
|
|
84
84
|
} else if (isTxBalancesSupported && _isNativeToken(tokenInfo)) {
|
|
85
85
|
result.supportTransfer = true;
|
|
86
86
|
result.supportTransferAll = true;
|
|
@@ -164,12 +164,12 @@ export const createTransferExtrinsic = async ({
|
|
|
164
164
|
) {
|
|
165
165
|
// transfer = api.tx.eqBalances.transfer(_getTokenOnChainAssetId(tokenInfo), to, value);
|
|
166
166
|
/* empty */
|
|
167
|
-
|
|
168
|
-
if (transferAll) {
|
|
169
|
-
|
|
170
|
-
} else if (value) {
|
|
171
|
-
|
|
172
|
-
}
|
|
167
|
+
// } else if (!_isNativeToken(tokenInfo) && (_TRANSFER_CHAIN_GROUP.crab.includes(networkKey) || _BALANCE_TOKEN_GROUP.crab.includes(tokenInfo.symbol))) {
|
|
168
|
+
// if (transferAll) {
|
|
169
|
+
// transfer = api.tx.kton.transferAll(to, false);
|
|
170
|
+
// } else if (value) {
|
|
171
|
+
// transfer = api.tx.kton.transfer(to, new BN(value));
|
|
172
|
+
// }
|
|
173
173
|
} else if (_TRANSFER_CHAIN_GROUP.bitcountry.includes(networkKey) && !_isNativeToken(tokenInfo)) {
|
|
174
174
|
transfer = api.tx.currencies.transfer(to, _getTokenOnChainInfo(tokenInfo), value);
|
|
175
175
|
} else if (_TRANSFER_CHAIN_GROUP.statemine.includes(networkKey) && !_isNativeToken(tokenInfo)) {
|
package/koni/api/nft/index.js
CHANGED
|
@@ -14,7 +14,7 @@ import { VaraNftApi } from '@subwallet/extension-base/koni/api/nft/vara_nft';
|
|
|
14
14
|
import { WasmNftApi } from '@subwallet/extension-base/koni/api/nft/wasm_nft';
|
|
15
15
|
import { _NFT_CHAIN_GROUP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
16
16
|
import { _isChainSupportEvmNft, _isChainSupportNativeNft, _isChainSupportWasmNft, _isSupportOrdinal } from '@subwallet/extension-base/services/chain-service/utils';
|
|
17
|
-
import { categoryAddresses } from '@subwallet/extension-base/utils';
|
|
17
|
+
import { categoryAddresses, targetIsWeb } from '@subwallet/extension-base/utils';
|
|
18
18
|
import StatemintNftApi from "./statemint_nft/index.js";
|
|
19
19
|
function createSubstrateNftApi(chain, substrateApi, addresses) {
|
|
20
20
|
const [substrateAddresses] = categoryAddresses(addresses);
|
|
@@ -127,7 +127,7 @@ export class NftHandler {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
-
if (_isSupportOrdinal(chain)) {
|
|
130
|
+
if (_isSupportOrdinal(chain) && targetIsWeb) {
|
|
131
131
|
var _chainInfo$extraInfo;
|
|
132
132
|
const subscanChain = (_chainInfo$extraInfo = chainInfo.extraInfo) === null || _chainInfo$extraInfo === void 0 ? void 0 : _chainInfo$extraInfo.subscanSlug;
|
|
133
133
|
if (subscanChain) {
|