@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.
- package/cjs/koni/api/tokens/evm/transfer.js +10 -4
- package/cjs/koni/background/handlers/Extension.js +1 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/constants.js +10 -2
- package/cjs/services/chain-service/handler/EvmApi.js +24 -12
- package/cjs/services/setting-service/SettingService.js +5 -1
- package/koni/api/tokens/evm/transfer.d.ts +1 -1
- package/koni/api/tokens/evm/transfer.js +11 -5
- package/koni/background/handlers/Extension.js +1 -1
- package/package.json +6 -6
- package/packageInfo.js +1 -1
- package/services/chain-service/constants.d.ts +6 -0
- package/services/chain-service/constants.js +6 -0
- package/services/chain-service/handler/EvmApi.js +24 -12
- package/services/setting-service/SettingService.js +5 -1
|
@@ -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 =
|
|
57
|
-
transactionObject.value = transferAll ? new _util.BN(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
|
package/cjs/packageInfo.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
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 =
|
|
46
|
-
transactionObject.value = transferAll ? new BN(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.
|
|
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.
|
|
1225
|
-
"@subwallet/extension-base": "^1.1.
|
|
1226
|
-
"@subwallet/extension-chains": "^1.1.
|
|
1227
|
-
"@subwallet/extension-dapp": "^1.1.
|
|
1228
|
-
"@subwallet/extension-inject": "^1.1.
|
|
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.
|
|
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
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
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() {
|