@subwallet/extension-base 1.1.28-1 → 1.1.28-beta.2
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 +94 -68
- package/background/KoniTypes.js +16 -13
- package/background/errors/TransactionError.js +9 -0
- package/cjs/background/KoniTypes.js +17 -16
- package/cjs/background/errors/TransactionError.js +9 -0
- package/cjs/constants/index.js +9 -3
- package/cjs/koni/api/nft/config.js +33 -23
- package/cjs/koni/api/nft/index.js +14 -0
- package/cjs/koni/api/nft/nft.js +1 -22
- package/cjs/koni/api/nft/ordinal_nft/constants.js +21 -0
- package/cjs/koni/api/nft/ordinal_nft/index.js +121 -0
- package/cjs/koni/api/nft/ordinal_nft/utils.js +41 -0
- package/cjs/koni/api/staking/bonding/amplitude.js +17 -15
- package/cjs/koni/api/staking/bonding/astar.js +11 -10
- package/cjs/koni/api/staking/bonding/index.js +4 -1
- package/cjs/koni/api/staking/bonding/paraChain.js +25 -23
- package/cjs/koni/api/staking/bonding/relayChain.js +48 -45
- package/cjs/koni/api/staking/bonding/utils.js +104 -86
- package/cjs/koni/api/staking/index.js +6 -5
- package/cjs/koni/api/staking/paraChain.js +6 -5
- package/cjs/koni/api/staking/relayChain.js +3 -2
- package/cjs/koni/api/yield/helper/utils.js +46 -0
- package/cjs/koni/background/cron.js +2 -0
- package/cjs/koni/background/handlers/Extension.js +347 -69
- package/cjs/koni/background/handlers/State.js +57 -4
- package/cjs/koni/background/handlers/index.js +4 -2
- package/cjs/koni/background/subscription.js +89 -19
- package/cjs/services/campaign-service/index.js +9 -6
- package/cjs/services/chain-service/constants.js +2 -16
- package/cjs/services/chain-service/utils.js +7 -1
- package/cjs/services/earning-service/constants/chains.js +29 -0
- package/cjs/services/earning-service/constants/index.js +27 -0
- package/cjs/services/earning-service/constants/step.js +18 -0
- package/cjs/services/earning-service/handlers/base.js +220 -0
- package/cjs/services/earning-service/handlers/index.js +60 -0
- package/cjs/services/earning-service/handlers/lending/base.js +20 -0
- package/cjs/services/earning-service/handlers/lending/index.js +13 -0
- package/cjs/services/earning-service/handlers/lending/interlay.js +170 -0
- package/cjs/services/earning-service/handlers/liquid-staking/acala.js +198 -0
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +43 -0
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +259 -0
- package/cjs/services/earning-service/handlers/liquid-staking/index.js +34 -0
- package/cjs/services/earning-service/handlers/liquid-staking/parallel.js +182 -0
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +375 -0
- package/cjs/services/earning-service/handlers/native-staking/amplitude.js +373 -0
- package/cjs/services/earning-service/handlers/native-staking/astar.js +446 -0
- package/cjs/services/earning-service/handlers/native-staking/base-para.js +137 -0
- package/cjs/services/earning-service/handlers/native-staking/base.js +119 -0
- package/cjs/services/earning-service/handlers/native-staking/index.js +34 -0
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +375 -0
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +529 -0
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +521 -0
- package/cjs/services/earning-service/handlers/special.js +411 -0
- package/cjs/services/earning-service/service.js +351 -0
- package/cjs/services/earning-service/utils/index.js +128 -0
- package/cjs/services/event-service/index.js +4 -0
- package/cjs/services/keyring-service/index.js +14 -2
- package/cjs/services/migration-service/scripts/DeleteEarningData.js +21 -0
- package/cjs/services/migration-service/scripts/EnableEarningChains.js +21 -0
- package/cjs/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
- package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
- package/cjs/services/migration-service/scripts/databases/MigrateEarningHistory.js +21 -0
- package/cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js +21 -0
- package/cjs/services/migration-service/scripts/index.js +7 -1
- package/cjs/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +149 -0
- package/cjs/services/mint-campaign-service/campaigns/index.js +13 -0
- package/cjs/services/mint-campaign-service/constants.js +11 -0
- package/cjs/services/mint-campaign-service/index.js +18 -0
- package/cjs/services/notification-service/NotificationService.js +1 -1
- package/cjs/services/storage-service/DatabaseService.js +51 -0
- package/cjs/services/storage-service/databases/index.js +4 -0
- package/cjs/services/storage-service/db-stores/NominatorMetadata.js +3 -3
- package/cjs/services/storage-service/db-stores/YieldPoolStore.js +36 -0
- package/cjs/services/storage-service/db-stores/YieldPositionStore.js +65 -0
- package/cjs/services/transaction-service/event-parser/index.js +58 -0
- package/cjs/services/transaction-service/helpers/index.js +3 -1
- package/cjs/services/transaction-service/index.js +180 -74
- package/cjs/services/transaction-service/utils.js +1 -0
- package/cjs/types/campaigns/index.js +16 -0
- package/cjs/types/campaigns/unlock-dot.js +1 -0
- package/cjs/types/index.js +44 -0
- package/cjs/types/ordinal.js +1 -0
- package/cjs/types/transaction.js +1 -0
- package/cjs/types/yield/actions/index.js +27 -0
- package/cjs/types/yield/actions/join/index.js +38 -0
- package/cjs/types/yield/actions/join/step.js +47 -0
- package/cjs/types/yield/actions/join/submit.js +1 -0
- package/cjs/types/yield/actions/join/validate.js +16 -0
- package/cjs/types/yield/actions/others.js +1 -0
- package/cjs/types/yield/index.js +27 -0
- package/cjs/types/yield/info/account/index.js +49 -0
- package/cjs/types/yield/info/account/info.js +1 -0
- package/cjs/types/yield/info/account/reward.js +1 -0
- package/cjs/types/yield/info/account/target.js +32 -0
- package/cjs/types/yield/info/account/unstake.js +27 -0
- package/cjs/types/yield/info/base.js +41 -0
- package/cjs/types/yield/info/chain/index.js +27 -0
- package/cjs/types/yield/info/chain/info.js +1 -0
- package/cjs/types/yield/info/chain/target.js +1 -0
- package/cjs/types/yield/info/index.js +49 -0
- package/cjs/types/yield/info/pallet.js +15 -0
- package/cjs/utils/fetchStaticData.js +2 -1
- package/cjs/utils/index.js +89 -1
- package/cjs/utils/object.js +12 -0
- package/cjs/utils/yield/index.js +3 -0
- package/constants/index.d.ts +2 -0
- package/constants/index.js +2 -0
- package/koni/api/nft/config.js +33 -23
- package/koni/api/nft/index.js +15 -1
- package/koni/api/nft/nft.js +2 -23
- package/koni/api/nft/ordinal_nft/constants.d.ts +9 -0
- package/koni/api/nft/ordinal_nft/constants.js +12 -0
- package/koni/api/nft/ordinal_nft/index.d.ts +8 -0
- package/koni/api/nft/ordinal_nft/index.js +114 -0
- package/koni/api/nft/ordinal_nft/utils.d.ts +2 -0
- package/koni/api/nft/ordinal_nft/utils.js +33 -0
- package/koni/api/staking/bonding/amplitude.js +11 -9
- package/koni/api/staking/bonding/astar.js +9 -8
- package/koni/api/staking/bonding/index.d.ts +1 -1
- package/koni/api/staking/bonding/index.js +5 -1
- package/koni/api/staking/bonding/paraChain.js +12 -10
- package/koni/api/staking/bonding/relayChain.d.ts +2 -2
- package/koni/api/staking/bonding/relayChain.js +33 -30
- package/koni/api/staking/bonding/utils.d.ts +15 -38
- package/koni/api/staking/bonding/utils.js +85 -69
- package/koni/api/staking/index.js +2 -1
- package/koni/api/staking/paraChain.js +7 -6
- package/koni/api/staking/relayChain.js +4 -3
- package/koni/api/yield/helper/utils.d.ts +10 -0
- package/koni/api/yield/helper/utils.js +32 -0
- package/koni/background/cron.js +2 -0
- package/koni/background/handlers/Extension.d.ts +16 -1
- package/koni/background/handlers/Extension.js +306 -30
- package/koni/background/handlers/State.d.ts +18 -2
- package/koni/background/handlers/State.js +56 -4
- package/koni/background/handlers/index.js +4 -2
- package/koni/background/subscription.d.ts +5 -1
- package/koni/background/subscription.js +91 -21
- package/package.json +317 -4
- package/services/campaign-service/index.js +9 -6
- package/services/chain-service/constants.d.ts +0 -11
- package/services/chain-service/constants.js +1 -14
- package/services/chain-service/utils.d.ts +1 -0
- package/services/chain-service/utils.js +5 -1
- package/services/earning-service/constants/abis/compound_finance_v2_abi.json +1235 -0
- package/services/earning-service/constants/abis/st_liquid_token_abi.json +1355 -0
- package/services/earning-service/constants/chains.d.ts +14 -0
- package/services/earning-service/constants/chains.js +21 -0
- package/services/earning-service/constants/index.d.ts +2 -0
- package/services/earning-service/constants/index.js +5 -0
- package/services/earning-service/constants/step.d.ts +3 -0
- package/services/earning-service/constants/step.js +10 -0
- package/services/earning-service/handlers/base.d.ts +107 -0
- package/services/earning-service/handlers/base.js +213 -0
- package/services/earning-service/handlers/index.d.ts +5 -0
- package/services/earning-service/handlers/index.js +8 -0
- package/services/earning-service/handlers/lending/base.d.ts +6 -0
- package/services/earning-service/handlers/lending/base.js +12 -0
- package/services/earning-service/handlers/lending/index.d.ts +1 -0
- package/services/earning-service/handlers/lending/index.js +4 -0
- package/services/earning-service/handlers/lending/interlay.d.ts +22 -0
- package/services/earning-service/handlers/lending/interlay.js +162 -0
- package/services/earning-service/handlers/liquid-staking/acala.d.ts +27 -0
- package/services/earning-service/handlers/liquid-staking/acala.js +190 -0
- package/services/earning-service/handlers/liquid-staking/base.d.ts +9 -0
- package/services/earning-service/handlers/liquid-staking/base.js +35 -0
- package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +44 -0
- package/services/earning-service/handlers/liquid-staking/bifrost.js +248 -0
- package/services/earning-service/handlers/liquid-staking/index.d.ts +4 -0
- package/services/earning-service/handlers/liquid-staking/index.js +7 -0
- package/services/earning-service/handlers/liquid-staking/parallel.d.ts +27 -0
- package/services/earning-service/handlers/liquid-staking/parallel.js +174 -0
- package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +36 -0
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +365 -0
- package/services/earning-service/handlers/native-staking/amplitude.d.ts +22 -0
- package/services/earning-service/handlers/native-staking/amplitude.js +364 -0
- package/services/earning-service/handlers/native-staking/astar.d.ts +19 -0
- package/services/earning-service/handlers/native-staking/astar.js +436 -0
- package/services/earning-service/handlers/native-staking/base-para.d.ts +11 -0
- package/services/earning-service/handlers/native-staking/base-para.js +129 -0
- package/services/earning-service/handlers/native-staking/base.d.ts +20 -0
- package/services/earning-service/handlers/native-staking/base.js +110 -0
- package/services/earning-service/handlers/native-staking/index.d.ts +4 -0
- package/services/earning-service/handlers/native-staking/index.js +7 -0
- package/services/earning-service/handlers/native-staking/para-chain.d.ts +15 -0
- package/services/earning-service/handlers/native-staking/para-chain.js +367 -0
- package/services/earning-service/handlers/native-staking/relay-chain.d.ts +21 -0
- package/services/earning-service/handlers/native-staking/relay-chain.js +520 -0
- package/services/earning-service/handlers/nomination-pool/index.d.ts +33 -0
- package/services/earning-service/handlers/nomination-pool/index.js +511 -0
- package/services/earning-service/handlers/special.d.ts +58 -0
- package/services/earning-service/handlers/special.js +403 -0
- package/services/earning-service/service.d.ts +40 -0
- package/services/earning-service/service.js +343 -0
- package/services/earning-service/utils/index.d.ts +18 -0
- package/services/earning-service/utils/index.js +112 -0
- package/services/event-service/index.d.ts +1 -0
- package/services/event-service/index.js +4 -0
- package/services/event-service/types.d.ts +8 -0
- package/services/keyring-service/index.d.ts +2 -1
- package/services/keyring-service/index.js +14 -2
- package/services/migration-service/scripts/DeleteEarningData.d.ts +4 -0
- package/services/migration-service/scripts/DeleteEarningData.js +13 -0
- package/services/migration-service/scripts/EnableEarningChains.d.ts +4 -0
- package/services/migration-service/scripts/EnableEarningChains.js +13 -0
- package/services/migration-service/scripts/MigrateLedgerAccount.js +1 -1
- package/services/migration-service/scripts/MigrateTransactionHistory.js +1 -1
- package/services/migration-service/scripts/databases/MigrateEarningHistory.d.ts +4 -0
- package/services/migration-service/scripts/databases/MigrateEarningHistory.js +13 -0
- package/services/migration-service/scripts/databases/MigrateEarningVersion.d.ts +4 -0
- package/services/migration-service/scripts/databases/MigrateEarningVersion.js +13 -0
- package/services/migration-service/scripts/index.js +7 -1
- package/services/mint-campaign-service/campaigns/UnlockDotCampaign.d.ts +13 -0
- package/services/mint-campaign-service/campaigns/UnlockDotCampaign.js +139 -0
- package/services/mint-campaign-service/campaigns/index.d.ts +1 -0
- package/services/mint-campaign-service/campaigns/index.js +4 -0
- package/services/mint-campaign-service/constants.d.ts +1 -0
- package/services/mint-campaign-service/constants.js +4 -0
- package/services/mint-campaign-service/index.d.ts +7 -0
- package/services/mint-campaign-service/index.js +11 -0
- package/services/notification-service/NotificationService.js +1 -1
- package/services/storage-service/DatabaseService.d.ts +18 -1
- package/services/storage-service/DatabaseService.js +51 -0
- package/services/storage-service/databases/index.d.ts +3 -1
- package/services/storage-service/databases/index.js +4 -0
- package/services/storage-service/db-stores/NominatorMetadata.js +3 -3
- package/services/storage-service/db-stores/YieldPoolStore.d.ts +10 -0
- package/services/storage-service/db-stores/YieldPoolStore.js +28 -0
- package/services/storage-service/db-stores/YieldPositionStore.d.ts +9 -0
- package/services/storage-service/db-stores/YieldPositionStore.js +57 -0
- package/services/subscan-service/index.d.ts +2 -2
- package/services/transaction-service/event-parser/index.d.ts +3 -1
- package/services/transaction-service/event-parser/index.js +57 -1
- package/services/transaction-service/helpers/index.js +3 -1
- package/services/transaction-service/index.d.ts +4 -15
- package/services/transaction-service/index.js +178 -72
- package/services/transaction-service/types.d.ts +2 -0
- package/services/transaction-service/utils.js +1 -0
- package/types/campaigns/index.d.ts +1 -0
- package/types/campaigns/index.js +4 -0
- package/types/campaigns/unlock-dot.d.ts +71 -0
- package/types/campaigns/unlock-dot.js +1 -0
- package/types/index.d.ts +5 -0
- package/types/index.js +5 -1
- package/types/ordinal.d.ts +69 -0
- package/types/ordinal.js +1 -0
- package/types/transaction.d.ts +3 -0
- package/types/transaction.js +1 -0
- package/types/yield/actions/index.d.ts +2 -0
- package/types/yield/actions/index.js +5 -0
- package/types/yield/actions/join/index.d.ts +3 -0
- package/types/yield/actions/join/index.js +6 -0
- package/types/yield/actions/join/step.d.ts +94 -0
- package/types/yield/actions/join/step.js +46 -0
- package/types/yield/actions/join/submit.d.ts +53 -0
- package/types/yield/actions/join/submit.js +1 -0
- package/types/yield/actions/join/validate.d.ts +18 -0
- package/types/yield/actions/join/validate.js +10 -0
- package/types/yield/actions/others.d.ts +63 -0
- package/types/yield/actions/others.js +1 -0
- package/types/yield/index.d.ts +2 -0
- package/types/yield/index.js +5 -0
- package/types/yield/info/account/index.d.ts +4 -0
- package/types/yield/info/account/index.js +7 -0
- package/types/yield/info/account/info.d.ts +101 -0
- package/types/yield/info/account/info.js +1 -0
- package/types/yield/info/account/reward.d.ts +30 -0
- package/types/yield/info/account/reward.js +1 -0
- package/types/yield/info/account/target.d.ts +43 -0
- package/types/yield/info/account/target.js +27 -0
- package/types/yield/info/account/unstake.d.ts +31 -0
- package/types/yield/info/account/unstake.js +22 -0
- package/types/yield/info/base.d.ts +45 -0
- package/types/yield/info/base.js +36 -0
- package/types/yield/info/chain/index.d.ts +2 -0
- package/types/yield/info/chain/index.js +5 -0
- package/types/yield/info/chain/info.d.ts +208 -0
- package/types/yield/info/chain/info.js +1 -0
- package/types/yield/info/chain/target.d.ts +37 -0
- package/types/yield/info/chain/target.js +1 -0
- package/types/yield/info/index.d.ts +4 -0
- package/types/yield/info/index.js +7 -0
- package/types/yield/info/pallet.d.ts +143 -0
- package/types/yield/info/pallet.js +9 -0
- package/utils/fetchStaticData.js +2 -1
- package/utils/index.d.ts +5 -0
- package/utils/index.js +53 -1
- package/utils/object.d.ts +1 -0
- package/utils/object.js +6 -0
|
@@ -14,10 +14,12 @@ import CampaignService from '@subwallet/extension-base/services/campaign-service
|
|
|
14
14
|
import { ChainService } from '@subwallet/extension-base/services/chain-service';
|
|
15
15
|
import { _DEFAULT_MANTA_ZK_CHAIN, _MANTA_ZK_CHAIN_GROUP, _PREDEFINED_SINGLE_MODES } from '@subwallet/extension-base/services/chain-service/constants';
|
|
16
16
|
import { _getEvmChainId, _getSubstrateGenesisHash, _getTokenOnChainAssetId, _isAssetFungibleToken, _isChainEnabled, _isChainTestNet, _parseMetadataForSmartContractAsset } from '@subwallet/extension-base/services/chain-service/utils';
|
|
17
|
+
import EarningService from '@subwallet/extension-base/services/earning-service/service';
|
|
17
18
|
import { EventService } from '@subwallet/extension-base/services/event-service';
|
|
18
19
|
import { HistoryService } from '@subwallet/extension-base/services/history-service';
|
|
19
20
|
import { KeyringService } from '@subwallet/extension-base/services/keyring-service';
|
|
20
21
|
import MigrationService from '@subwallet/extension-base/services/migration-service';
|
|
22
|
+
import MintCampaignService from '@subwallet/extension-base/services/mint-campaign-service';
|
|
21
23
|
import NotificationService from '@subwallet/extension-base/services/notification-service/NotificationService';
|
|
22
24
|
import { PriceService } from '@subwallet/extension-base/services/price-service';
|
|
23
25
|
import RequestService from '@subwallet/extension-base/services/request-service';
|
|
@@ -75,6 +77,10 @@ export default class KoniState {
|
|
|
75
77
|
ready: false,
|
|
76
78
|
data: {}
|
|
77
79
|
};
|
|
80
|
+
|
|
81
|
+
// earning
|
|
82
|
+
yieldPoolInfoSubject = new Subject();
|
|
83
|
+
yieldPositionSubject = new Subject();
|
|
78
84
|
lazyMap = {};
|
|
79
85
|
// Handle the general status of the extension
|
|
80
86
|
generalStatus = ServiceStatus.INITIALIZING;
|
|
@@ -93,11 +99,13 @@ export default class KoniState {
|
|
|
93
99
|
this.priceService = new PriceService(this.dbService, this.eventService, this.chainService);
|
|
94
100
|
this.balanceService = new BalanceService(this);
|
|
95
101
|
this.historyService = new HistoryService(this.dbService, this.chainService, this.eventService, this.keyringService, this.subscanService);
|
|
96
|
-
this.
|
|
102
|
+
this.mintCampaignService = new MintCampaignService(this);
|
|
97
103
|
this.walletConnectService = new WalletConnectService(this, this.requestService);
|
|
98
104
|
this.migrationService = new MigrationService(this, this.eventService);
|
|
99
105
|
this.campaignService = new CampaignService(this);
|
|
100
106
|
this.buyService = new BuyService(this);
|
|
107
|
+
this.transactionService = new TransactionService(this);
|
|
108
|
+
this.earningService = new EarningService(this);
|
|
101
109
|
this.subscription = new KoniSubscription(this, this.dbService);
|
|
102
110
|
this.cron = new KoniCron(this, this.subscription, this.dbService);
|
|
103
111
|
this.logger = createLogger('State');
|
|
@@ -240,6 +248,7 @@ export default class KoniState {
|
|
|
240
248
|
}
|
|
241
249
|
async startSubscription() {
|
|
242
250
|
await this.eventService.waitKeyringReady;
|
|
251
|
+
await this.eventService.waitAssetReady;
|
|
243
252
|
this.dbService.subscribeChainStakingMetadata([], data => {
|
|
244
253
|
this.chainStakingMetadataSubject.next(data);
|
|
245
254
|
});
|
|
@@ -250,8 +259,8 @@ export default class KoniState {
|
|
|
250
259
|
this.keyringService.accountSubject.subscribe(accounts => {
|
|
251
260
|
// TODO: improve this
|
|
252
261
|
unsub && unsub.unsubscribe();
|
|
253
|
-
unsub = this.dbService.
|
|
254
|
-
this.
|
|
262
|
+
unsub = this.dbService.subscribeYieldPosition(Object.keys(accounts), data => {
|
|
263
|
+
this.yieldPositionSubject.next(data);
|
|
255
264
|
});
|
|
256
265
|
});
|
|
257
266
|
}
|
|
@@ -343,6 +352,22 @@ export default class KoniState {
|
|
|
343
352
|
async getPooledStakingRecordsByAddress(addresses) {
|
|
344
353
|
return this.dbService.getPooledStakings(addresses, this.activeChainSlugs);
|
|
345
354
|
}
|
|
355
|
+
async getPooledPositionByAddress(addresses) {
|
|
356
|
+
return this.dbService.getYieldNominationPoolPosition(addresses, this.activeChainSlugs);
|
|
357
|
+
}
|
|
358
|
+
subscribeYieldPoolInfo() {
|
|
359
|
+
return this.yieldPoolInfoSubject;
|
|
360
|
+
}
|
|
361
|
+
subscribeYieldPosition() {
|
|
362
|
+
return this.yieldPositionSubject;
|
|
363
|
+
}
|
|
364
|
+
getYieldPoolInfo() {
|
|
365
|
+
return this.dbService.getYieldPools();
|
|
366
|
+
}
|
|
367
|
+
getYieldPositionInfo() {
|
|
368
|
+
const addresses = this.getDecodedAddresses(this.keyringService.currentAccount.address);
|
|
369
|
+
return this.dbService.getYieldPositionByAddress(addresses);
|
|
370
|
+
}
|
|
346
371
|
subscribeMantaPayConfig() {
|
|
347
372
|
return this.mantaPayConfigSubject;
|
|
348
373
|
}
|
|
@@ -691,9 +716,14 @@ export default class KoniState {
|
|
|
691
716
|
}
|
|
692
717
|
isFirstLoad = true;
|
|
693
718
|
async handleResetBalance(newAddress, forceRefresh) {
|
|
694
|
-
if (this.isFirstLoad
|
|
719
|
+
if (this.isFirstLoad) {
|
|
695
720
|
const backupBalanceData = await this.dbService.getStoredBalance();
|
|
696
721
|
this.balanceMap.updateBalanceItems(backupBalanceData, isAccountAll(newAddress));
|
|
722
|
+
this.isFirstLoad = false;
|
|
723
|
+
}
|
|
724
|
+
if (forceRefresh) {
|
|
725
|
+
this.balanceMap.setData({});
|
|
726
|
+
await this.dbService.stores.balance.clear();
|
|
697
727
|
}
|
|
698
728
|
await Promise.all([this.removeInactiveChainBalances()]);
|
|
699
729
|
}
|
|
@@ -1736,4 +1766,26 @@ export default class KoniState {
|
|
|
1736
1766
|
specVersion: parseInt((metadata === null || metadata === void 0 ? void 0 : metadata.specVersion) || '0')
|
|
1737
1767
|
};
|
|
1738
1768
|
}
|
|
1769
|
+
updateYieldPoolInfo(data) {
|
|
1770
|
+
this.dbService.updateYieldPoolStore(data).catch(e => this.logger.warn(e));
|
|
1771
|
+
}
|
|
1772
|
+
resetYieldPoolInfo(chains) {
|
|
1773
|
+
this.dbService.subscribeYieldPoolInfo(chains, data => {
|
|
1774
|
+
// TODO: no unsub
|
|
1775
|
+
this.yieldPoolInfoSubject.next(data);
|
|
1776
|
+
});
|
|
1777
|
+
}
|
|
1778
|
+
updateYieldPosition(data) {
|
|
1779
|
+
this.dbService.updateYieldPosition(data).catch(e => this.logger.warn(e));
|
|
1780
|
+
}
|
|
1781
|
+
getYieldPoolStakingInfo(chain, poolType) {
|
|
1782
|
+
return this.dbService.getYieldPoolStakingInfo(chain, poolType);
|
|
1783
|
+
}
|
|
1784
|
+
getCrowdloanContributions({
|
|
1785
|
+
address,
|
|
1786
|
+
page,
|
|
1787
|
+
relayChain
|
|
1788
|
+
}) {
|
|
1789
|
+
return this.subscanService.getCrowdloanContributions(relayChain, address, page);
|
|
1790
|
+
}
|
|
1739
1791
|
}
|
|
@@ -58,7 +58,8 @@ export default function handlers({
|
|
|
58
58
|
assert(port, 'Port has been disconnected');
|
|
59
59
|
port.postMessage({
|
|
60
60
|
id,
|
|
61
|
-
response
|
|
61
|
+
response,
|
|
62
|
+
sender: 'BACKGROUND'
|
|
62
63
|
});
|
|
63
64
|
}).catch(error => {
|
|
64
65
|
console.error(error);
|
|
@@ -70,7 +71,8 @@ export default function handlers({
|
|
|
70
71
|
error: error.message,
|
|
71
72
|
errorCode: error.code,
|
|
72
73
|
errorData: error.data,
|
|
73
|
-
id
|
|
74
|
+
id,
|
|
75
|
+
sender: 'BACKGROUND'
|
|
74
76
|
});
|
|
75
77
|
}
|
|
76
78
|
});
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
|
+
import { SubstrateApi } from '@subwallet/extension-base/services/chain-service/handler/SubstrateApi';
|
|
2
3
|
import { _ChainState, _EvmApi, _SubstrateApi } from '@subwallet/extension-base/services/chain-service/types';
|
|
3
4
|
import DatabaseService from '@subwallet/extension-base/services/storage-service/DatabaseService';
|
|
4
5
|
import KoniState from './handlers/State';
|
|
5
|
-
declare type SubscriptionName = 'balance' | 'crowdloan' | 'stakingOnChain' | 'essentialChainStakingMetadata';
|
|
6
|
+
declare type SubscriptionName = 'balance' | 'crowdloan' | 'stakingOnChain' | 'essentialChainStakingMetadata' | 'yieldPoolStats' | 'yieldPosition';
|
|
6
7
|
export declare class KoniSubscription {
|
|
7
8
|
private eventHandler?;
|
|
8
9
|
private subscriptionMap;
|
|
@@ -18,6 +19,9 @@ export declare class KoniSubscription {
|
|
|
18
19
|
stop(): Promise<void>;
|
|
19
20
|
subscribeBalances(address: string, chainInfoMap: Record<string, _ChainInfo>, chainStateMap: Record<string, _ChainState>, substrateApiMap: Record<string, _SubstrateApi>, web3ApiMap: Record<string, _EvmApi>, onlyRunOnFirstTime?: boolean): void;
|
|
20
21
|
subscribeCrowdloans(address: string, substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): void;
|
|
22
|
+
subscribeYieldPools(chainInfoMap: Record<string, _ChainInfo>, assetInfoMap: Record<string, _ChainAsset>, substrateApiMap: Record<string, SubstrateApi>, evmApiMap: Record<string, _EvmApi>, address?: string, onlyRunOnFirstTime?: boolean): void;
|
|
23
|
+
initYieldPositionSubscription(addresses: string[], substrateApiMap: Record<string, SubstrateApi>, evmApiMap: Record<string, _EvmApi>, chainInfoMap: Record<string, _ChainInfo>, assetInfoMap: Record<string, _ChainAsset>, onlyRunOnFirstTime?: boolean): () => void;
|
|
24
|
+
initYieldPoolStatsSubscription(substrateApiMap: Record<string, _SubstrateApi>, evmApiMap: Record<string, _EvmApi>, onlyRunOnFirstTime?: boolean): () => void;
|
|
21
25
|
subscribeStakingOnChain(address: string, substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): void;
|
|
22
26
|
initStakingOnChainSubscription(addresses: string[], substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
|
|
23
27
|
initEssentialChainStakingMetadataSubscription(substrateApiMap: Record<string, _SubstrateApi>, onlyRunOnFirstTime?: boolean): (() => void) | undefined;
|
|
@@ -2,21 +2,22 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { subscribeCrowdloan } from '@subwallet/extension-base/koni/api/dotsama/crowdloan';
|
|
5
|
-
import { getNominationStakingRewardData,
|
|
5
|
+
import { getNominationStakingRewardData, stakingOnChainApi } from '@subwallet/extension-base/koni/api/staking';
|
|
6
6
|
import { subscribeEssentialChainStakingMetadata } from '@subwallet/extension-base/koni/api/staking/bonding';
|
|
7
|
-
import { getAmplitudeUnclaimedStakingReward } from '@subwallet/extension-base/koni/api/staking/paraChain';
|
|
8
7
|
import { nftHandler } from '@subwallet/extension-base/koni/background/handlers';
|
|
9
8
|
import { subscribeBalance } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/balance';
|
|
10
9
|
import { _isChainEnabled, _isChainSupportSubstrateStaking } from '@subwallet/extension-base/services/chain-service/utils';
|
|
11
10
|
import { COMMON_RELOAD_EVENTS } from '@subwallet/extension-base/services/event-service/types';
|
|
12
11
|
import { waitTimeout } from '@subwallet/extension-base/utils';
|
|
13
|
-
import { logger as createLogger } from '@polkadot/util';
|
|
12
|
+
import { logger as createLogger, noop } from '@polkadot/util';
|
|
14
13
|
export class KoniSubscription {
|
|
15
14
|
subscriptionMap = {
|
|
16
15
|
crowdloan: undefined,
|
|
17
16
|
balance: undefined,
|
|
18
17
|
stakingOnChain: undefined,
|
|
19
|
-
essentialChainStakingMetadata: undefined
|
|
18
|
+
essentialChainStakingMetadata: undefined,
|
|
19
|
+
yieldPoolStats: undefined,
|
|
20
|
+
yieldPosition: undefined
|
|
20
21
|
};
|
|
21
22
|
constructor(state, dbService) {
|
|
22
23
|
this.dbService = dbService;
|
|
@@ -52,6 +53,7 @@ export class KoniSubscription {
|
|
|
52
53
|
var _this$state$keyringSe;
|
|
53
54
|
await Promise.all([this.state.eventService.waitCryptoReady, this.state.eventService.waitKeyringReady, this.state.eventService.waitAssetReady]);
|
|
54
55
|
const currentAddress = (_this$state$keyringSe = this.state.keyringService.currentAccount) === null || _this$state$keyringSe === void 0 ? void 0 : _this$state$keyringSe.address;
|
|
56
|
+
this.subscribeYieldPools(this.state.getChainInfoMap(), this.state.getAssetRegistry(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap(), currentAddress);
|
|
55
57
|
if (currentAddress) {
|
|
56
58
|
this.subscribeBalances(currentAddress, this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap());
|
|
57
59
|
this.subscribeCrowdloans(currentAddress, this.state.getSubstrateApiMap());
|
|
@@ -65,6 +67,9 @@ export class KoniSubscription {
|
|
|
65
67
|
return;
|
|
66
68
|
}
|
|
67
69
|
const address = (_serviceInfo$currentA = serviceInfo.currentAccountInfo) === null || _serviceInfo$currentA === void 0 ? void 0 : _serviceInfo$currentA.address;
|
|
70
|
+
|
|
71
|
+
// @ts-ignore
|
|
72
|
+
this.subscribeYieldPools(serviceInfo.chainInfoMap, serviceInfo.assetRegistry, serviceInfo.chainApiMap.substrate, serviceInfo.chainApiMap.evm, address);
|
|
68
73
|
if (!address) {
|
|
69
74
|
return;
|
|
70
75
|
}
|
|
@@ -100,6 +105,72 @@ export class KoniSubscription {
|
|
|
100
105
|
this.updateSubscription('crowdloan', this.initCrowdloanSubscription(addresses, substrateApiMap, onlyRunOnFirstTime));
|
|
101
106
|
}).catch(console.error);
|
|
102
107
|
}
|
|
108
|
+
subscribeYieldPools(chainInfoMap, assetInfoMap, substrateApiMap, evmApiMap, address, onlyRunOnFirstTime) {
|
|
109
|
+
this.updateSubscription('yieldPoolStats', this.initYieldPoolStatsSubscription(substrateApiMap, evmApiMap, onlyRunOnFirstTime));
|
|
110
|
+
if (address) {
|
|
111
|
+
const addresses = this.state.getDecodedAddresses(address);
|
|
112
|
+
if (!addresses.length) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
this.updateSubscription('yieldPosition', this.initYieldPositionSubscription(addresses, substrateApiMap, evmApiMap, chainInfoMap, assetInfoMap));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
initYieldPositionSubscription(addresses, substrateApiMap, evmApiMap, chainInfoMap, assetInfoMap, onlyRunOnFirstTime) {
|
|
119
|
+
let cancel = false;
|
|
120
|
+
const updateYieldPoolStats = data => {
|
|
121
|
+
this.state.updateYieldPosition(data);
|
|
122
|
+
};
|
|
123
|
+
let unsub = noop;
|
|
124
|
+
this.state.earningService.subscribePoolPositions(addresses, updateYieldPoolStats).then(rs => {
|
|
125
|
+
if (cancel) {
|
|
126
|
+
rs();
|
|
127
|
+
} else {
|
|
128
|
+
if (onlyRunOnFirstTime) {
|
|
129
|
+
rs && rs();
|
|
130
|
+
} else {
|
|
131
|
+
unsub = rs;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}).catch(console.error);
|
|
135
|
+
return () => {
|
|
136
|
+
cancel = true;
|
|
137
|
+
unsub && unsub();
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
initYieldPoolStatsSubscription(substrateApiMap, evmApiMap, onlyRunOnFirstTime) {
|
|
141
|
+
let cancel = false;
|
|
142
|
+
this.state.resetYieldPoolInfo(Object.keys(this.state.getActiveChainInfoMap()));
|
|
143
|
+
const updateYieldPoolStats = data => {
|
|
144
|
+
this.state.updateYieldPoolInfo(data);
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
// const unsub = subscribeYieldPoolStats(substrateApiMap, evmApiMap, this.state.getActiveChainInfoMap(), this.state.getAssetRegistry(), updateYieldPoolStats);
|
|
148
|
+
let unsub = noop;
|
|
149
|
+
this.state.earningService.subscribePoolsInfo(updateYieldPoolStats).then(rs => {
|
|
150
|
+
if (cancel) {
|
|
151
|
+
rs();
|
|
152
|
+
} else {
|
|
153
|
+
if (onlyRunOnFirstTime) {
|
|
154
|
+
rs && rs();
|
|
155
|
+
} else {
|
|
156
|
+
unsub = rs;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}).catch(console.error);
|
|
160
|
+
|
|
161
|
+
//
|
|
162
|
+
// if (onlyRunOnFirstTime) {
|
|
163
|
+
// unsub && unsub();
|
|
164
|
+
//
|
|
165
|
+
// return;
|
|
166
|
+
// }
|
|
167
|
+
|
|
168
|
+
return () => {
|
|
169
|
+
cancel = true;
|
|
170
|
+
// unsub && unsub();
|
|
171
|
+
unsub && unsub();
|
|
172
|
+
};
|
|
173
|
+
}
|
|
103
174
|
subscribeStakingOnChain(address, substrateApiMap, onlyRunOnFirstTime) {
|
|
104
175
|
this.state.resetStaking(address);
|
|
105
176
|
const addresses = this.state.getDecodedAddresses(address);
|
|
@@ -175,15 +246,11 @@ export class KoniSubscription {
|
|
|
175
246
|
this.state.setCrowdloanItem(networkKey, rs);
|
|
176
247
|
});
|
|
177
248
|
if (onlyRunOnFirstTime) {
|
|
178
|
-
subscriptionPromise.then(unsub =>
|
|
179
|
-
unsub && unsub();
|
|
180
|
-
}).catch(this.logger.warn);
|
|
249
|
+
subscriptionPromise.then(unsub => unsub === null || unsub === void 0 ? void 0 : unsub()).catch(this.logger.warn);
|
|
181
250
|
return;
|
|
182
251
|
}
|
|
183
252
|
return () => {
|
|
184
|
-
subscriptionPromise.then(unsub =>
|
|
185
|
-
unsub && unsub();
|
|
186
|
-
}).catch(this.logger.warn);
|
|
253
|
+
subscriptionPromise.then(unsub => unsub === null || unsub === void 0 ? void 0 : unsub()).catch(this.logger.warn);
|
|
187
254
|
};
|
|
188
255
|
}
|
|
189
256
|
subscribeNft(address, substrateApiMap, evmApiMap, smartContractNfts, chainInfoMap) {
|
|
@@ -222,7 +289,7 @@ export class KoniSubscription {
|
|
|
222
289
|
if (!addresses.length) {
|
|
223
290
|
return;
|
|
224
291
|
}
|
|
225
|
-
const pooledStakingItems = await this.state.
|
|
292
|
+
const pooledStakingItems = await this.state.getPooledPositionByAddress(addresses);
|
|
226
293
|
const pooledAddresses = [];
|
|
227
294
|
pooledStakingItems.forEach(pooledItem => {
|
|
228
295
|
if (!pooledAddresses.includes(pooledItem.address)) {
|
|
@@ -242,26 +309,29 @@ export class KoniSubscription {
|
|
|
242
309
|
activeNetworks.push(key);
|
|
243
310
|
});
|
|
244
311
|
const updateState = result => {
|
|
245
|
-
this.state.
|
|
312
|
+
this.state.earningService.updateEarningReward(result);
|
|
246
313
|
};
|
|
247
|
-
await Promise.all([
|
|
314
|
+
await Promise.all([this.state.earningService.getPoolReward(addresses, updateState) // TODO
|
|
315
|
+
]);
|
|
248
316
|
}
|
|
317
|
+
|
|
249
318
|
async reloadStaking() {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
this.
|
|
319
|
+
// const currentAddress = this.state.keyringService.currentAccount?.address;
|
|
320
|
+
|
|
321
|
+
// this.subscribeYieldPools(this.state.getSubstrateApiMap());
|
|
322
|
+
|
|
253
323
|
await waitTimeout(1800);
|
|
254
324
|
}
|
|
255
325
|
async reloadBalance() {
|
|
256
|
-
var _this$state$
|
|
257
|
-
const currentAddress = (_this$state$
|
|
326
|
+
var _this$state$keyringSe2;
|
|
327
|
+
const currentAddress = (_this$state$keyringSe2 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe2 === void 0 ? void 0 : _this$state$keyringSe2.address;
|
|
328
|
+
await this.state.handleResetBalance(currentAddress, true);
|
|
258
329
|
this.subscribeBalances(currentAddress, this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap(), this.state.getEvmApiMap());
|
|
259
330
|
await waitTimeout(1800);
|
|
260
331
|
}
|
|
261
332
|
async reloadCrowdloan() {
|
|
262
|
-
var _this$state$
|
|
263
|
-
const currentAddress = (_this$state$
|
|
264
|
-
await this.state.handleResetBalance(currentAddress, true);
|
|
333
|
+
var _this$state$keyringSe3;
|
|
334
|
+
const currentAddress = (_this$state$keyringSe3 = this.state.keyringService.currentAccount) === null || _this$state$keyringSe3 === void 0 ? void 0 : _this$state$keyringSe3.address;
|
|
265
335
|
this.subscribeCrowdloans(currentAddress, this.state.getSubstrateApiMap());
|
|
266
336
|
await waitTimeout(1800);
|
|
267
337
|
}
|