@@ -8,6 +8,7 @@ import { TransactionError } from '@subwallet/extension-base/background/errors/Tr
8
8
import { withErrorLog } from '@subwallet/extension-base/background/handlers/helpers' ;
9
9
import { createSubscription } from '@subwallet/extension-base/background/handlers/subscriptions' ;
10
10
import { AccountExternalError , AddressBookInfo , AmountData , AmountDataWithId , AssetSetting , AssetSettingUpdateReq , BondingOptionParams , BrowserConfirmationType , CampaignBanner , CampaignData , CampaignDataType , ChainType , CronReloadRequest , CrowdloanJson , ExternalRequestPromiseStatus , ExtrinsicType , KeyringState , MantaPayEnableMessage , MantaPayEnableParams , MantaPayEnableResponse , MantaPaySyncState , NftCollection , NftJson , NftTransactionRequest , NftTransactionResponse , PriceJson , RequestAccountCreateExternalV2 , RequestAccountCreateHardwareMultiple , RequestAccountCreateHardwareV2 , RequestAccountCreateWithSecretKey , RequestAccountExportPrivateKey , RequestAddInjectedAccounts , RequestApproveConnectWalletSession , RequestApproveWalletConnectNotSupport , RequestAuthorization , RequestAuthorizationBlock , RequestAuthorizationPerAccount , RequestAuthorizationPerSite , RequestAuthorizeApproveV2 , RequestBondingSubmit , RequestCameraSettings , RequestCampaignBannerComplete , RequestChangeEnableChainPatrol , RequestChangeLanguage , RequestChangeMasterPassword , RequestChangePriceCurrency , RequestChangeShowBalance , RequestChangeShowZeroBalance , RequestChangeTimeAutoLock , RequestConfirmationComplete , RequestConfirmationCompleteCardano , RequestConfirmationCompleteTon , RequestConnectWalletConnect , RequestCrowdloanContributions , RequestDeleteContactAccount , RequestDisconnectWalletConnectSession , RequestEditContactAccount , RequestFindRawMetadata , RequestForgetSite , RequestFreeBalance , RequestGetTransaction , RequestKeyringExportMnemonic , RequestMigratePassword , RequestMigrateSoloAccount , RequestMigrateUnifiedAndFetchEligibleSoloAccounts , RequestParseEvmContractInput , RequestParseTransactionSubstrate , RequestPassPhishingPage , RequestPingSession , RequestQrParseRLP , RequestQrSignEvm , RequestQrSignSubstrate , RequestRejectConnectWalletSession , RequestRejectExternalRequest , RequestRejectWalletConnectNotSupport , RequestRemoveInjectedAccounts , RequestResetWallet , RequestResolveExternalRequest , RequestSaveAppConfig , RequestSaveBrowserConfig , RequestSaveMigrationAcknowledgedStatus , RequestSaveOSConfig , RequestSaveRecentAccount , RequestSaveUnifiedAccountMigrationInProgress , RequestSettingsType , RequestSigningApprovePasswordV2 , RequestStakePoolingBonding , RequestStakePoolingUnbonding , RequestSubscribeHistory , RequestSubstrateNftSubmitTransaction , RequestTuringCancelStakeCompound , RequestTuringStakeCompound , RequestUnbondingSubmit , RequestUnlockKeyring , RequestUnlockType , ResolveAddressToDomainRequest , ResolveDomainRequest , ResponseAccountCreateWithSecretKey , ResponseAccountExportPrivateKey , ResponseChangeMasterPassword , ResponseFindRawMetadata , ResponseKeyringExportMnemonic , ResponseMigratePassword , ResponseMigrateSoloAccount , ResponseMigrateUnifiedAndFetchEligibleSoloAccounts , ResponseNftImport , ResponseParseEvmContractInput , ResponseParseTransactionSubstrate , ResponseQrParseRLP , ResponseQrSignEvm , ResponseQrSignSubstrate , ResponseRejectExternalRequest , ResponseResetWallet , ResponseResolveExternalRequest , ResponseSubscribeHistory , ResponseUnlockKeyring , ShowCampaignPopupRequest , StakingJson , StakingRewardJson , StakingType , ThemeNames , TokenPriorityDetails , TransactionHistoryItem , TransactionResponse , UiSettings , ValidateNetworkRequest , ValidateNetworkResponse , ValidatorInfo } from '@subwallet/extension-base/background/KoniTypes' ;
11
+ import { AccountExternalError , AddressBookInfo , AmountData , AmountDataWithId , AssetSetting , AssetSettingUpdateReq , BondingOptionParams , BrowserConfirmationType , CampaignBanner , CampaignData , CampaignDataType , ChainType , CronReloadRequest , CrowdloanJson , ExternalRequestPromiseStatus , ExtrinsicType , HistoryTokenPriceJSON , KeyringState , MantaPayEnableMessage , MantaPayEnableParams , MantaPayEnableResponse , MantaPaySyncState , MetadataItem , NftCollection , NftJson , NftTransactionRequest , NftTransactionResponse , PriceJson , RequestAccountCreateExternalV2 , RequestAccountCreateHardwareMultiple , RequestAccountCreateHardwareV2 , RequestAccountCreateWithSecretKey , RequestAccountExportPrivateKey , RequestAddInjectedAccounts , RequestApproveConnectWalletSession , RequestApproveWalletConnectNotSupport , RequestAuthorization , RequestAuthorizationBlock , RequestAuthorizationPerAccount , RequestAuthorizationPerSite , RequestAuthorizeApproveV2 , RequestBondingSubmit , RequestCameraSettings , RequestCampaignBannerComplete , RequestChangeEnableChainPatrol , RequestChangeLanguage , RequestChangeMasterPassword , RequestChangePriceCurrency , RequestChangeShowBalance , RequestChangeShowZeroBalance , RequestChangeTimeAutoLock , RequestConfirmationComplete , RequestConfirmationCompleteCardano , RequestConfirmationCompleteTon , RequestConnectWalletConnect , RequestCrowdloanContributions , RequestDeleteContactAccount , RequestDisconnectWalletConnectSession , RequestEditContactAccount , RequestFindRawMetadata , RequestForgetSite , RequestFreeBalance , RequestGetHistoryTokenPriceData , RequestGetTransaction , RequestKeyringExportMnemonic , RequestMigratePassword , RequestMigrateSoloAccount , RequestMigrateUnifiedAndFetchEligibleSoloAccounts , RequestParseEvmContractInput , RequestParseTransactionSubstrate , RequestPassPhishingPage , RequestPingSession , RequestQrParseRLP , RequestQrSignEvm , RequestQrSignSubstrate , RequestRejectConnectWalletSession , RequestRejectExternalRequest , RequestRejectWalletConnectNotSupport , RequestRemoveInjectedAccounts , RequestResetWallet , RequestResolveExternalRequest , RequestSaveAppConfig , RequestSaveBrowserConfig , RequestSaveMigrationAcknowledgedStatus , RequestSaveOSConfig , RequestSaveRecentAccount , RequestSaveUnifiedAccountMigrationInProgress , RequestSettingsType , RequestSigningApprovePasswordV2 , RequestStakePoolingBonding , RequestStakePoolingUnbonding , RequestSubscribeHistory , RequestSubstrateNftSubmitTransaction , RequestTuringCancelStakeCompound , RequestTuringStakeCompound , RequestUnbondingSubmit , RequestUnlockKeyring , RequestUnlockType , ResolveAddressToDomainRequest , ResolveDomainRequest , ResponseAccountCreateWithSecretKey , ResponseAccountExportPrivateKey , ResponseChangeMasterPassword , ResponseFindRawMetadata , ResponseKeyringExportMnemonic , ResponseMigratePassword , ResponseMigrateSoloAccount , ResponseMigrateUnifiedAndFetchEligibleSoloAccounts , ResponseNftImport , ResponseParseEvmContractInput , ResponseParseTransactionSubstrate , ResponseQrParseRLP , ResponseQrSignEvm , ResponseQrSignSubstrate , ResponseRejectExternalRequest , ResponseResetWallet , ResponseResolveExternalRequest , ResponseSubscribeCurrentTokenPrice , ResponseSubscribeHistory , ResponseUnlockKeyring , ShowCampaignPopupRequest , StakingJson , StakingRewardJson , StakingType , ThemeNames , TokenPriorityDetails , TransactionHistoryItem , TransactionResponse , UiSettings , ValidateNetworkRequest , ValidateNetworkResponse , ValidatorInfo } from '@subwallet/extension-base/background/KoniTypes' ;
11
12
import { AccountAuthType , AuthorizeRequest , MessageTypes , MetadataRequest , RequestAccountExport , RequestAuthorizeCancel , RequestAuthorizeReject , RequestCurrentAccountAddress , RequestMetadataApprove , RequestMetadataReject , RequestSigningApproveSignature , RequestSigningCancel , RequestTypes , ResponseAccountExport , ResponseAuthorizeList , ResponseType , SigningRequest , WindowOpenParams } from '@subwallet/extension-base/background/types' ;
12
13
import { TransactionWarning } from '@subwallet/extension-base/background/warnings/TransactionWarning' ;
13
14
import { _SUPPORT_TOKEN_PAY_FEE_GROUP , ALL_ACCOUNT_KEY , LATEST_SESSION } from '@subwallet/extension-base/constants' ;
@@ -35,7 +36,7 @@ import { getERC20TransactionObject, getERC721Transaction, getEVMTransactionObjec
35
36
import { createSubstrateExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/token' ;
36
37
import { createTonTransaction } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer' ;
37
38
import { createAcrossBridgeExtrinsic , createAvailBridgeExtrinsicFromAvail , createAvailBridgeTxFromEth , createPolygonBridgeExtrinsic , createSnowBridgeExtrinsic , CreateXcmExtrinsicProps , createXcmExtrinsicV2 , dryRunXcmExtrinsicV2 , FunctionCreateXcmExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/xcm' ;
38
- import { _isAcrossChainBridge , getAcrossQuote } from '@subwallet/extension-base/services/balance-service/transfer/xcm/acrossBridge' ;
39
+ import { _isAcrossChainBridge , AcrossQuote , getAcrossQuote } from '@subwallet/extension-base/services/balance-service/transfer/xcm/acrossBridge' ;
39
40
import { getClaimTxOnAvail , getClaimTxOnEthereum , isAvailChainBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge' ;
40
41
import { _isPolygonChainBridge , getClaimPolygonBridge , isClaimedPolygonBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge' ;
41
42
import { _isPosChainBridge , getClaimPosBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/posBridge' ;
@@ -1025,6 +1026,24 @@ export default class KoniExtension {
1025
1026
return this . #koniState. priceService . getPrice ( ) ;
1026
1027
}
1027
1028
1029
+ private async getHistoryTokenPrice ( { priceId, timeframe } : RequestGetHistoryTokenPriceData ) : Promise < HistoryTokenPriceJSON > {
1030
+ return this . #koniState. priceService . getHistoryTokenPriceData ( priceId , timeframe ) ;
1031
+ }
1032
+
1033
+ private subscribeCurrentTokenPrice ( priceId : string , id : string , port : chrome . runtime . Port ) : ResponseSubscribeCurrentTokenPrice {
1034
+ const cb = createSubscription < 'pri(price.subscribeCurrentTokenPrice)' > ( id , port ) ;
1035
+
1036
+ const { currentPrice, unsubscribe } = this . #koniState. priceService . subscribeCurrentTokenPrice ( priceId , cb ) ;
1037
+
1038
+ this . createUnsubscriptionHandle ( id , unsubscribe ) ;
1039
+
1040
+ port . onDisconnect . addListener ( ( ) : void => {
1041
+ this . cancelSubscription ( id ) ;
1042
+ } ) ;
1043
+
1044
+ return { id, price : currentPrice } ;
1045
+ }
1046
+
1028
1047
private async setPriceCurrency ( { currency } : RequestChangePriceCurrency ) : Promise < boolean > {
1029
1048
return await this . #koniState. priceService . setPriceCurrency ( currency ) ;
1030
1049
}
@@ -1633,7 +1652,8 @@ export default class KoniExtension {
1633
1652
}
1634
1653
1635
1654
if ( isAcrossBridgeTransfer ) {
1636
- const metadata = await getAcrossQuote ( params ) ;
1655
+ const data = await getAcrossQuote ( params ) ;
1656
+ const metadata = data . metadata as AcrossQuote ;
1637
1657
1638
1658
inputData . metadata = {
1639
1659
amountOut : metadata . outputAmount ,
@@ -4802,6 +4822,10 @@ export default class KoniExtension {
4802
4822
return await this . getPrice ( ) ;
4803
4823
case 'pri(price.getSubscription)' :
4804
4824
return await this . subscribePrice ( id , port ) ;
4825
+ case 'pri(price.getHistory)' :
4826
+ return await this . getHistoryTokenPrice ( request as RequestGetHistoryTokenPriceData ) ;
4827
+ case 'pri(price.subscribeCurrentTokenPrice)' :
4828
+ return this . subscribeCurrentTokenPrice ( request as string , id , port ) ;
4805
4829
case 'pri(settings.savePriceCurrency)' :
4806
4830
return await this . setPriceCurrency ( request as RequestChangePriceCurrency ) ;
4807
4831
case 'pri(balance.getBalance)' :
0 commit comments