Skip to content

Commit 142f6a5

Browse files
committed
Merge remote-tracking branch 'origin/subwallet-dev' into koni/dev/issue-4300
# Conflicts: # packages/extension-base/src/koni/background/handlers/Extension.ts
2 parents b02706d + 7cabfda commit 142f6a5

File tree

105 files changed

+2413
-526
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

105 files changed

+2413
-526
lines changed

.123trigger

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,4 +197,6 @@
197197
1.3.29
198198
1.3.30
199199
1.3.31
200-
1.3.32
200+
1.3.32
201+
1.3.33
202+
1.3.34

CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# CHANGELOG
22

3+
## 1.3.34
4+
Build date: May 05, 2025.
5+
6+
Features & Update:
7+
- Support extension side panel (#4091)
8+
- Update padding for the time frame selector for price chart
9+
10+
11+
## 1.3.33
12+
Build date: Apr 30, 2025.
13+
14+
Features & Update:
15+
- Support price chart (#4122, #4266)
16+
- Update link for "Contact support" (#4324)
17+
18+
319
## 1.3.32
420
Build date: Apr 26, 2025.
521

CONTRIBUTORS

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
3017 AnhMTV Release version 1.3.32
1+
3022 AnhMTV Release version 1.3.34
22
2668 Nam Phạm disable block explorer for truth network
33
2549 S2kael [Isssue-4163] Update stable version for chain-list
44
869 lw-cdm [MasterAccount] Update logic to reorder account on select account modal
@@ -8,7 +8,7 @@
88
354 Thiendekaco [Issue-3707] [fix] Unified account - fix dApp ui bug #4
99
286 Frenkie Nguyen
1010
240 tunghp2002 [Issue-4290] Update: Change earning positions
11-
217 lw [Issue-4114] fix: Fix error in transaction submission screen
11+
237 lw [Issue-4332] refactor: Update padding for the time frame selector
1212
186 dominhquang [Issue-3507] Fix UI bug for Notification
1313
185 quangdo
1414
170 lw-cdm
@@ -22,12 +22,12 @@
2222
63 Roman fix ui issues
2323
53 Dominhquangdev update Bridge code
2424
28 S2kael [Issue-3658] Hide estimate fee field on Send Fund screen with cardano chain
25-
24 Thiendekaco [Issue-4100] fix: resolve PR feedback
25+
28 Thiendekaco [Issue-4100] fix: resolve PR feedback
26+
15 Thiendekaco [Issue-4122] feat: update price history product url
2627
10 Trang Trịnh api get karura and acala nfts
2728
10 tunghp2002
2829
9 Minh Le
2930
9 minhld1029 [#115] [ForgetAccount] catch exception refList undefined
30-
8 Thiendekaco [Issue-4100] fix: resolve ui bug
3131
7 Ivan Rukhavets Mention derivation in FAQ (#334)
3232
6 unknown refactor code
3333
5 anhnhu [issue-2231]: add condition branch_name webapp-dev auto increase run scripts change build number

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"url": "https://github.com/Koniverse/Subwallet-V2.git"
1111
},
1212
"sideEffects": false,
13-
"version": "1.3.32",
13+
"version": "1.3.34",
1414
"workspaces": [
1515
"packages/*"
1616
],

packages/extension-base/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"./detectPackage.cjs"
1818
],
1919
"type": "module",
20-
"version": "1.3.32-0",
20+
"version": "1.3.34-0",
2121
"main": "index.js",
2222
"dependencies": {
2323
"@acala-network/api": "^5.0.2",
@@ -55,12 +55,12 @@
5555
"@sora-substrate/type-definitions": "^1.17.7",
5656
"@substrate/connect": "^0.8.9",
5757
"@subwallet/chain-list": "0.2.104",
58-
"@subwallet/extension-base": "^1.3.32-0",
59-
"@subwallet/extension-chains": "^1.3.32-0",
60-
"@subwallet/extension-dapp": "^1.3.32-0",
61-
"@subwallet/extension-inject": "^1.3.32-0",
58+
"@subwallet/extension-base": "^1.3.34-0",
59+
"@subwallet/extension-chains": "^1.3.34-0",
60+
"@subwallet/extension-dapp": "^1.3.34-0",
61+
"@subwallet/extension-inject": "^1.3.34-0",
6262
"@subwallet/keyring": "^0.1.11",
63-
"@subwallet/subwallet-api-sdk": "^1.3.32-0",
63+
"@subwallet/subwallet-api-sdk": "^1.3.34-0",
6464
"@subwallet/ui-keyring": "^0.1.11",
6565
"@ton/core": "^0.56.3",
6666
"@ton/crypto": "^3.2.0",
@@ -105,7 +105,7 @@
105105
"web3-utils": "^1.10.0"
106106
},
107107
"devDependencies": {
108-
"@subwallet/extension-mocks": "^1.3.32-0",
108+
"@subwallet/extension-mocks": "^1.3.34-0",
109109
"@types/uuid": "^9.0.1"
110110
}
111111
}

packages/extension-base/src/background/KoniTypes.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,23 @@ export interface PriceJson {
191191
currencyData: CurrencyJson,
192192
exchangeRateMap: Record<string, ExchangeRateJSON>,
193193
priceMap: Record<string, number>,
194-
price24hMap: Record<string, number>
194+
price24hMap: Record<string, number>,
195+
lastUpdatedMap: Record<string, Date>
196+
}
197+
198+
export interface HistoryTokenPriceJSON {
199+
history: PriceChartPoint[];
200+
}
201+
202+
export interface ResponseSubscribeCurrentTokenPrice {
203+
id: string;
204+
price: CurrentTokenPrice;
205+
}
206+
207+
export interface CurrentTokenPrice {
208+
value: number;
209+
value24h: number;
210+
time: number;
195211
}
196212

197213
export interface ExchangeRateJSON {
@@ -415,6 +431,13 @@ export type CurrencyType = 'USD'
415431
| 'RUB'
416432
| 'VND'
417433

434+
export type PriceChartTimeframe = '1D' | '1W' | '1M' | '3M' | 'YTD' | '1Y' | 'ALL';
435+
436+
export interface PriceChartPoint {
437+
time: number;
438+
value: number;
439+
}
440+
418441
export type LanguageOptionType = {
419442
text: string;
420443
value: LanguageType;
@@ -464,6 +487,8 @@ export type RequestChangeLanguage = { language: LanguageType };
464487

465488
export type RequestChangePriceCurrency = { currency: CurrencyType }
466489

490+
export type RequestGetHistoryTokenPriceData = { priceId: string, timeframe: PriceChartTimeframe };
491+
467492
export type RequestChangeShowBalance = { enable: boolean };
468493

469494
export type DetectBalanceCache = Record<string, number>;
@@ -2151,6 +2176,8 @@ export interface KoniRequestSignatures {
21512176
// Price, balance, crowdloan functions
21522177
'pri(price.getPrice)': [RequestPrice, PriceJson];
21532178
'pri(price.getSubscription)': [RequestSubscribePrice, PriceJson, PriceJson];
2179+
'pri(price.getHistory)': [RequestGetHistoryTokenPriceData, HistoryTokenPriceJSON];
2180+
'pri(price.subscribeCurrentTokenPrice)': [string, ResponseSubscribeCurrentTokenPrice, CurrentTokenPrice];
21542181
'pri(balance.getBalance)': [RequestBalance, BalanceJson];
21552182
'pri(balance.getSubscription)': [RequestSubscribeBalance, BalanceJson, BalanceJson];
21562183
'pri(crowdloan.getCrowdloan)': [RequestCrowdloan, CrowdloanJson];

packages/extension-base/src/constants/environment.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
66

77
export const isProductionMode = PRODUCTION_BRANCHES.indexOf(branchName) > -1;
88
export const BACKEND_API_URL = process.env.SUBWALLET_API || (isProductionMode ? 'https://sw-services.subwallet.app/api' : 'https://be-dev.subwallet.app/api');
9+
export const BACKEND_PRICE_HISTORY_URL = process.env.SUBWALLET_PRICE_HISTORY_API || (isProductionMode ? 'https://price-history.subwallet.app/api' : 'https://price-history-dev.subwallet.app/api');

packages/extension-base/src/core/logic-validation/request.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,7 @@ export async function validationEvmDataTransactionMiddleware (koni: KoniState, u
455455
transaction.maxPriorityFeePerGas = feeCombine.maxPriorityFeePerGas;
456456
} else if (feeCombine.gasPrice) {
457457
estimateGas = new BigN((feeCombine.gasPrice || 0)).multipliedBy(gasLimit).toFixed(0);
458-
transaction.maxPriorityFeePerGas = feeCombine.gasPrice;
458+
transaction.gasPrice = feeCombine.gasPrice;
459459
}
460460
}
461461
} catch (e) {

packages/extension-base/src/koni/background/handlers/Extension.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { TransactionError } from '@subwallet/extension-base/background/errors/Tr
88
import { withErrorLog } from '@subwallet/extension-base/background/handlers/helpers';
99
import { createSubscription } from '@subwallet/extension-base/background/handlers/subscriptions';
1010
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';
1112
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';
1213
import { TransactionWarning } from '@subwallet/extension-base/background/warnings/TransactionWarning';
1314
import { _SUPPORT_TOKEN_PAY_FEE_GROUP, ALL_ACCOUNT_KEY, LATEST_SESSION } from '@subwallet/extension-base/constants';
@@ -35,7 +36,7 @@ import { getERC20TransactionObject, getERC721Transaction, getEVMTransactionObjec
3536
import { createSubstrateExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/token';
3637
import { createTonTransaction } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
3738
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';
3940
import { getClaimTxOnAvail, getClaimTxOnEthereum, isAvailChainBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge';
4041
import { _isPolygonChainBridge, getClaimPolygonBridge, isClaimedPolygonBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge';
4142
import { _isPosChainBridge, getClaimPosBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/posBridge';
@@ -1025,6 +1026,24 @@ export default class KoniExtension {
10251026
return this.#koniState.priceService.getPrice();
10261027
}
10271028

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+
10281047
private async setPriceCurrency ({ currency }: RequestChangePriceCurrency): Promise<boolean> {
10291048
return await this.#koniState.priceService.setPriceCurrency(currency);
10301049
}
@@ -1633,7 +1652,8 @@ export default class KoniExtension {
16331652
}
16341653

16351654
if (isAcrossBridgeTransfer) {
1636-
const metadata = await getAcrossQuote(params);
1655+
const data = await getAcrossQuote(params);
1656+
const metadata = data.metadata as AcrossQuote;
16371657

16381658
inputData.metadata = {
16391659
amountOut: metadata.outputAmount,
@@ -4802,6 +4822,10 @@ export default class KoniExtension {
48024822
return await this.getPrice();
48034823
case 'pri(price.getSubscription)':
48044824
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);
48054829
case 'pri(settings.savePriceCurrency)':
48064830
return await this.setPriceCurrency(request as RequestChangePriceCurrency);
48074831
case 'pri(balance.getBalance)':

0 commit comments

Comments
 (0)