@subwallet/extension-base 1.1.11-2 → 1.1.12-1

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.
@@ -43,18 +43,24 @@ const handleTransferBalanceResult = _ref => {
43
43
  callback(response);
44
44
  };
45
45
  exports.handleTransferBalanceResult = handleTransferBalanceResult;
46
- async function getEVMTransactionObject(chainInfo, to, value, transferAll, evmApiMap) {
46
+ async function getEVMTransactionObject(chainInfo, from, to, value, transferAll, evmApiMap) {
47
47
  const networkKey = chainInfo.slug;
48
48
  const web3Api = evmApiMap[networkKey];
49
49
  const gasPrice = await web3Api.api.eth.getGasPrice();
50
50
  const transactionObject = {
51
51
  gasPrice: gasPrice,
52
- to: to
52
+ to: to,
53
+ value: value,
54
+ from: from
53
55
  };
54
56
  const gasLimit = await web3Api.api.eth.estimateGas(transactionObject);
55
57
  transactionObject.gas = gasLimit;
56
- const estimateFee = parseInt(gasPrice) * gasLimit;
57
- transactionObject.value = transferAll ? new _util.BN(value).add(new _util.BN(estimateFee).neg()) : value;
58
+ const estimateFee = new _util.BN(gasLimit).mul(new _util.BN(gasPrice));
59
+ transactionObject.value = transferAll ? new _util.BN(value).sub(estimateFee).toString() : value;
60
+ if (_constants.EVM_REFORMAT_DECIMALS.acala.includes(networkKey)) {
61
+ const numberReplace = 18 - 12;
62
+ transactionObject.value = transactionObject.value.substring(0, transactionObject.value.length - 6) + new Array(numberReplace).fill('0').join('');
63
+ }
58
64
  return [transactionObject, transactionObject.value.toString()];
59
65
  }
60
66
  async function getERC20TransactionObject(assetAddress, chainInfo, from, to, value, transferAll, evmApiMap) {
@@ -1563,7 +1563,7 @@ class KoniExtension {
1563
1563
  if ((0, _utils._isTokenEvmSmartContract)(tokenInfo) || (0, _utils._isLocalToken)(tokenInfo)) {
1564
1564
  [transaction, transferAmount.value] = await (0, _transfer3.getERC20TransactionObject)((0, _utils._getContractAddressOfToken)(tokenInfo), chainInfo, from, to, txVal, !!transferAll, evmApiMap);
1565
1565
  } else {
1566
- [transaction, transferAmount.value] = await (0, _transfer3.getEVMTransactionObject)(chainInfo, to, txVal, !!transferAll, evmApiMap);
1566
+ [transaction, transferAmount.value] = await (0, _transfer3.getEVMTransactionObject)(chainInfo, from, to, txVal, !!transferAll, evmApiMap);
1567
1567
  }
1568
1568
  } else if ((0, _utils._isMantaZkAsset)(tokenInfo)) {
1569
1569
  // TODO
@@ -13,6 +13,6 @@ const packageInfo = {
13
13
  name: '@subwallet/extension-base',
14
14
  path: typeof __dirname === 'string' ? __dirname : 'auto',
15
15
  type: 'cjs',
16
- version: '1.1.11-2'
16
+ version: '1.1.12-1'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports._ZK_ASSET_PREFIX = exports._XCM_TYPE = exports._XCM_CHAIN_GROUP = exports._TRANSFER_NOT_SUPPORTED_CHAINS = exports._TRANSFER_CHAIN_GROUP = exports._SUBSTRATE_DEFAULT_INFLATION_PARAMS = exports._STAKING_ERA_LENGTH_MAP = exports._STAKING_CHAIN_GROUP = exports._PURE_EVM_CHAINS = exports._PREDEFINED_SINGLE_MODES = exports._PARACHAIN_INFLATION_DISTRIBUTION = exports._NFT_CHAIN_GROUP = exports._MULTI_CHAIN_ASSET_SRC = exports._MANTA_ZK_CHAIN_GROUP = exports._KNOWN_CHAIN_INFLATION_PARAMS = exports._DEFAULT_MANTA_ZK_CHAIN = exports._DEFAULT_ACTIVE_CHAINS = exports._CHAIN_LOGO_MAP_SRC = exports._CHAIN_INFO_SRC = exports._CHAIN_ASSET_SRC = exports._BALANCE_TOKEN_GROUP = exports._BALANCE_PARSING_CHAIN_GROUP = exports._BALANCE_CHAIN_GROUP = exports._ASSET_REF_SRC = exports._ASSET_LOGO_MAP_SRC = exports._API_OPTIONS_CHAIN_GROUP = exports.API_MAX_RETRY = exports.API_CONNECT_TIMEOUT = exports.API_AUTO_CONNECT_MS = void 0;
6
+ exports._ZK_ASSET_PREFIX = exports._XCM_TYPE = exports._XCM_CHAIN_GROUP = exports._TRANSFER_NOT_SUPPORTED_CHAINS = exports._TRANSFER_CHAIN_GROUP = exports._SUBSTRATE_DEFAULT_INFLATION_PARAMS = exports._STAKING_ERA_LENGTH_MAP = exports._STAKING_CHAIN_GROUP = exports._PURE_EVM_CHAINS = exports._PREDEFINED_SINGLE_MODES = exports._PARACHAIN_INFLATION_DISTRIBUTION = exports._NFT_CHAIN_GROUP = exports._MULTI_CHAIN_ASSET_SRC = exports._MANTA_ZK_CHAIN_GROUP = exports._KNOWN_CHAIN_INFLATION_PARAMS = exports._DEFAULT_MANTA_ZK_CHAIN = exports._DEFAULT_ACTIVE_CHAINS = exports._CHAIN_LOGO_MAP_SRC = exports._CHAIN_INFO_SRC = exports._CHAIN_ASSET_SRC = exports._BALANCE_TOKEN_GROUP = exports._BALANCE_PARSING_CHAIN_GROUP = exports._BALANCE_CHAIN_GROUP = exports._ASSET_REF_SRC = exports._ASSET_LOGO_MAP_SRC = exports._API_OPTIONS_CHAIN_GROUP = exports.EVM_REFORMAT_DECIMALS = exports.EVM_PASS_CONNECT_STATUS = exports.API_MAX_RETRY = exports.API_CONNECT_TIMEOUT = exports.API_AUTO_CONNECT_MS = void 0;
7
7
  var _chainList = require("@subwallet/chain-list");
8
8
  var _types = require("@subwallet/chain-list/types");
9
9
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
@@ -237,9 +237,17 @@ const _XCM_TYPE = {
237
237
  };
238
238
  exports._XCM_TYPE = _XCM_TYPE;
239
239
  const _DEFAULT_ACTIVE_CHAINS = [..._chainList._DEFAULT_CHAINS];
240
+ exports._DEFAULT_ACTIVE_CHAINS = _DEFAULT_ACTIVE_CHAINS;
241
+ const EVM_PASS_CONNECT_STATUS = {
242
+ acala: ['acala_evm', 'karura_evm']
243
+ };
244
+ exports.EVM_PASS_CONNECT_STATUS = EVM_PASS_CONNECT_STATUS;
245
+ const EVM_REFORMAT_DECIMALS = {
246
+ acala: ['acala_evm', 'karura_evm']
247
+ };
240
248
 
241
249
  // TODO: review
242
- exports._DEFAULT_ACTIVE_CHAINS = _DEFAULT_ACTIVE_CHAINS;
250
+ exports.EVM_REFORMAT_DECIMALS = EVM_REFORMAT_DECIMALS;
243
251
  const TARGET_BRANCH = process.env.NODE_ENV !== 'production' ? 'koni-dev' : 'master';
244
252
  const _CHAIN_INFO_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-Chain/${TARGET_BRANCH}/packages/chain-list/src/data/ChainInfo.json`;
245
253
  exports._CHAIN_INFO_SRC = _CHAIN_INFO_SRC;
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.EvmApi = void 0;
8
8
  require("@polkadot/types-augment");
9
+ var _constants = require("@subwallet/extension-base/services/chain-service/constants");
9
10
  var _types = require("@subwallet/extension-base/services/chain-service/types");
10
11
  var _promise = require("@subwallet/extension-base/utils/promise");
11
12
  var _rxjs = require("rxjs");
@@ -13,6 +14,7 @@ var _web = _interopRequireDefault(require("web3"));
13
14
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
14
15
  // SPDX-License-Identifier: Apache-2.0
15
16
 
17
+ const acalaEvmNetworks = _constants.EVM_PASS_CONNECT_STATUS.acala;
16
18
  class EvmApi {
17
19
  apiRetry = 0;
18
20
  isApiConnectedSubject = new _rxjs.BehaviorSubject(false);
@@ -75,11 +77,15 @@ class EvmApi {
75
77
  createIntervalCheckApi() {
76
78
  this.clearIntervalCheckApi();
77
79
  return setInterval(() => {
78
- this.api.eth.net.isListening().then(() => {
80
+ if (!acalaEvmNetworks.includes(this.chainSlug)) {
81
+ this.api.eth.net.isListening().then(() => {
82
+ this.onConnect();
83
+ }).catch(() => {
84
+ this.onDisconnect();
85
+ });
86
+ } else {
79
87
  this.onConnect();
80
- }).catch(() => {
81
- this.onDisconnect();
82
- });
88
+ }
83
89
  }, 10000);
84
90
  }
85
91
  clearIntervalCheckApi() {
@@ -90,17 +96,23 @@ class EvmApi {
90
96
  const wsProvider = this.provider;
91
97
  wsProvider.connect && wsProvider.connect();
92
98
  this.updateConnectionStatus(_types._ChainConnectionStatus.CONNECTING);
99
+
93
100
  // Check if api is ready
94
- this.api.eth.net.isListening().then(() => {
101
+ if (!acalaEvmNetworks.includes(this.chainSlug)) {
102
+ this.api.eth.net.isListening().then(() => {
103
+ this.isApiReadyOnce = true;
104
+ this.onConnect();
105
+ }).catch(error => {
106
+ this.isApiReadyOnce = false;
107
+ this.isApiReady = false;
108
+ this.isReadyHandler.reject(error);
109
+ this.updateConnectionStatus(_types._ChainConnectionStatus.DISCONNECTED);
110
+ console.warn(`Can not connect to ${this.chainSlug} (EVM) at ${this.apiUrl}`);
111
+ });
112
+ } else {
95
113
  this.isApiReadyOnce = true;
96
114
  this.onConnect();
97
- }).catch(error => {
98
- this.isApiReadyOnce = false;
99
- this.isApiReady = false;
100
- this.isReadyHandler.reject(error);
101
- this.updateConnectionStatus(_types._ChainConnectionStatus.DISCONNECTED);
102
- console.warn(`Can not connect to ${this.chainSlug} (EVM) at ${this.apiUrl}`);
103
- });
115
+ }
104
116
 
105
117
  // Interval to check connecting status
106
118
  this.intervalCheckApi = this.createIntervalCheckApi();
@@ -18,7 +18,7 @@ class SettingService {
18
18
  passPhishingStore = new _PassPhishingStore.default();
19
19
  constructor() {
20
20
  let old = localStorage.getItem(_constants.LANGUAGE) || 'en';
21
- this.settingsStore.getSubject().subscribe(_ref => {
21
+ const updateLanguage = _ref => {
22
22
  let {
23
23
  language
24
24
  } = _ref;
@@ -26,6 +26,10 @@ class SettingService {
26
26
  old = language;
27
27
  _i18n.default.changeLanguage(language).catch(console.error);
28
28
  }
29
+ };
30
+ this.getSettings(updateLanguage);
31
+ this.settingsStore.getSubject().subscribe({
32
+ next: updateLanguage
29
33
  });
30
34
  }
31
35
  getSubject() {
@@ -11,7 +11,7 @@ interface HandleTransferBalanceResultProps {
11
11
  updateState?: (promise: Partial<ExternalRequestPromise>) => void;
12
12
  }
13
13
  export declare const handleTransferBalanceResult: ({ callback, changeValue, networkKey, receipt, response, updateState }: HandleTransferBalanceResultProps) => void;
14
- export declare function getEVMTransactionObject(chainInfo: _ChainInfo, to: string, value: string, transferAll: boolean, evmApiMap: Record<string, _EvmApi>): Promise<[TransactionConfig, string]>;
14
+ export declare function getEVMTransactionObject(chainInfo: _ChainInfo, from: string, to: string, value: string, transferAll: boolean, evmApiMap: Record<string, _EvmApi>): Promise<[TransactionConfig, string]>;
15
15
  export declare function getERC20TransactionObject(assetAddress: string, chainInfo: _ChainInfo, from: string, to: string, value: string, transferAll: boolean, evmApiMap: Record<string, _EvmApi>): Promise<[TransactionConfig, string]>;
16
16
  export declare function getERC721Transaction(web3Api: _EvmApi, contractAddress: string, senderAddress: string, recipientAddress: string, tokenId: string): Promise<TransactionConfig>;
17
17
  export {};
@@ -3,7 +3,7 @@
3
3
 
4
4
  import { ExternalRequestPromiseStatus } from '@subwallet/extension-base/background/KoniTypes';
5
5
  import { getERC20Contract } from '@subwallet/extension-base/koni/api/tokens/evm/web3';
6
- import { _BALANCE_PARSING_CHAIN_GROUP } from '@subwallet/extension-base/services/chain-service/constants';
6
+ import { _BALANCE_PARSING_CHAIN_GROUP, EVM_REFORMAT_DECIMALS } from '@subwallet/extension-base/services/chain-service/constants';
7
7
  import { _ERC721_ABI } from '@subwallet/extension-base/services/chain-service/helper';
8
8
  import { BN, hexToBn } from '@polkadot/util';
9
9
  export const handleTransferBalanceResult = ({
@@ -32,18 +32,24 @@ export const handleTransferBalanceResult = ({
32
32
  });
33
33
  callback(response);
34
34
  };
35
- export async function getEVMTransactionObject(chainInfo, to, value, transferAll, evmApiMap) {
35
+ export async function getEVMTransactionObject(chainInfo, from, to, value, transferAll, evmApiMap) {
36
36
  const networkKey = chainInfo.slug;
37
37
  const web3Api = evmApiMap[networkKey];
38
38
  const gasPrice = await web3Api.api.eth.getGasPrice();
39
39
  const transactionObject = {
40
40
  gasPrice: gasPrice,
41
- to: to
41
+ to: to,
42
+ value: value,
43
+ from: from
42
44
  };
43
45
  const gasLimit = await web3Api.api.eth.estimateGas(transactionObject);
44
46
  transactionObject.gas = gasLimit;
45
- const estimateFee = parseInt(gasPrice) * gasLimit;
46
- transactionObject.value = transferAll ? new BN(value).add(new BN(estimateFee).neg()) : value;
47
+ const estimateFee = new BN(gasLimit).mul(new BN(gasPrice));
48
+ transactionObject.value = transferAll ? new BN(value).sub(estimateFee).toString() : value;
49
+ if (EVM_REFORMAT_DECIMALS.acala.includes(networkKey)) {
50
+ const numberReplace = 18 - 12;
51
+ transactionObject.value = transactionObject.value.substring(0, transactionObject.value.length - 6) + new Array(numberReplace).fill('0').join('');
52
+ }
47
53
  return [transactionObject, transactionObject.value.toString()];
48
54
  }
49
55
  export async function getERC20TransactionObject(assetAddress, chainInfo, from, to, value, transferAll, evmApiMap) {
@@ -1510,7 +1510,7 @@ export default class KoniExtension {
1510
1510
  if (_isTokenEvmSmartContract(tokenInfo) || _isLocalToken(tokenInfo)) {
1511
1511
  [transaction, transferAmount.value] = await getERC20TransactionObject(_getContractAddressOfToken(tokenInfo), chainInfo, from, to, txVal, !!transferAll, evmApiMap);
1512
1512
  } else {
1513
- [transaction, transferAmount.value] = await getEVMTransactionObject(chainInfo, to, txVal, !!transferAll, evmApiMap);
1513
+ [transaction, transferAmount.value] = await getEVMTransactionObject(chainInfo, from, to, txVal, !!transferAll, evmApiMap);
1514
1514
  }
1515
1515
  } else if (_isMantaZkAsset(tokenInfo)) {
1516
1516
  // TODO
package/package.json CHANGED
@@ -17,7 +17,7 @@
17
17
  "./cjs/detectPackage.js"
18
18
  ],
19
19
  "type": "module",
20
- "version": "1.1.11-2",
20
+ "version": "1.1.12-1",
21
21
  "main": "./cjs/index.js",
22
22
  "module": "./index.js",
23
23
  "types": "./index.d.ts",
@@ -1221,11 +1221,11 @@
1221
1221
  "@reduxjs/toolkit": "^1.9.1",
1222
1222
  "@sora-substrate/type-definitions": "^1.17.7",
1223
1223
  "@substrate/connect": "^0.7.26",
1224
- "@subwallet/chain-list": "0.2.13",
1225
- "@subwallet/extension-base": "^1.1.11-2",
1226
- "@subwallet/extension-chains": "^1.1.11-2",
1227
- "@subwallet/extension-dapp": "^1.1.11-2",
1228
- "@subwallet/extension-inject": "^1.1.11-2",
1224
+ "@subwallet/chain-list": "^0.2.14",
1225
+ "@subwallet/extension-base": "^1.1.12-1",
1226
+ "@subwallet/extension-chains": "^1.1.12-1",
1227
+ "@subwallet/extension-dapp": "^1.1.12-1",
1228
+ "@subwallet/extension-inject": "^1.1.12-1",
1229
1229
  "@subwallet/keyring": "^0.1.1",
1230
1230
  "@subwallet/ui-keyring": "^0.1.1",
1231
1231
  "@walletconnect/sign-client": "^2.8.4",
package/packageInfo.js CHANGED
@@ -7,5 +7,5 @@ export const packageInfo = {
7
7
  name: '@subwallet/extension-base',
8
8
  path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
9
9
  type: 'esm',
10
- version: '1.1.11-2'
10
+ version: '1.1.12-1'
11
11
  };
@@ -85,6 +85,12 @@ export declare const _XCM_TYPE: {
85
85
  PR: string;
86
86
  };
87
87
  export declare const _DEFAULT_ACTIVE_CHAINS: string[];
88
+ export declare const EVM_PASS_CONNECT_STATUS: {
89
+ acala: string[];
90
+ };
91
+ export declare const EVM_REFORMAT_DECIMALS: {
92
+ acala: string[];
93
+ };
88
94
  export declare const _CHAIN_INFO_SRC: string;
89
95
  export declare const _CHAIN_ASSET_SRC: string;
90
96
  export declare const _ASSET_REF_SRC: string;
@@ -216,6 +216,12 @@ export const _XCM_TYPE = {
216
216
  };
217
217
 
218
218
  export const _DEFAULT_ACTIVE_CHAINS = [..._DEFAULT_CHAINS];
219
+ export const EVM_PASS_CONNECT_STATUS = {
220
+ acala: ['acala_evm', 'karura_evm']
221
+ };
222
+ export const EVM_REFORMAT_DECIMALS = {
223
+ acala: ['acala_evm', 'karura_evm']
224
+ };
219
225
 
220
226
  // TODO: review
221
227
  const TARGET_BRANCH = process.env.NODE_ENV !== 'production' ? 'koni-dev' : 'master';
@@ -2,10 +2,12 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import '@polkadot/types-augment';
5
+ import { EVM_PASS_CONNECT_STATUS } from '@subwallet/extension-base/services/chain-service/constants';
5
6
  import { _ChainConnectionStatus } from '@subwallet/extension-base/services/chain-service/types';
6
7
  import { createPromiseHandler } from '@subwallet/extension-base/utils/promise';
7
8
  import { BehaviorSubject } from 'rxjs';
8
9
  import Web3 from 'web3';
10
+ const acalaEvmNetworks = EVM_PASS_CONNECT_STATUS.acala;
9
11
  export class EvmApi {
10
12
  apiRetry = 0;
11
13
  isApiConnectedSubject = new BehaviorSubject(false);
@@ -67,11 +69,15 @@ export class EvmApi {
67
69
  createIntervalCheckApi() {
68
70
  this.clearIntervalCheckApi();
69
71
  return setInterval(() => {
70
- this.api.eth.net.isListening().then(() => {
72
+ if (!acalaEvmNetworks.includes(this.chainSlug)) {
73
+ this.api.eth.net.isListening().then(() => {
74
+ this.onConnect();
75
+ }).catch(() => {
76
+ this.onDisconnect();
77
+ });
78
+ } else {
71
79
  this.onConnect();
72
- }).catch(() => {
73
- this.onDisconnect();
74
- });
80
+ }
75
81
  }, 10000);
76
82
  }
77
83
  clearIntervalCheckApi() {
@@ -82,17 +88,23 @@ export class EvmApi {
82
88
  const wsProvider = this.provider;
83
89
  wsProvider.connect && wsProvider.connect();
84
90
  this.updateConnectionStatus(_ChainConnectionStatus.CONNECTING);
91
+
85
92
  // Check if api is ready
86
- this.api.eth.net.isListening().then(() => {
93
+ if (!acalaEvmNetworks.includes(this.chainSlug)) {
94
+ this.api.eth.net.isListening().then(() => {
95
+ this.isApiReadyOnce = true;
96
+ this.onConnect();
97
+ }).catch(error => {
98
+ this.isApiReadyOnce = false;
99
+ this.isApiReady = false;
100
+ this.isReadyHandler.reject(error);
101
+ this.updateConnectionStatus(_ChainConnectionStatus.DISCONNECTED);
102
+ console.warn(`Can not connect to ${this.chainSlug} (EVM) at ${this.apiUrl}`);
103
+ });
104
+ } else {
87
105
  this.isApiReadyOnce = true;
88
106
  this.onConnect();
89
- }).catch(error => {
90
- this.isApiReadyOnce = false;
91
- this.isApiReady = false;
92
- this.isReadyHandler.reject(error);
93
- this.updateConnectionStatus(_ChainConnectionStatus.DISCONNECTED);
94
- console.warn(`Can not connect to ${this.chainSlug} (EVM) at ${this.apiUrl}`);
95
- });
107
+ }
96
108
 
97
109
  // Interval to check connecting status
98
110
  this.intervalCheckApi = this.createIntervalCheckApi();
@@ -11,13 +11,17 @@ export default class SettingService {
11
11
  passPhishingStore = new PassPhishingStore();
12
12
  constructor() {
13
13
  let old = localStorage.getItem(LANGUAGE) || 'en';
14
- this.settingsStore.getSubject().subscribe(({
14
+ const updateLanguage = ({
15
15
  language
16
16
  }) => {
17
17
  if (language !== old) {
18
18
  old = language;
19
19
  i18n.changeLanguage(language).catch(console.error);
20
20
  }
21
+ };
22
+ this.getSettings(updateLanguage);
23
+ this.settingsStore.getSubject().subscribe({
24
+ next: updateLanguage
21
25
  });
22
26
  }
23
27
  getSubject() {