@subwallet/extension-base 1.1.11-1 → 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/background/KoniTypes.d.ts +16 -6
- package/background/types.d.ts +4 -2
- package/cjs/koni/api/staking/bonding/utils.js +2 -1
- package/cjs/koni/api/tokens/evm/transfer.js +10 -4
- package/cjs/koni/background/handlers/Extension.js +33 -11
- package/cjs/koni/background/handlers/State.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/keyring-service/index.js +33 -1
- package/cjs/services/notification-service/NotificationService.js +2 -1
- package/cjs/services/request-service/constants.js +11 -2
- package/cjs/services/request-service/handler/AuthRequestHandler.js +20 -1
- package/cjs/services/request-service/handler/EvmRequestHandler.js +2 -1
- package/cjs/services/setting-service/SettingService.js +5 -1
- package/cjs/services/transaction-service/index.js +124 -55
- package/cjs/utils/lazy.js +20 -6
- package/koni/api/staking/bonding/utils.js +2 -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.d.ts +2 -0
- package/koni/background/handlers/Extension.js +33 -11
- package/koni/background/handlers/State.js +1 -1
- package/package.json +10 -8
- package/packageInfo.js +1 -1
- package/page/SubWalleEvmProvider.d.ts +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/keyring-service/index.d.ts +4 -1
- package/services/keyring-service/index.js +33 -1
- package/services/notification-service/NotificationService.js +2 -1
- package/services/request-service/constants.d.ts +1 -0
- package/services/request-service/constants.js +9 -1
- package/services/request-service/handler/AuthRequestHandler.js +21 -2
- package/services/request-service/handler/EvmRequestHandler.js +2 -1
- package/services/setting-service/SettingService.js +5 -1
- package/services/transaction-service/index.d.ts +1 -0
- package/services/transaction-service/index.js +116 -48
- package/utils/lazy.d.ts +1 -1
- package/utils/lazy.js +20 -7
|
@@ -7,7 +7,7 @@ import { _CHAIN_VALIDATION_ERROR } from '@subwallet/extension-base/services/chai
|
|
|
7
7
|
import { _ChainState, _EvmApi, _NetworkUpsertParams, _SubstrateApi, _ValidateCustomAssetRequest, _ValidateCustomAssetResponse, EnableChainParams, EnableMultiChainParams } from '@subwallet/extension-base/services/chain-service/types';
|
|
8
8
|
import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
|
|
9
9
|
import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
10
|
-
import { InjectedAccount, MetadataDefBase } from '@subwallet/extension-inject/types';
|
|
10
|
+
import { InjectedAccount, InjectedAccountWithMeta, MetadataDefBase } from '@subwallet/extension-inject/types';
|
|
11
11
|
import { KeyringPair$Json, KeyringPair$Meta } from '@subwallet/keyring/types';
|
|
12
12
|
import { KeyringOptions } from '@subwallet/ui-keyring/options/types';
|
|
13
13
|
import { KeyringAddress, KeyringPairs$Json } from '@subwallet/ui-keyring/types';
|
|
@@ -701,6 +701,12 @@ export interface RequestEditContactAccount {
|
|
|
701
701
|
export interface RequestDeleteContactAccount {
|
|
702
702
|
address: string;
|
|
703
703
|
}
|
|
704
|
+
export interface RequestAddInjectedAccounts {
|
|
705
|
+
accounts: InjectedAccountWithMeta[];
|
|
706
|
+
}
|
|
707
|
+
export interface RequestRemoveInjectedAccounts {
|
|
708
|
+
addresses: string[];
|
|
709
|
+
}
|
|
704
710
|
export declare enum ExternalRequestPromiseStatus {
|
|
705
711
|
PENDING = 0,
|
|
706
712
|
REJECTED = 1,
|
|
@@ -924,6 +930,7 @@ export interface EvmSendTransactionRequest extends TransactionConfig, EvmSignReq
|
|
|
924
930
|
parseData: EvmTransactionData;
|
|
925
931
|
isToContract: boolean;
|
|
926
932
|
}
|
|
933
|
+
export declare type EvmWatchTransactionRequest = EvmSendTransactionRequest;
|
|
927
934
|
export interface ConfirmationsQueueItemOptions {
|
|
928
935
|
requiredPassword?: boolean;
|
|
929
936
|
address?: string;
|
|
@@ -981,6 +988,7 @@ export interface ConfirmationDefinitions {
|
|
|
981
988
|
switchNetworkRequest: [ConfirmationsQueueItem<SwitchNetworkRequest>, ConfirmationResult<boolean>];
|
|
982
989
|
evmSignatureRequest: [ConfirmationsQueueItem<EvmSignatureRequest>, ConfirmationResult<string>];
|
|
983
990
|
evmSendTransactionRequest: [ConfirmationsQueueItem<EvmSendTransactionRequest>, ConfirmationResult<string>];
|
|
991
|
+
evmWatchTransactionRequest: [ConfirmationsQueueItem<EvmWatchTransactionRequest>, ConfirmationResult<string>];
|
|
984
992
|
}
|
|
985
993
|
export declare type ConfirmationType = keyof ConfirmationDefinitions;
|
|
986
994
|
export declare type ConfirmationsQueue = {
|
|
@@ -1603,30 +1611,32 @@ export interface KoniRequestSignatures {
|
|
|
1603
1611
|
'pri(authorize.forgetAllSite)': [null, boolean, AuthUrls];
|
|
1604
1612
|
'pri(authorize.rejectV2)': [RequestAuthorizeReject, boolean];
|
|
1605
1613
|
'pri(authorize.cancelV2)': [RequestAuthorizeCancel, boolean];
|
|
1606
|
-
'pri(seed.createV2)': [RequestSeedCreateV2, ResponseSeedCreateV2];
|
|
1607
1614
|
'pri(seed.validateV2)': [RequestSeedValidateV2, ResponseSeedValidateV2];
|
|
1608
1615
|
'pri(privateKey.validateV2)': [RequestSeedValidateV2, ResponsePrivateKeyValidateV2];
|
|
1616
|
+
'pri(accounts.checkPublicAndSecretKey)': [RequestCheckPublicAndSecretKey, ResponseCheckPublicAndSecretKey];
|
|
1617
|
+
'pri(seed.createV2)': [RequestSeedCreateV2, ResponseSeedCreateV2];
|
|
1609
1618
|
'pri(accounts.create.suriV2)': [RequestAccountCreateSuriV2, ResponseAccountCreateSuriV2];
|
|
1610
1619
|
'pri(accounts.create.externalV2)': [RequestAccountCreateExternalV2, AccountExternalError[]];
|
|
1611
1620
|
'pri(accounts.create.hardwareV2)': [RequestAccountCreateHardwareV2, boolean];
|
|
1612
1621
|
'pri(accounts.create.hardwareMultiple)': [RequestAccountCreateHardwareMultiple, boolean];
|
|
1613
1622
|
'pri(accounts.create.withSecret)': [RequestAccountCreateWithSecretKey, ResponseAccountCreateWithSecretKey];
|
|
1623
|
+
'pri(accounts.inject.add)': [RequestAddInjectedAccounts, boolean];
|
|
1624
|
+
'pri(accounts.inject.remove)': [RequestRemoveInjectedAccounts, boolean];
|
|
1614
1625
|
'pri(derivation.createV2)': [RequestDeriveCreateV2, boolean];
|
|
1615
1626
|
'pri(json.restoreV2)': [RequestJsonRestoreV2, void];
|
|
1616
1627
|
'pri(json.batchRestoreV2)': [RequestBatchRestoreV2, void];
|
|
1617
1628
|
'pri(accounts.exportPrivateKey)': [RequestAccountExportPrivateKey, ResponseAccountExportPrivateKey];
|
|
1618
|
-
'pri(accounts.checkPublicAndSecretKey)': [RequestCheckPublicAndSecretKey, ResponseCheckPublicAndSecretKey];
|
|
1619
1629
|
'pri(accounts.subscribeWithCurrentAddress)': [RequestAccountSubscribe, AccountsWithCurrentAddress, AccountsWithCurrentAddress];
|
|
1620
|
-
'pri(accounts.subscribeAccountsInputAddress)': [RequestAccountSubscribe, string, OptionInputAddress];
|
|
1621
|
-
'pri(accounts.saveRecent)': [RequestSaveRecentAccount, KeyringAddress];
|
|
1622
|
-
'pri(accounts.get.meta)': [RequestAccountMeta, ResponseAccountMeta];
|
|
1623
1630
|
'pri(accounts.updateCurrentAddress)': [string, boolean];
|
|
1624
1631
|
'pri(currentAccount.saveAddress)': [RequestCurrentAccountAddress, CurrentAccountInfo];
|
|
1632
|
+
'pri(accounts.get.meta)': [RequestAccountMeta, ResponseAccountMeta];
|
|
1633
|
+
'pri(accounts.saveRecent)': [RequestSaveRecentAccount, KeyringAddress];
|
|
1625
1634
|
'pri(accounts.subscribeAddresses)': [null, AddressBookInfo, AddressBookInfo];
|
|
1626
1635
|
'pri(accounts.editContact)': [RequestEditContactAccount, boolean];
|
|
1627
1636
|
'pri(accounts.deleteContact)': [RequestDeleteContactAccount, boolean];
|
|
1628
1637
|
'pri(accounts.resolveDomainToAddress)': [ResolveDomainRequest, string | undefined];
|
|
1629
1638
|
'pri(accounts.resolveAddressToDomain)': [ResolveAddressToDomainRequest, string | undefined];
|
|
1639
|
+
'pri(accounts.subscribeAccountsInputAddress)': [RequestAccountSubscribe, string, OptionInputAddress];
|
|
1630
1640
|
'pri(settings.changeBalancesVisibility)': [null, boolean];
|
|
1631
1641
|
'pri(settings.subscribe)': [null, UiSettings, UiSettings];
|
|
1632
1642
|
'pri(settings.getLogoMaps)': [null, AllLogoMap];
|
package/background/types.d.ts
CHANGED
|
@@ -31,17 +31,19 @@ export interface AbstractAddressJson extends KeyringPair$Meta {
|
|
|
31
31
|
export interface AccountJson extends AbstractAddressJson {
|
|
32
32
|
accountIndex?: number;
|
|
33
33
|
addressOffset?: number;
|
|
34
|
+
availableGenesisHashes?: string[];
|
|
34
35
|
genesisHash?: string | null;
|
|
35
36
|
isExternal?: boolean;
|
|
36
37
|
isHardware?: boolean;
|
|
37
38
|
isHidden?: boolean;
|
|
39
|
+
isInjected?: boolean;
|
|
38
40
|
isMasterAccount?: boolean;
|
|
39
41
|
isMasterPassword?: boolean;
|
|
40
42
|
isReadOnly?: boolean;
|
|
43
|
+
originGenesisHash?: string | null;
|
|
41
44
|
parentAddress?: string;
|
|
45
|
+
source?: string;
|
|
42
46
|
suri?: string;
|
|
43
|
-
originGenesisHash?: string | null;
|
|
44
|
-
availableGenesisHashes?: string[];
|
|
45
47
|
}
|
|
46
48
|
export interface AddressJson extends AbstractAddressJson {
|
|
47
49
|
isRecent?: boolean;
|
|
@@ -33,6 +33,7 @@ var _astar = require("@subwallet/extension-base/koni/api/staking/bonding/astar")
|
|
|
33
33
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
34
34
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
35
35
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
36
|
+
var _number = require("@subwallet/extension-base/utils/number");
|
|
36
37
|
var _i18next = require("i18next");
|
|
37
38
|
var _util = require("@polkadot/util");
|
|
38
39
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -285,7 +286,7 @@ function getValidatorLabel(chain) {
|
|
|
285
286
|
}
|
|
286
287
|
const getMinStakeErrorMessage = (chainInfo, bnMinStake) => {
|
|
287
288
|
const tokenInfo = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
|
|
288
|
-
const number =
|
|
289
|
+
const number = (0, _number.formatNumber)(bnMinStake.toString(), tokenInfo.decimals || 0, _number.balanceFormatter);
|
|
289
290
|
return (0, _i18next.t)('Insufficient stake. Please stake at least {{number}} {{tokenSymbol}} to get rewards', {
|
|
290
291
|
replace: {
|
|
291
292
|
tokenSymbol: tokenInfo.symbol,
|
|
@@ -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
|
|
@@ -2775,15 +2775,19 @@ class KoniExtension {
|
|
|
2775
2775
|
if (createNew) {
|
|
2776
2776
|
const pairs = _uiKeyring.keyring.getPairs();
|
|
2777
2777
|
for (const pair of pairs) {
|
|
2778
|
-
|
|
2779
|
-
|
|
2780
|
-
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
|
|
2778
|
+
if (pair.meta.isInjected) {
|
|
2779
|
+
// Empty
|
|
2780
|
+
} else {
|
|
2781
|
+
const meta = {
|
|
2782
|
+
...pair.meta,
|
|
2783
|
+
isMasterPassword: false
|
|
2784
|
+
};
|
|
2785
|
+
if (!meta.originGenesisHash) {
|
|
2786
|
+
meta.genesisHash = '';
|
|
2787
|
+
}
|
|
2788
|
+
pair.setMeta(meta);
|
|
2789
|
+
_uiKeyring.keyring.saveAccountMeta(pair, pair.meta);
|
|
2784
2790
|
}
|
|
2785
|
-
pair.setMeta(meta);
|
|
2786
|
-
_uiKeyring.keyring.saveAccountMeta(pair, pair.meta);
|
|
2787
2791
|
}
|
|
2788
2792
|
}
|
|
2789
2793
|
_uiKeyring.keyring.changeMasterPassword(newPassword, oldPassword);
|
|
@@ -2889,7 +2893,7 @@ class KoniExtension {
|
|
|
2889
2893
|
}
|
|
2890
2894
|
}
|
|
2891
2895
|
|
|
2892
|
-
/// Signing
|
|
2896
|
+
/// Signing substrate request
|
|
2893
2897
|
signingApprovePasswordV2(_ref70) {
|
|
2894
2898
|
let {
|
|
2895
2899
|
id
|
|
@@ -3573,6 +3577,16 @@ class KoniExtension {
|
|
|
3573
3577
|
return await (0, _domain.resolveAzeroAddressToDomain)(request.address, request.chain, chainApi.api);
|
|
3574
3578
|
}
|
|
3575
3579
|
|
|
3580
|
+
/// Inject account
|
|
3581
|
+
addInjects(request) {
|
|
3582
|
+
this.#koniState.keyringService.addInjectAccounts(request.accounts);
|
|
3583
|
+
return true;
|
|
3584
|
+
}
|
|
3585
|
+
removeInjects(request) {
|
|
3586
|
+
this.#koniState.keyringService.removeInjectAccounts(request.addresses);
|
|
3587
|
+
return true;
|
|
3588
|
+
}
|
|
3589
|
+
|
|
3576
3590
|
// --------------------------------------------------------------
|
|
3577
3591
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
3578
3592
|
async handle(id, type, request, port) {
|
|
@@ -3725,7 +3739,7 @@ class KoniExtension {
|
|
|
3725
3739
|
case 'pri(transaction.history.getSubscription)':
|
|
3726
3740
|
return await this.subscribeHistory(id, port);
|
|
3727
3741
|
|
|
3728
|
-
|
|
3742
|
+
/* Account management */
|
|
3729
3743
|
// Add account
|
|
3730
3744
|
case 'pri(accounts.create.suriV2)':
|
|
3731
3745
|
return await this.accountsCreateSuriV2(request);
|
|
@@ -3788,6 +3802,14 @@ class KoniExtension {
|
|
|
3788
3802
|
case 'pri(accounts.resolveAddressToDomain)':
|
|
3789
3803
|
return await this.resolveAddressByDomain(request);
|
|
3790
3804
|
|
|
3805
|
+
// Inject account
|
|
3806
|
+
case 'pri(accounts.inject.add)':
|
|
3807
|
+
return this.addInjects(request);
|
|
3808
|
+
case 'pri(accounts.inject.remove)':
|
|
3809
|
+
return this.removeInjects(request);
|
|
3810
|
+
|
|
3811
|
+
/* Account management */
|
|
3812
|
+
|
|
3791
3813
|
// ChainService
|
|
3792
3814
|
case 'pri(chainService.subscribeChainInfoMap)':
|
|
3793
3815
|
return this.subscribeChainInfoMap(id, port);
|
|
@@ -1565,7 +1565,7 @@ class KoniState {
|
|
|
1565
1565
|
});
|
|
1566
1566
|
}
|
|
1567
1567
|
async resetWallet(resetAll) {
|
|
1568
|
-
this.keyringService.resetWallet(resetAll);
|
|
1568
|
+
await this.keyringService.resetWallet(resetAll);
|
|
1569
1569
|
this.requestService.resetWallet();
|
|
1570
1570
|
this.transactionService.resetWallet();
|
|
1571
1571
|
await this.dbService.resetWallet(resetAll);
|
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();
|
|
@@ -8,6 +8,7 @@ var _constants = require("@subwallet/extension-base/constants");
|
|
|
8
8
|
var _stores = require("@subwallet/extension-base/stores");
|
|
9
9
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
10
10
|
var _rxjs = require("rxjs");
|
|
11
|
+
var _util = require("@polkadot/util");
|
|
11
12
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
12
13
|
// SPDX-License-Identifier: Apache-2.0
|
|
13
14
|
|
|
@@ -98,8 +99,39 @@ class KeyringService {
|
|
|
98
99
|
_uiKeyring.keyring.lockAll();
|
|
99
100
|
this.updateKeyringState();
|
|
100
101
|
}
|
|
101
|
-
|
|
102
|
+
|
|
103
|
+
/* Inject */
|
|
104
|
+
|
|
105
|
+
addInjectAccounts(accounts) {
|
|
106
|
+
_uiKeyring.keyring.addInjects(accounts.map(account => {
|
|
107
|
+
const name = account.meta.name || (0, _util.stringShorten)(account.address);
|
|
108
|
+
|
|
109
|
+
// TODO: Add if need
|
|
110
|
+
// name = name.concat(' (', account.meta.source, ')');
|
|
111
|
+
|
|
112
|
+
return {
|
|
113
|
+
...account,
|
|
114
|
+
meta: {
|
|
115
|
+
...account.meta,
|
|
116
|
+
name: name
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}));
|
|
120
|
+
}
|
|
121
|
+
removeInjectAccounts(addresses) {
|
|
122
|
+
_uiKeyring.keyring.removeInjects(addresses);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Inject */
|
|
126
|
+
|
|
127
|
+
/* Reset */
|
|
128
|
+
async resetWallet(resetAll) {
|
|
102
129
|
_uiKeyring.keyring.resetWallet(resetAll);
|
|
130
|
+
await new Promise(resolve => {
|
|
131
|
+
setTimeout(() => {
|
|
132
|
+
resolve();
|
|
133
|
+
}, 500);
|
|
134
|
+
});
|
|
103
135
|
this.updateKeyringState();
|
|
104
136
|
this.currentAccountSubject.next({
|
|
105
137
|
address: _constants.ALL_ACCOUNT_KEY,
|
|
@@ -32,7 +32,8 @@ class NotificationService {
|
|
|
32
32
|
|
|
33
33
|
// Create a new chrome notification with link
|
|
34
34
|
static createBrowserNotification(title, message, link) {
|
|
35
|
-
|
|
35
|
+
var _chrome, _chrome$notifications;
|
|
36
|
+
(_chrome = chrome) === null || _chrome === void 0 ? void 0 : (_chrome$notifications = _chrome.notifications) === null || _chrome$notifications === void 0 ? void 0 : _chrome$notifications.create({
|
|
36
37
|
type: 'basic',
|
|
37
38
|
title,
|
|
38
39
|
message,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.PREDEFINED_CHAIN_DAPP_CHAIN_MAP = exports.EXTENSION_REQUEST_URL = void 0;
|
|
6
|
+
exports.WEB_APP_URL = exports.PREDEFINED_CHAIN_DAPP_CHAIN_MAP = exports.EXTENSION_REQUEST_URL = void 0;
|
|
7
7
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
|
|
@@ -14,4 +14,13 @@ const PREDEFINED_CHAIN_DAPP_CHAIN_MAP = {
|
|
|
14
14
|
'apps.moonbeam.network': ['moonbeam', 'moonriver'],
|
|
15
15
|
'app.stellaswap.com': ['moonbeam']
|
|
16
16
|
};
|
|
17
|
-
exports.PREDEFINED_CHAIN_DAPP_CHAIN_MAP = PREDEFINED_CHAIN_DAPP_CHAIN_MAP;
|
|
17
|
+
exports.PREDEFINED_CHAIN_DAPP_CHAIN_MAP = PREDEFINED_CHAIN_DAPP_CHAIN_MAP;
|
|
18
|
+
const WEB_APP_URL = [
|
|
19
|
+
/// Web app
|
|
20
|
+
'localhost:9000',
|
|
21
|
+
// Local
|
|
22
|
+
'subwallet-webapp.pages.dev',
|
|
23
|
+
// Pull request build
|
|
24
|
+
'web.subwallet.app' // Production
|
|
25
|
+
];
|
|
26
|
+
exports.WEB_APP_URL = WEB_APP_URL;
|
|
@@ -221,7 +221,7 @@ class AuthRequestHandler {
|
|
|
221
221
|
}
|
|
222
222
|
const idStr = (0, _utils2.stripUrl)(url);
|
|
223
223
|
// Do not enqueue duplicate authorization requests.
|
|
224
|
-
const isDuplicate = Object.values(this.#authRequestsV2).some(
|
|
224
|
+
const isDuplicate = Object.values(this.#authRequestsV2).some(_request => _request.idStr === idStr && _request.accountAuthType === request.accountAuthType);
|
|
225
225
|
(0, _util.assert)(!isDuplicate, 'The source {{url}} has a pending authorization request'.replace('{{url}}', url));
|
|
226
226
|
const existedAuth = authList[idStr];
|
|
227
227
|
const existedAccountAuthType = existedAuth === null || existedAuth === void 0 ? void 0 : existedAuth.accountAuthType;
|
|
@@ -250,6 +250,25 @@ class AuthRequestHandler {
|
|
|
250
250
|
// Prevent appear confirmation popup
|
|
251
251
|
return false;
|
|
252
252
|
}
|
|
253
|
+
} else {
|
|
254
|
+
// Auto auth for web app
|
|
255
|
+
|
|
256
|
+
// Ignore white list
|
|
257
|
+
const isWhiteList = _constants.WEB_APP_URL.some(url => idStr.includes(url)) && false;
|
|
258
|
+
if (isWhiteList) {
|
|
259
|
+
const isAllowedMap = this.getAddressList(true);
|
|
260
|
+
authList[(0, _utils2.stripUrl)(url)] = {
|
|
261
|
+
count: 0,
|
|
262
|
+
id: idStr,
|
|
263
|
+
isAllowed: true,
|
|
264
|
+
isAllowedMap,
|
|
265
|
+
origin,
|
|
266
|
+
url,
|
|
267
|
+
accountAuthType: 'both'
|
|
268
|
+
};
|
|
269
|
+
this.setAuthorize(authList);
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
253
272
|
}
|
|
254
273
|
return new Promise((resolve, reject) => {
|
|
255
274
|
const id = (0, _getId.getId)();
|
|
@@ -28,7 +28,8 @@ class EvmRequestHandler {
|
|
|
28
28
|
addTokenRequest: {},
|
|
29
29
|
switchNetworkRequest: {},
|
|
30
30
|
evmSignatureRequest: {},
|
|
31
|
-
evmSendTransactionRequest: {}
|
|
31
|
+
evmSendTransactionRequest: {},
|
|
32
|
+
evmWatchTransactionRequest: {}
|
|
32
33
|
});
|
|
33
34
|
confirmationsPromiseMap = {};
|
|
34
35
|
constructor(requestService) {
|
|
@@ -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() {
|