Skip to content

Commit 5f7f472

Browse files
committed
Merge remote-tracking branch 'refs/remotes/origin/subwallet-dev' into webapp-dev
# Conflicts: # packages/extension-koni/public/locales/en/translation.json # packages/extension-koni/public/locales/ja/translation.json # packages/extension-koni/public/locales/ru/translation.json # packages/extension-koni/public/locales/vi/translation.json # packages/extension-koni/public/locales/zh/translation.json # packages/web-runner/public/locales/en/translation.json # packages/web-runner/public/locales/ja/translation.json # packages/web-runner/public/locales/ru/translation.json # packages/web-runner/public/locales/vi/translation.json # packages/web-runner/public/locales/zh/translation.json # packages/webapp/public/locales/en/translation.json # packages/webapp/public/locales/ja/translation.json # packages/webapp/public/locales/ru/translation.json # packages/webapp/public/locales/vi/translation.json # packages/webapp/public/locales/zh/translation.json
2 parents e5d8d35 + cc7dbf4 commit 5f7f472

File tree

61 files changed

+1051
-816
lines changed

Some content is hidden

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

61 files changed

+1051
-816
lines changed

.123trigger

+2-1
Original file line numberDiff line numberDiff line change
@@ -136,4 +136,5 @@
136136
1.1.66
137137
1.1.67
138138
1.1.68
139-
1.2.2
139+
1.2.2
140+
1.2.3

CHANGELOG.md

+14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# CHANGELOG
22

3+
## 1.2.3
4+
Build date: Jun 03, 2024.
5+
6+
Features & Update:
7+
- Update chain-list (#3094)
8+
- Remove bit.country testnet, Ethereum Goerli
9+
- Add support for Ink Whale token INW2
10+
- Add support for Kreivo Network
11+
- Add support Bitlayer
12+
- Add support Bsquared network
13+
- Add support BounceBit
14+
- Improve swap quote fetching speed (#3104)
15+
- Update transferable balance calculation formula (2118)
16+
317
## 1.2.2
418
Build date: May 30, 2024.
519

CONTRIBUTORS

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
2643 AnhMTV Release version 1.2.2
2-
2355 Nam Phạm [Issue 3129] fix: force apply patch
3-
2060 S2kael [Issue-3121] Fix HTTP provider error when subscribe tx status
1+
2657 AnhMTV Release version 1.2.3
2+
2390 Nam Phạm [Issue 3094] fix bug validating transactions not using system pallet
3+
2063 S2kael [Issue-3094] Update stable version for chain-list
44
815 lw-cdm Fix eslint issues
55
465 Jaco 0.42.5 (#969)
6-
425 nguyentiendung
6+
432 nguyentiendung
77
185 quangdo
8-
150 bluezdot [Issue-3088] Update logo earning option
8+
155 bluezdot fix eslint
99
129 Thiendekaco [Issue 3117] [fix] [mv3] Extension - Still show icon ZK mode on Export account screen in case upgrade version MV2 -> MV3
10-
108 Automation Bot [CI Skip] Auto increase webapp build number
10+
115 Automation Bot [CI Skip] Auto increase webapp build number
1111
106 dominhquang [Issue-2649] Add send crash log feature
1212
104 khainh predefine metadata for Polkadot & Kusama chains
1313
101 lw-cdm

package.json

+2-2
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.2.2",
13+
"version": "1.2.3",
1414
"workspaces": [
1515
"packages/*"
1616
],
@@ -93,7 +93,7 @@
9393
"@polkadot/types-codec": "^11.0.3",
9494
"@polkadot/util": "^12.6.2",
9595
"@polkadot/util-crypto": "^12.6.2",
96-
"@subwallet/chain-list": "0.2.65",
96+
"@subwallet/chain-list": "0.2.66",
9797
"@subwallet/keyring": "^0.1.5",
9898
"@subwallet/react-ui": "5.1.2-b77",
9999
"@subwallet/ui-keyring": "^0.1.5",

packages/extension-base/package.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"./detectPackage.cjs"
1818
],
1919
"type": "module",
20-
"version": "1.2.2-0",
20+
"version": "1.2.3-1",
2121
"main": "index.js",
2222
"dependencies": {
2323
"@acala-network/api": "^5.0.2",
@@ -52,11 +52,11 @@
5252
"@reduxjs/toolkit": "^1.9.1",
5353
"@sora-substrate/type-definitions": "^1.17.7",
5454
"@substrate/connect": "^0.8.9",
55-
"@subwallet/chain-list": "0.2.65",
56-
"@subwallet/extension-base": "^1.2.2-0",
57-
"@subwallet/extension-chains": "^1.2.2-0",
58-
"@subwallet/extension-dapp": "^1.2.2-0",
59-
"@subwallet/extension-inject": "^1.2.2-0",
55+
"@subwallet/chain-list": "0.2.66",
56+
"@subwallet/extension-base": "^1.2.3-1",
57+
"@subwallet/extension-chains": "^1.2.3-1",
58+
"@subwallet/extension-dapp": "^1.2.3-1",
59+
"@subwallet/extension-inject": "^1.2.3-1",
6060
"@subwallet/keyring": "^0.1.5",
6161
"@subwallet/ui-keyring": "^0.1.5",
6262
"@walletconnect/keyvaluestorage": "^1.1.1",
@@ -96,7 +96,7 @@
9696
"web3-utils": "^1.10.0"
9797
},
9898
"devDependencies": {
99-
"@subwallet/extension-mocks": "^1.2.2-0",
99+
"@subwallet/extension-mocks": "^1.2.3-1",
100100
"@types/uuid": "^9.0.1"
101101
}
102102
}

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

+7-1
Original file line numberDiff line numberDiff line change
@@ -640,6 +640,7 @@ export interface BasicTokenInfo {
640640

641641
export interface AmountData extends BasicTokenInfo {
642642
value: string;
643+
metadata?: unknown;
643644
}
644645

645646
export interface FeeData extends AmountData {
@@ -1222,7 +1223,8 @@ export interface SupportTransferResponse {
12221223
export interface RequestFreeBalance {
12231224
address: string,
12241225
networkKey: string,
1225-
token?: string
1226+
token?: string,
1227+
extrinsicType?: ExtrinsicType
12261228
}
12271229

12281230
export interface RequestMaxTransferable {
@@ -2225,6 +2227,10 @@ export interface ResponseSubscribeHistory {
22252227

22262228
/* Campaign */
22272229

2230+
/* Core types */
2231+
export type _Address = string;
2232+
export type _BalanceMetadata = unknown;
2233+
22282234
// Use stringify to communicate, pure boolean value will error with case 'false' value
22292235
export interface KoniRequestSignatures {
22302236
// Bonding functions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Copyright 2019-2022 @subwallet/extension-base
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
5+
import BigN from 'bignumber.js';
6+
7+
export function _handleDisplayForEarningError (error: TransactionError) {
8+
if (
9+
error.message.startsWith('UnknownError Connection to Indexed DataBase server lost') ||
10+
error.message.startsWith('Provided address is invalid, the capitalization checksum test failed') ||
11+
error.message.startsWith('connection not open on send()')) {
12+
return {
13+
title: 'Connection error',
14+
message: 'Your selected network has lost connection. Update it by re-enabling it or changing network provider'
15+
};
16+
}
17+
18+
return undefined;
19+
}
20+
21+
export const INSUFFICIENT_MESSAGES = ['残高不足', 'Недостаточный баланс', 'Insufficient balance'];
22+
23+
export function _handleDisplayInsufficientEarningError (error: Error, availableBalance: string, amount: string, minJoinPool: string) {
24+
if (!INSUFFICIENT_MESSAGES.some((v) => error.message.includes(v))) {
25+
return undefined;
26+
}
27+
28+
const bnAvailableBalance = new BigN(availableBalance);
29+
const bnAmount = new BigN(amount);
30+
31+
if (bnAvailableBalance.gt(0) && bnAmount.gte(bnAvailableBalance)) {
32+
return {
33+
title: 'Insufficient balance',
34+
message: 'Insufficient balance. Amount must be smaller than available balance'
35+
};
36+
}
37+
38+
if (bnAvailableBalance.lte(minJoinPool)) {
39+
return {
40+
title: 'Insufficient balance',
41+
message: 'You don\'t have enough {{symbol}} ({{chain}}) to stake, make sure your available balance is higher than {{minJoinPool}} {{symbol}}'
42+
};
43+
}
44+
45+
return {
46+
title: 'Insufficient balance',
47+
message: 'You don\'t have enough {{symbol}} ({{chain}}) to pay gas fee. Lower your amount and try again'
48+
};
49+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// Copyright 2019-2022 @subwallet/extension-base
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
5+
import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
6+
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
7+
import { BasicTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
8+
import { _getAssetDecimals, _isChainEvmCompatible } from '@subwallet/extension-base/services/chain-service/utils';
9+
import { ChainflipPreValidationMetadata, HydradxPreValidationMetadata, SwapErrorType } from '@subwallet/extension-base/types/swap';
10+
import { formatNumber } from '@subwallet/extension-base/utils';
11+
import BigN from 'bignumber.js';
12+
13+
import { isEthereumAddress } from '@polkadot/util-crypto';
14+
15+
export function _validateBalanceToSwap (fromToken: _ChainAsset, feeToken: _ChainAsset, feeTokenChainInfo: _ChainInfo, feeAmount: string, fromTokenBalance: string, feeTokenBalance: string, swapAmount: string, isXcmOk: boolean, minSwap?: string): TransactionError | undefined {
16+
if (new BigN(feeTokenBalance).lte(feeAmount)) {
17+
return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
18+
}
19+
20+
if (fromToken.slug === feeToken.slug) {
21+
if (new BigN(fromTokenBalance).lte(new BigN(feeAmount).plus(swapAmount))) {
22+
return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
23+
}
24+
}
25+
26+
if (isXcmOk) { // assume that the swap is valid if XCM is in the process and it was successful
27+
return undefined;
28+
}
29+
30+
if (minSwap) {
31+
if (new BigN(fromTokenBalance).lte(minSwap)) {
32+
const parsedMinSwapValue = formatNumber(minSwap, _getAssetDecimals(fromToken));
33+
34+
return new TransactionError(SwapErrorType.SWAP_NOT_ENOUGH_BALANCE, `Insufficient balance. You need more than ${parsedMinSwapValue} ${fromToken.symbol} to start swapping. Deposit ${fromToken.symbol} and try again.`); // todo: min swap or amount?
35+
}
36+
}
37+
38+
if (new BigN(swapAmount).gte(fromTokenBalance)) {
39+
const parsedMaxBalanceSwap = formatNumber(fromTokenBalance, _getAssetDecimals(fromToken));
40+
41+
return new TransactionError(SwapErrorType.SWAP_EXCEED_ALLOWANCE,
42+
`Amount too high. Lower your amount ${new BigN(fromTokenBalance).gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
43+
}
44+
45+
return undefined;
46+
}
47+
48+
export function _validateSwapRecipient (destChainInfo: _ChainInfo, recipient: string): TransactionError | undefined {
49+
const isEvmAddress = isEthereumAddress(recipient);
50+
const isEvmDestChain = _isChainEvmCompatible(destChainInfo);
51+
52+
if ((isEvmAddress && !isEvmDestChain) || (!isEvmAddress && isEvmDestChain)) {
53+
return new TransactionError(SwapErrorType.INVALID_RECIPIENT);
54+
}
55+
56+
return undefined;
57+
}
58+
59+
export function _getChainflipEarlyValidationError (error: SwapErrorType, metadata: ChainflipPreValidationMetadata): SwapError { // todo: support more providers
60+
switch (error) {
61+
case SwapErrorType.NOT_MEET_MIN_SWAP: {
62+
const parsedMinSwapValue = formatNumber(metadata.minSwap.value, metadata.minSwap.decimals);
63+
const message = `Amount too low. Increase your amount above ${parsedMinSwapValue} ${metadata.minSwap.symbol} and try again`;
64+
65+
return new SwapError(error, message);
66+
}
67+
68+
case SwapErrorType.SWAP_EXCEED_ALLOWANCE: {
69+
if (metadata.maxSwap) {
70+
const parsedMaxSwapValue = formatNumber(metadata.maxSwap.value, metadata.maxSwap.decimals);
71+
72+
return new SwapError(error, `Amount too high. Lower your amount below ${parsedMaxSwapValue} ${metadata.maxSwap.symbol} and try again`);
73+
} else {
74+
return new SwapError(error, 'Amount too high. Lower your amount and try again');
75+
}
76+
}
77+
78+
case SwapErrorType.ASSET_NOT_SUPPORTED:
79+
return new SwapError(error, 'This swap pair is not supported');
80+
case SwapErrorType.UNKNOWN:
81+
return new SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
82+
case SwapErrorType.ERROR_FETCHING_QUOTE:
83+
return new SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
84+
default:
85+
return new SwapError(error);
86+
}
87+
}
88+
89+
export function _getEarlyHydradxValidationError (error: SwapErrorType, metadata: HydradxPreValidationMetadata): SwapError {
90+
switch (error) {
91+
case SwapErrorType.AMOUNT_CANNOT_BE_ZERO: {
92+
return new SwapError(error, 'Amount too low. Increase your amount above 0 and try again');
93+
}
94+
95+
case SwapErrorType.ASSET_NOT_SUPPORTED:
96+
return new SwapError(error, 'This swap pair is not supported');
97+
case SwapErrorType.UNKNOWN:
98+
return new SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
99+
case SwapErrorType.ERROR_FETCHING_QUOTE:
100+
return new SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
101+
default:
102+
return new SwapError(error);
103+
}
104+
}

0 commit comments

Comments
 (0)