@subwallet/extension-base 1.1.51-1 → 1.1.52-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 +1 -0
- package/cjs/koni/api/tokens/evm/balance.js +1 -2
- package/cjs/koni/api/tokens/evm/transfer.js +3 -5
- package/cjs/koni/api/tokens/evm/web3.js +3 -3
- package/cjs/koni/background/handlers/Extension.js +5 -4
- package/cjs/koni/background/handlers/State.js +21 -122
- package/cjs/koni/background/subscription.js +3 -63
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/BalanceMapImpl.js +2 -2
- package/cjs/services/balance-service/helpers/index.js +27 -0
- package/cjs/services/balance-service/helpers/subscribe/evm.js +33 -15
- package/cjs/services/balance-service/helpers/subscribe/{balance.js → index.js} +46 -29
- package/cjs/services/balance-service/helpers/subscribe/substrate/equilibrium.js +34 -15
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +156 -72
- package/cjs/services/balance-service/index.js +371 -44
- package/cjs/services/chain-service/constants.js +2 -1
- package/cjs/services/chain-service/health-check/utils/asset-info.js +1 -3
- package/cjs/services/chain-service/index.js +60 -26
- package/cjs/services/chain-service/utils/index.js +10 -2
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +1 -1
- package/cjs/services/migration-service/scripts/AutoEnableChainsTokens.js +1 -1
- package/cjs/services/storage-service/DatabaseService.js +10 -1
- package/cjs/stores/DetectAccountBalance.js +18 -0
- package/cjs/utils/asset.js +19 -0
- package/cjs/utils/index.js +12 -0
- package/koni/api/tokens/evm/balance.d.ts +1 -1
- package/koni/api/tokens/evm/balance.js +1 -2
- package/koni/api/tokens/evm/transfer.d.ts +2 -2
- package/koni/api/tokens/evm/transfer.js +3 -5
- package/koni/api/tokens/evm/web3.d.ts +1 -1
- package/koni/api/tokens/evm/web3.js +2 -2
- package/koni/background/handlers/Extension.js +5 -4
- package/koni/background/handlers/State.d.ts +2 -13
- package/koni/background/handlers/State.js +21 -121
- package/koni/background/subscription.d.ts +1 -5
- package/koni/background/subscription.js +1 -60
- package/package.json +28 -13
- package/packageInfo.js +1 -1
- package/services/balance-service/BalanceMapImpl.js +1 -1
- package/services/balance-service/helpers/index.d.ts +2 -0
- package/services/balance-service/helpers/index.js +5 -0
- package/services/balance-service/helpers/subscribe/evm.d.ts +3 -5
- package/services/balance-service/helpers/subscribe/evm.js +31 -14
- package/services/balance-service/helpers/subscribe/{balance.d.ts → index.d.ts} +2 -2
- package/services/balance-service/helpers/subscribe/{balance.js → index.js} +41 -28
- package/services/balance-service/helpers/subscribe/substrate/equilibrium.d.ts +3 -4
- package/services/balance-service/helpers/subscribe/substrate/equilibrium.js +29 -13
- package/services/balance-service/helpers/subscribe/substrate/index.d.ts +2 -2
- package/services/balance-service/helpers/subscribe/substrate/index.js +143 -67
- package/services/balance-service/index.d.ts +71 -4
- package/services/balance-service/index.js +372 -46
- package/services/chain-service/constants.js +2 -1
- package/services/chain-service/health-check/utils/asset-info.js +1 -3
- package/services/chain-service/index.d.ts +2 -1
- package/services/chain-service/index.js +61 -27
- package/services/chain-service/types.d.ts +1 -0
- package/services/chain-service/utils/index.js +10 -2
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
- package/services/earning-service/handlers/native-staking/para-chain.js +1 -1
- package/services/migration-service/scripts/AutoEnableChainsTokens.js +1 -1
- package/services/storage-service/DatabaseService.js +7 -1
- package/services/storage-service/databases/index.d.ts +1 -0
- package/stores/DetectAccountBalance.d.ts +5 -0
- package/stores/DetectAccountBalance.js +10 -0
- package/types/{balance.d.ts → balance/index.d.ts} +16 -0
- package/types/index.js +1 -1
- package/utils/asset.d.ts +2 -0
- package/utils/asset.js +12 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- /package/cjs/types/{balance.js → balance/index.js} +0 -0
- /package/types/{balance.js → balance/index.js} +0 -0
|
@@ -337,6 +337,7 @@ export declare type RequestChangeLanguage = {
|
|
|
337
337
|
export declare type RequestChangeShowBalance = {
|
|
338
338
|
enable: boolean;
|
|
339
339
|
};
|
|
340
|
+
export declare type DetectBalanceCache = Record<string, number>;
|
|
340
341
|
export interface RandomTestRequest {
|
|
341
342
|
start: number;
|
|
342
343
|
end: number;
|
|
@@ -7,8 +7,7 @@ exports.getEVMBalance = getEVMBalance;
|
|
|
7
7
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
|
|
10
|
-
async function getEVMBalance(networkKey, addresses,
|
|
11
|
-
const web3Api = evmApiMap[networkKey];
|
|
10
|
+
async function getEVMBalance(networkKey, addresses, web3Api) {
|
|
12
11
|
return await Promise.all(addresses.map(async address => {
|
|
13
12
|
try {
|
|
14
13
|
return await web3Api.api.eth.getBalance(address);
|
|
@@ -46,10 +46,9 @@ const handleTransferBalanceResult = _ref => {
|
|
|
46
46
|
callback(response);
|
|
47
47
|
};
|
|
48
48
|
exports.handleTransferBalanceResult = handleTransferBalanceResult;
|
|
49
|
-
async function getEVMTransactionObject(chainInfo, from, to, value, transferAll,
|
|
49
|
+
async function getEVMTransactionObject(chainInfo, from, to, value, transferAll, web3Api) {
|
|
50
50
|
var _priority$maxFeePerGa, _priority$maxPriority;
|
|
51
51
|
const networkKey = chainInfo.slug;
|
|
52
|
-
const web3Api = evmApiMap[networkKey];
|
|
53
52
|
const priority = await (0, _utils.calculateGasFeeParams)(web3Api, networkKey);
|
|
54
53
|
const transactionObject = {
|
|
55
54
|
to: to,
|
|
@@ -75,11 +74,10 @@ async function getEVMTransactionObject(chainInfo, from, to, value, transferAll,
|
|
|
75
74
|
}
|
|
76
75
|
return [transactionObject, transactionObject.value.toString()];
|
|
77
76
|
}
|
|
78
|
-
async function getERC20TransactionObject(assetAddress, chainInfo, from, to, value, transferAll,
|
|
77
|
+
async function getERC20TransactionObject(assetAddress, chainInfo, from, to, value, transferAll, evmApi) {
|
|
79
78
|
var _priority$maxFeePerGa2, _priority$maxPriority2;
|
|
80
79
|
const networkKey = chainInfo.slug;
|
|
81
|
-
const
|
|
82
|
-
const erc20Contract = (0, _web.getERC20Contract)(networkKey, assetAddress, evmApiMap);
|
|
80
|
+
const erc20Contract = (0, _web.getERC20Contract)(assetAddress, evmApi);
|
|
83
81
|
let freeAmount = new _bignumber.default(0);
|
|
84
82
|
let transferValue = value;
|
|
85
83
|
if (transferAll) {
|
|
@@ -8,10 +8,10 @@ var _helper = require("@subwallet/extension-base/services/chain-service/helper")
|
|
|
8
8
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
9
9
|
// SPDX-License-Identifier: Apache-2.0
|
|
10
10
|
|
|
11
|
-
const getERC20Contract = function (
|
|
12
|
-
let options = arguments.length >
|
|
11
|
+
const getERC20Contract = function (assetAddress, evmApi) {
|
|
12
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
13
13
|
// @ts-ignore
|
|
14
14
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-member-access
|
|
15
|
-
return new
|
|
15
|
+
return new evmApi.api.eth.Contract(_helper._ERC20_ABI, assetAddress, options);
|
|
16
16
|
};
|
|
17
17
|
exports.getERC20Contract = getERC20Contract;
|
|
@@ -1079,11 +1079,11 @@ class KoniExtension {
|
|
|
1079
1079
|
return this.getPrice();
|
|
1080
1080
|
}
|
|
1081
1081
|
async getBalance(reset) {
|
|
1082
|
-
return this.#koniState.getBalance(reset);
|
|
1082
|
+
return this.#koniState.balanceService.getBalance(reset);
|
|
1083
1083
|
}
|
|
1084
1084
|
async subscribeBalance(id, port) {
|
|
1085
1085
|
const cb = (0, _subscriptions.createSubscription)(id, port);
|
|
1086
|
-
const balanceSubscription = this.#koniState.
|
|
1086
|
+
const balanceSubscription = this.#koniState.balanceService.subscribeBalanceMap().subscribe({
|
|
1087
1087
|
next: rs => {
|
|
1088
1088
|
const data = {
|
|
1089
1089
|
details: rs
|
|
@@ -1619,12 +1619,13 @@ class KoniExtension {
|
|
|
1619
1619
|
// TODO: review this
|
|
1620
1620
|
chainType = _KoniTypes.ChainType.EVM;
|
|
1621
1621
|
const txVal = transferAll ? freeBalance.value : value || '0';
|
|
1622
|
+
const evmApi = evmApiMap[networkKey];
|
|
1622
1623
|
|
|
1623
1624
|
// Estimate with EVM API
|
|
1624
1625
|
if ((0, _utils2._isTokenEvmSmartContract)(tokenInfo) || (0, _utils2._isLocalToken)(tokenInfo)) {
|
|
1625
|
-
[transaction, transferAmount.value] = await (0, _transfer3.getERC20TransactionObject)((0, _utils2._getContractAddressOfToken)(tokenInfo), chainInfo, from, to, txVal, !!transferAll,
|
|
1626
|
+
[transaction, transferAmount.value] = await (0, _transfer3.getERC20TransactionObject)((0, _utils2._getContractAddressOfToken)(tokenInfo), chainInfo, from, to, txVal, !!transferAll, evmApi);
|
|
1626
1627
|
} else {
|
|
1627
|
-
[transaction, transferAmount.value] = await (0, _transfer3.getEVMTransactionObject)(chainInfo, from, to, txVal, !!transferAll,
|
|
1628
|
+
[transaction, transferAmount.value] = await (0, _transfer3.getEVMTransactionObject)(chainInfo, from, to, txVal, !!transferAll, evmApi);
|
|
1628
1629
|
}
|
|
1629
1630
|
} else if ((0, _utils2._isMantaZkAsset)(tokenInfo)) {
|
|
1630
1631
|
// TODO
|
|
@@ -11,7 +11,6 @@ var _subscriptions = require("@subwallet/extension-base/background/handlers/subs
|
|
|
11
11
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
12
12
|
var _constants = require("@subwallet/extension-base/constants");
|
|
13
13
|
var _balanceService = require("@subwallet/extension-base/services/balance-service");
|
|
14
|
-
var _BalanceMapImpl = require("@subwallet/extension-base/services/balance-service/BalanceMapImpl");
|
|
15
14
|
var _types = require("@subwallet/extension-base/services/base/types");
|
|
16
15
|
var _buyService = _interopRequireDefault(require("@subwallet/extension-base/services/buy-service"));
|
|
17
16
|
var _campaignService = _interopRequireDefault(require("@subwallet/extension-base/services/campaign-service"));
|
|
@@ -72,7 +71,6 @@ class KoniState {
|
|
|
72
71
|
unsubscriptionMap = {};
|
|
73
72
|
accountRefStore = new _AccountRef.default();
|
|
74
73
|
externalRequest = {};
|
|
75
|
-
balanceMap = new _BalanceMapImpl.BalanceMapImpl();
|
|
76
74
|
crowdloanMap = generateDefaultCrowdloanMap();
|
|
77
75
|
crowdloanSubject = new _rxjs.Subject();
|
|
78
76
|
nftSubject = new _rxjs.Subject();
|
|
@@ -234,6 +232,7 @@ class KoniState {
|
|
|
234
232
|
await this.migrationService.run();
|
|
235
233
|
this.campaignService.init();
|
|
236
234
|
this.eventService.emit('chain.ready', true);
|
|
235
|
+
await this.balanceService.init();
|
|
237
236
|
await this.earningService.init();
|
|
238
237
|
this.onReady();
|
|
239
238
|
this.onAccountAdd();
|
|
@@ -689,35 +688,6 @@ class KoniState {
|
|
|
689
688
|
getAllAddresses() {
|
|
690
689
|
return _uiKeyring.keyring.getAccounts().map(account => account.address);
|
|
691
690
|
}
|
|
692
|
-
async removeInactiveChainBalances() {
|
|
693
|
-
const assetSettings = await this.chainService.getAssetSettings();
|
|
694
|
-
this.balanceMap.removeBalanceItemByFilter(item => {
|
|
695
|
-
return !assetSettings[item.tokenSlug];
|
|
696
|
-
});
|
|
697
|
-
}
|
|
698
|
-
async getBalance(reset) {
|
|
699
|
-
await this.removeInactiveChainBalances();
|
|
700
|
-
return {
|
|
701
|
-
details: this.balanceMap.map,
|
|
702
|
-
reset
|
|
703
|
-
};
|
|
704
|
-
}
|
|
705
|
-
async getStoredBalance(address) {
|
|
706
|
-
return await this.dbService.stores.balance.getBalanceMapByAddresses(address);
|
|
707
|
-
}
|
|
708
|
-
isFirstLoad = true;
|
|
709
|
-
async handleResetBalance(newAddress, forceRefresh) {
|
|
710
|
-
if (this.isFirstLoad) {
|
|
711
|
-
const backupBalanceData = await this.dbService.getStoredBalance();
|
|
712
|
-
this.balanceMap.updateBalanceItems(backupBalanceData, (0, _utils3.isAccountAll)(newAddress));
|
|
713
|
-
this.isFirstLoad = false;
|
|
714
|
-
}
|
|
715
|
-
if (forceRefresh) {
|
|
716
|
-
this.balanceMap.setData({});
|
|
717
|
-
await this.dbService.stores.balance.clear();
|
|
718
|
-
}
|
|
719
|
-
await Promise.all([this.removeInactiveChainBalances()]);
|
|
720
|
-
}
|
|
721
691
|
async resetCrowdloanMap(newAddress) {
|
|
722
692
|
const defaultData = generateDefaultCrowdloanMap();
|
|
723
693
|
const storedData = await this.getStoredCrowdloan(newAddress);
|
|
@@ -739,36 +709,6 @@ class KoniState {
|
|
|
739
709
|
});
|
|
740
710
|
});
|
|
741
711
|
}
|
|
742
|
-
balanceUpdateCache = [];
|
|
743
|
-
|
|
744
|
-
/** Note: items must be same tokenSlug */
|
|
745
|
-
setBalanceItem(items) {
|
|
746
|
-
if (items.length) {
|
|
747
|
-
const nowTime = new Date().getTime();
|
|
748
|
-
for (const item of items) {
|
|
749
|
-
const balance = {
|
|
750
|
-
timestamp: nowTime,
|
|
751
|
-
...item
|
|
752
|
-
};
|
|
753
|
-
this.balanceUpdateCache.push(balance);
|
|
754
|
-
}
|
|
755
|
-
(0, _utils3.addLazy)('updateBalanceStore', () => {
|
|
756
|
-
const isAllAccount = (0, _utils3.isAccountAll)(this.keyringService.currentAccount.address);
|
|
757
|
-
this.balanceMap.updateBalanceItems(this.balanceUpdateCache, isAllAccount);
|
|
758
|
-
if (isAllAccount) {
|
|
759
|
-
this.balanceUpdateCache = [...this.balanceUpdateCache, ...Object.values(this.balanceMap.map[_constants.ALL_ACCOUNT_KEY])];
|
|
760
|
-
}
|
|
761
|
-
this.updateBalanceStore(this.balanceUpdateCache);
|
|
762
|
-
this.balanceUpdateCache = [];
|
|
763
|
-
}, 300, 1800);
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
updateBalanceStore(items) {
|
|
767
|
-
this.dbService.updateBulkBalanceStore(items).catch(e => this.logger.warn(e));
|
|
768
|
-
}
|
|
769
|
-
subscribeBalance() {
|
|
770
|
-
return this.balanceMap.mapSubject;
|
|
771
|
-
}
|
|
772
712
|
getCrowdloan(reset) {
|
|
773
713
|
return {
|
|
774
714
|
details: this.crowdloanMap,
|
|
@@ -1479,7 +1419,7 @@ class KoniState {
|
|
|
1479
1419
|
// Stopping services
|
|
1480
1420
|
await Promise.all([this.cron.stop(), this.subscription.stop()]);
|
|
1481
1421
|
await this.pauseAllNetworks(undefined, 'IDLE mode');
|
|
1482
|
-
await Promise.all([this.historyService.stop(), this.priceService.stop(), this.earningService.stop()]);
|
|
1422
|
+
await Promise.all([this.historyService.stop(), this.priceService.stop(), this.balanceService.stop(), this.earningService.stop()]);
|
|
1483
1423
|
|
|
1484
1424
|
// Complete sleeping
|
|
1485
1425
|
sleeping.resolve();
|
|
@@ -1512,7 +1452,7 @@ class KoniState {
|
|
|
1512
1452
|
}
|
|
1513
1453
|
|
|
1514
1454
|
// Start services
|
|
1515
|
-
await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start(), this.earningService.start()]);
|
|
1455
|
+
await Promise.all([this.cron.start(), this.subscription.start(), this.historyService.start(), this.priceService.start(), this.balanceService.start(), this.earningService.start()]);
|
|
1516
1456
|
|
|
1517
1457
|
// Complete starting
|
|
1518
1458
|
starting.resolve();
|
|
@@ -1535,59 +1475,21 @@ class KoniState {
|
|
|
1535
1475
|
createUnsubscriptionHandle(id, unsubscribe) {
|
|
1536
1476
|
this.unsubscriptionMap[id] = unsubscribe;
|
|
1537
1477
|
}
|
|
1538
|
-
|
|
1539
|
-
const
|
|
1540
|
-
const
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
const needActiveTokens = [];
|
|
1548
|
-
const currentAssetSettings = await this.chainService.getAssetSettings();
|
|
1549
|
-
const chainMap = this.chainService.getChainInfoMap();
|
|
1550
|
-
const balanceDataList = await Promise.all(promiseList);
|
|
1551
|
-
balanceDataList.forEach(balanceData => {
|
|
1552
|
-
balanceData && balanceData.forEach(_ref10 => {
|
|
1553
|
-
var _currentAssetSettings;
|
|
1554
|
-
let {
|
|
1555
|
-
balance,
|
|
1556
|
-
bonded,
|
|
1557
|
-
category,
|
|
1558
|
-
locked,
|
|
1559
|
-
network,
|
|
1560
|
-
symbol
|
|
1561
|
-
} = _ref10;
|
|
1562
|
-
const chain = _subscanChainMap.SUBSCAN_BALANCE_CHAIN_MAP_REVERSE[network];
|
|
1563
|
-
const chainInfo = chain ? chainMap[chain] : null;
|
|
1564
|
-
const balanceIsEmpty = (!balance || balance === '0') && (!locked || locked === '0') && (!bonded || bonded === '0');
|
|
1565
|
-
|
|
1566
|
-
// Cancel if chain is not supported or is testnet or balance is 0
|
|
1567
|
-
if (!chainInfo || chainInfo.isTestnet || balanceIsEmpty) {
|
|
1568
|
-
return;
|
|
1569
|
-
}
|
|
1570
|
-
const tokenKey = `${chain}-${category === 'native' ? 'NATIVE' : 'LOCAL'}-${symbol.toUpperCase()}`;
|
|
1571
|
-
const existedKey = Object.keys(assetMap).find(v => v.toLowerCase() === tokenKey.toLowerCase());
|
|
1572
|
-
if (existedKey && !((_currentAssetSettings = currentAssetSettings[existedKey]) !== null && _currentAssetSettings !== void 0 && _currentAssetSettings.visible)) {
|
|
1573
|
-
needEnableChains.push(chain);
|
|
1574
|
-
needActiveTokens.push(existedKey);
|
|
1575
|
-
currentAssetSettings[existedKey] = {
|
|
1576
|
-
visible: true
|
|
1577
|
-
};
|
|
1578
|
-
}
|
|
1579
|
-
});
|
|
1580
|
-
});
|
|
1581
|
-
if (needActiveTokens.length) {
|
|
1582
|
-
await this.chainService.enableChains(needEnableChains);
|
|
1583
|
-
this.chainService.setAssetSettings({
|
|
1584
|
-
...currentAssetSettings
|
|
1585
|
-
});
|
|
1478
|
+
get detectBalanceChainSlugMap() {
|
|
1479
|
+
const result = {};
|
|
1480
|
+
const chainInfoMap = this.getChainInfoMap();
|
|
1481
|
+
for (const [key, chainInfo] of Object.entries(chainInfoMap)) {
|
|
1482
|
+
var _chainInfo$extraInfo;
|
|
1483
|
+
const chainBalanceSlug = ((_chainInfo$extraInfo = chainInfo.extraInfo) === null || _chainInfo$extraInfo === void 0 ? void 0 : _chainInfo$extraInfo.chainBalanceSlug) || '';
|
|
1484
|
+
if (chainBalanceSlug) {
|
|
1485
|
+
result[chainBalanceSlug] = key;
|
|
1486
|
+
}
|
|
1586
1487
|
}
|
|
1488
|
+
return result;
|
|
1587
1489
|
}
|
|
1588
1490
|
onAccountAdd() {
|
|
1589
1491
|
this.eventService.on('account.add', address => {
|
|
1590
|
-
this.autoEnableChains([address]).catch(this.logger.error);
|
|
1492
|
+
this.balanceService.autoEnableChains([address]).catch(this.logger.error);
|
|
1591
1493
|
});
|
|
1592
1494
|
}
|
|
1593
1495
|
onAccountRemove() {
|
|
@@ -1596,11 +1498,6 @@ class KoniState {
|
|
|
1596
1498
|
|
|
1597
1499
|
const stores = this.dbService.stores;
|
|
1598
1500
|
|
|
1599
|
-
// Remove Balance
|
|
1600
|
-
stores.balance.removeAllByAddress(address).catch(console.error);
|
|
1601
|
-
stores.balance.removeAllByAddress(_constants.ALL_ACCOUNT_KEY).catch(console.error);
|
|
1602
|
-
this.balanceMap.removeBalanceItems([address, _constants.ALL_ACCOUNT_KEY]);
|
|
1603
|
-
|
|
1604
1501
|
// Remove NFT
|
|
1605
1502
|
stores.nft.deleteNftByAddress([address]).catch(console.error);
|
|
1606
1503
|
|
|
@@ -1618,7 +1515,7 @@ class KoniState {
|
|
|
1618
1515
|
return true;
|
|
1619
1516
|
}
|
|
1620
1517
|
async reloadBalance() {
|
|
1621
|
-
await this.
|
|
1518
|
+
await this.balanceService.reloadBalance();
|
|
1622
1519
|
return true;
|
|
1623
1520
|
}
|
|
1624
1521
|
async reloadCrowdloan() {
|
|
@@ -1643,9 +1540,11 @@ class KoniState {
|
|
|
1643
1540
|
}
|
|
1644
1541
|
async resetWallet(resetAll) {
|
|
1645
1542
|
await this.keyringService.resetWallet(resetAll);
|
|
1543
|
+
await this.earningService.resetYieldPosition();
|
|
1544
|
+
await this.balanceService.handleResetBalance(true);
|
|
1646
1545
|
this.requestService.resetWallet();
|
|
1647
1546
|
this.transactionService.resetWallet();
|
|
1648
|
-
await this.handleResetBalance(
|
|
1547
|
+
// await this.handleResetBalance(ALL_ACCOUNT_KEY, true);
|
|
1649
1548
|
await this.earningService.resetWallet();
|
|
1650
1549
|
await this.dbService.resetWallet(resetAll);
|
|
1651
1550
|
this.accountRefStore.set('refList', []);
|
|
@@ -1758,7 +1657,7 @@ class KoniState {
|
|
|
1758
1657
|
};
|
|
1759
1658
|
balanceItem.free = ((_zkBalances$i = zkBalances[i]) === null || _zkBalances$i === void 0 ? void 0 : _zkBalances$i.toString()) || '0';
|
|
1760
1659
|
balanceItem.state = _KoniTypes.APIItemState.READY;
|
|
1761
|
-
this.setBalanceItem([balanceItem]);
|
|
1660
|
+
this.balanceService.setBalanceItem([balanceItem]);
|
|
1762
1661
|
}
|
|
1763
1662
|
}).catch(console.warn);
|
|
1764
1663
|
}
|
|
@@ -1815,12 +1714,12 @@ class KoniState {
|
|
|
1815
1714
|
specVersion: parseInt((metadata === null || metadata === void 0 ? void 0 : metadata.specVersion) || '0')
|
|
1816
1715
|
};
|
|
1817
1716
|
}
|
|
1818
|
-
getCrowdloanContributions(
|
|
1717
|
+
getCrowdloanContributions(_ref10) {
|
|
1819
1718
|
let {
|
|
1820
1719
|
address,
|
|
1821
1720
|
page,
|
|
1822
1721
|
relayChain
|
|
1823
|
-
} =
|
|
1722
|
+
} = _ref10;
|
|
1824
1723
|
return this.subscanService.getCrowdloanContributions(relayChain, address, page);
|
|
1825
1724
|
}
|
|
1826
1725
|
}
|
|
@@ -5,12 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.KoniSubscription = void 0;
|
|
7
7
|
var _crowdloan = require("@subwallet/extension-base/koni/api/dotsama/crowdloan");
|
|
8
|
-
var _staking = require("@subwallet/extension-base/koni/api/staking");
|
|
9
8
|
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
10
|
-
var _balance = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/balance");
|
|
11
|
-
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
12
9
|
var _types = require("@subwallet/extension-base/services/event-service/types");
|
|
13
|
-
var
|
|
10
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
14
11
|
var _util = require("@polkadot/util");
|
|
15
12
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
16
13
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -53,7 +50,6 @@ class KoniSubscription {
|
|
|
53
50
|
await Promise.all([this.state.eventService.waitCryptoReady, this.state.eventService.waitKeyringReady, this.state.eventService.waitAssetReady]);
|
|
54
51
|
const currentAddress = (_this$state$keyringSe = this.state.keyringService.currentAccount) === null || _this$state$keyringSe === void 0 ? void 0 : _this$state$keyringSe.address;
|
|
55
52
|
if (currentAddress) {
|
|
56
|
-
this.subscribeBalances(currentAddress, this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap());
|
|
57
53
|
this.subscribeCrowdloans(currentAddress, this.state.getSubstrateApiMap());
|
|
58
54
|
}
|
|
59
55
|
this.eventHandler = (events, eventTypes) => {
|
|
@@ -67,7 +63,6 @@ class KoniSubscription {
|
|
|
67
63
|
if (!address) {
|
|
68
64
|
return;
|
|
69
65
|
}
|
|
70
|
-
this.subscribeBalances(address, serviceInfo.chainInfoMap, serviceInfo.chainStateMap, serviceInfo.chainApiMap.substrate, serviceInfo.chainApiMap.evm);
|
|
71
66
|
this.subscribeCrowdloans(address, serviceInfo.chainApiMap.substrate);
|
|
72
67
|
};
|
|
73
68
|
this.state.eventService.onLazy(this.eventHandler.bind(this));
|
|
@@ -80,15 +75,6 @@ class KoniSubscription {
|
|
|
80
75
|
this.stopAllSubscription();
|
|
81
76
|
return Promise.resolve();
|
|
82
77
|
}
|
|
83
|
-
subscribeBalances(address, chainInfoMap, chainStateMap, substrateApiMap, web3ApiMap, onlyRunOnFirstTime) {
|
|
84
|
-
const addresses = this.state.getDecodedAddresses(address);
|
|
85
|
-
if (!addresses.length) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
this.state.handleResetBalance(address).then(() => {
|
|
89
|
-
this.updateSubscription('balance', this.initBalanceSubscription(addresses, chainInfoMap, chainStateMap, substrateApiMap, web3ApiMap, onlyRunOnFirstTime));
|
|
90
|
-
}).catch(err => this.logger.warn(err));
|
|
91
|
-
}
|
|
92
78
|
subscribeCrowdloans(address, substrateApiMap, onlyRunOnFirstTime) {
|
|
93
79
|
const addresses = this.state.getDecodedAddresses(address);
|
|
94
80
|
if (!addresses.length) {
|
|
@@ -98,27 +84,6 @@ class KoniSubscription {
|
|
|
98
84
|
this.updateSubscription('crowdloan', this.initCrowdloanSubscription(addresses, substrateApiMap, onlyRunOnFirstTime));
|
|
99
85
|
}).catch(console.error);
|
|
100
86
|
}
|
|
101
|
-
initBalanceSubscription(addresses, chainInfoMap, chainStateMap, substrateApiMap, evmApiMap, onlyRunOnFirstTime) {
|
|
102
|
-
const filteredChainInfoMap = {};
|
|
103
|
-
Object.values(chainStateMap).forEach(chainState => {
|
|
104
|
-
if (chainState.active) {
|
|
105
|
-
filteredChainInfoMap[chainState.slug] = chainInfoMap[chainState.slug];
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
const unsub = (0, _balance.subscribeBalance)(addresses, filteredChainInfoMap, substrateApiMap, evmApiMap, result => {
|
|
109
|
-
this.state.setBalanceItem(result);
|
|
110
|
-
});
|
|
111
|
-
const unsub2 = this.state.subscribeMantaPayBalance();
|
|
112
|
-
if (onlyRunOnFirstTime) {
|
|
113
|
-
unsub && unsub();
|
|
114
|
-
unsub2 && unsub2();
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
return () => {
|
|
118
|
-
unsub && unsub();
|
|
119
|
-
unsub2 && unsub2();
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
87
|
initCrowdloanSubscription(addresses, substrateApiMap, onlyRunOnFirstTime) {
|
|
123
88
|
const subscriptionPromise = (0, _crowdloan.subscribeCrowdloan)(addresses, substrateApiMap, (networkKey, rs) => {
|
|
124
89
|
this.state.setCrowdloanItem(networkKey, rs);
|
|
@@ -150,36 +115,11 @@ class KoniSubscription {
|
|
|
150
115
|
return _this.state.setNftCollection(...arguments);
|
|
151
116
|
}).catch(this.logger.log);
|
|
152
117
|
}
|
|
153
|
-
async
|
|
154
|
-
const addresses = this.state.getDecodedAddresses(address);
|
|
155
|
-
if (!addresses.length) {
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
const chainInfoMap = this.state.getChainInfoMap();
|
|
159
|
-
const targetNetworkMap = {};
|
|
160
|
-
Object.entries(chainInfoMap).forEach(_ref => {
|
|
161
|
-
let [key, network] = _ref;
|
|
162
|
-
const chainState = this.state.getChainStateByKey(key);
|
|
163
|
-
if ((0, _utils._isChainEnabled)(chainState) && (0, _utils._isChainSupportSubstrateStaking)(network)) {
|
|
164
|
-
targetNetworkMap[key] = network;
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
await (0, _staking.getNominationStakingRewardData)(addresses, targetNetworkMap, rewardItem => {
|
|
168
|
-
this.state.updateStakingReward(rewardItem);
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
async reloadBalance() {
|
|
118
|
+
async reloadCrowdloan() {
|
|
172
119
|
var _this$state$keyringSe2;
|
|
173
120
|
const currentAddress = (_this$state$keyringSe2 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe2 === void 0 ? void 0 : _this$state$keyringSe2.address;
|
|
174
|
-
await this.state.handleResetBalance(currentAddress, true);
|
|
175
|
-
this.subscribeBalances(currentAddress, this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap());
|
|
176
|
-
await (0, _utils2.waitTimeout)(1800);
|
|
177
|
-
}
|
|
178
|
-
async reloadCrowdloan() {
|
|
179
|
-
var _this$state$keyringSe3;
|
|
180
|
-
const currentAddress = (_this$state$keyringSe3 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe3 === void 0 ? void 0 : _this$state$keyringSe3.address;
|
|
181
121
|
this.subscribeCrowdloans(currentAddress, this.state.getSubstrateApiMap());
|
|
182
|
-
await (0,
|
|
122
|
+
await (0, _utils.waitTimeout)(1800);
|
|
183
123
|
}
|
|
184
124
|
}
|
|
185
125
|
exports.KoniSubscription = KoniSubscription;
|
package/cjs/packageInfo.js
CHANGED
|
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.BalanceMapImpl = void 0;
|
|
7
7
|
var _constants = require("@subwallet/extension-base/constants");
|
|
8
|
-
var _group = require("@subwallet/extension-base/services/balance-service/helpers/group");
|
|
9
8
|
var _utils = require("@subwallet/extension-base/utils");
|
|
10
9
|
var _rxjs = require("rxjs");
|
|
10
|
+
var _helpers = require("./helpers");
|
|
11
11
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
12
12
|
// SPDX-License-Identifier: Apache-2.0
|
|
13
13
|
|
|
@@ -78,7 +78,7 @@ class BalanceMapImpl {
|
|
|
78
78
|
});
|
|
79
79
|
Object.entries(allAccountBalance).forEach(_ref => {
|
|
80
80
|
let [tokenSlug, balanceItems] = _ref;
|
|
81
|
-
allAccountBalanceInfo[tokenSlug] = (0,
|
|
81
|
+
allAccountBalanceInfo[tokenSlug] = (0, _helpers.groupBalance)(balanceItems, _constants.ALL_ACCOUNT_KEY, tokenSlug);
|
|
82
82
|
});
|
|
83
83
|
this._map[_constants.ALL_ACCOUNT_KEY] = allAccountBalanceInfo;
|
|
84
84
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _group = require("./group");
|
|
7
|
+
Object.keys(_group).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _group[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _group[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var _subscribe = require("./subscribe");
|
|
18
|
+
Object.keys(_subscribe).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _subscribe[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () {
|
|
24
|
+
return _subscribe[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -10,15 +10,27 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
|
10
10
|
var _constants = require("@subwallet/extension-base/constants");
|
|
11
11
|
var _balance = require("@subwallet/extension-base/koni/api/tokens/evm/balance");
|
|
12
12
|
var _web = require("@subwallet/extension-base/koni/api/tokens/evm/web3");
|
|
13
|
-
var _handlers = require("@subwallet/extension-base/koni/background/handlers");
|
|
14
13
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
14
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
15
15
|
var _util = require("@polkadot/util");
|
|
16
16
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
17
17
|
// SPDX-License-Identifier: Apache-2.0
|
|
18
18
|
|
|
19
|
-
function subscribeERC20Interval(
|
|
20
|
-
let
|
|
19
|
+
function subscribeERC20Interval(_ref) {
|
|
20
|
+
let {
|
|
21
|
+
addresses,
|
|
22
|
+
assetMap,
|
|
23
|
+
callback,
|
|
24
|
+
chainInfo,
|
|
25
|
+
evmApi
|
|
26
|
+
} = _ref;
|
|
27
|
+
const chain = chainInfo.slug;
|
|
28
|
+
const tokenList = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.ERC20]);
|
|
21
29
|
const erc20ContractMap = {};
|
|
30
|
+
Object.entries(tokenList).forEach(_ref2 => {
|
|
31
|
+
let [slug, tokenInfo] = _ref2;
|
|
32
|
+
erc20ContractMap[slug] = (0, _web.getERC20Contract)((0, _utils._getContractAddressOfToken)(tokenInfo), evmApi);
|
|
33
|
+
});
|
|
22
34
|
const getTokenBalances = () => {
|
|
23
35
|
Object.values(tokenList).map(async tokenInfo => {
|
|
24
36
|
try {
|
|
@@ -41,41 +53,47 @@ function subscribeERC20Interval(addresses, chain, evmApiMap, callBack) {
|
|
|
41
53
|
state: _KoniTypes.APIItemState.READY
|
|
42
54
|
};
|
|
43
55
|
});
|
|
44
|
-
|
|
56
|
+
callback(items);
|
|
45
57
|
} catch (err) {
|
|
46
58
|
console.log(tokenInfo.slug, err);
|
|
47
59
|
}
|
|
48
60
|
});
|
|
49
61
|
};
|
|
50
|
-
tokenList = _handlers.state.getAssetByChainAndAsset(chain, [_types._AssetType.ERC20]);
|
|
51
|
-
Object.entries(tokenList).forEach(_ref => {
|
|
52
|
-
let [slug, tokenInfo] = _ref;
|
|
53
|
-
erc20ContractMap[slug] = (0, _web.getERC20Contract)(chain, (0, _utils._getContractAddressOfToken)(tokenInfo), evmApiMap);
|
|
54
|
-
});
|
|
55
62
|
getTokenBalances();
|
|
56
63
|
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
57
64
|
return () => {
|
|
58
65
|
clearInterval(interval);
|
|
59
66
|
};
|
|
60
67
|
}
|
|
61
|
-
function subscribeEVMBalance(
|
|
68
|
+
function subscribeEVMBalance(params) {
|
|
69
|
+
var _Object$values$;
|
|
70
|
+
const {
|
|
71
|
+
addresses,
|
|
72
|
+
assetMap,
|
|
73
|
+
callback,
|
|
74
|
+
chainInfo,
|
|
75
|
+
evmApi
|
|
76
|
+
} = params;
|
|
77
|
+
const chain = chainInfo.slug;
|
|
78
|
+
const nativeTokenInfo = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.NATIVE]);
|
|
79
|
+
const nativeTokenSlug = ((_Object$values$ = Object.values(nativeTokenInfo)[0]) === null || _Object$values$ === void 0 ? void 0 : _Object$values$.slug) || '';
|
|
62
80
|
function getBalance() {
|
|
63
|
-
(0, _balance.getEVMBalance)(chain, addresses,
|
|
81
|
+
(0, _balance.getEVMBalance)(chain, addresses, evmApi).then(balances => {
|
|
64
82
|
return balances.map((balance, index) => {
|
|
65
83
|
return {
|
|
66
84
|
address: addresses[index],
|
|
67
|
-
tokenSlug:
|
|
85
|
+
tokenSlug: nativeTokenSlug,
|
|
68
86
|
state: _KoniTypes.APIItemState.READY,
|
|
69
87
|
free: new _util.BN(balance || '0').toString(),
|
|
70
88
|
locked: '0'
|
|
71
89
|
};
|
|
72
90
|
});
|
|
73
91
|
}).catch(e => {
|
|
74
|
-
console.error(`Error on get native balance with token ${
|
|
92
|
+
console.error(`Error on get native balance with token ${nativeTokenSlug}`, e);
|
|
75
93
|
return addresses.map(address => {
|
|
76
94
|
return {
|
|
77
95
|
address: address,
|
|
78
|
-
tokenSlug:
|
|
96
|
+
tokenSlug: nativeTokenSlug,
|
|
79
97
|
state: _KoniTypes.APIItemState.READY,
|
|
80
98
|
free: '0',
|
|
81
99
|
locked: '0'
|
|
@@ -87,7 +105,7 @@ function subscribeEVMBalance(chain, addresses, evmApiMap, callback, tokenInfo) {
|
|
|
87
105
|
}
|
|
88
106
|
getBalance();
|
|
89
107
|
const interval = setInterval(getBalance, _constants.ASTAR_REFRESH_BALANCE_INTERVAL);
|
|
90
|
-
const unsub2 = subscribeERC20Interval(
|
|
108
|
+
const unsub2 = subscribeERC20Interval(params);
|
|
91
109
|
return () => {
|
|
92
110
|
clearInterval(interval);
|
|
93
111
|
unsub2 && unsub2();
|