@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.
Files changed (41) hide show
  1. package/background/KoniTypes.d.ts +16 -6
  2. package/background/types.d.ts +4 -2
  3. package/cjs/koni/api/staking/bonding/utils.js +2 -1
  4. package/cjs/koni/api/tokens/evm/transfer.js +10 -4
  5. package/cjs/koni/background/handlers/Extension.js +33 -11
  6. package/cjs/koni/background/handlers/State.js +1 -1
  7. package/cjs/packageInfo.js +1 -1
  8. package/cjs/services/chain-service/constants.js +10 -2
  9. package/cjs/services/chain-service/handler/EvmApi.js +24 -12
  10. package/cjs/services/keyring-service/index.js +33 -1
  11. package/cjs/services/notification-service/NotificationService.js +2 -1
  12. package/cjs/services/request-service/constants.js +11 -2
  13. package/cjs/services/request-service/handler/AuthRequestHandler.js +20 -1
  14. package/cjs/services/request-service/handler/EvmRequestHandler.js +2 -1
  15. package/cjs/services/setting-service/SettingService.js +5 -1
  16. package/cjs/services/transaction-service/index.js +124 -55
  17. package/cjs/utils/lazy.js +20 -6
  18. package/koni/api/staking/bonding/utils.js +2 -1
  19. package/koni/api/tokens/evm/transfer.d.ts +1 -1
  20. package/koni/api/tokens/evm/transfer.js +11 -5
  21. package/koni/background/handlers/Extension.d.ts +2 -0
  22. package/koni/background/handlers/Extension.js +33 -11
  23. package/koni/background/handlers/State.js +1 -1
  24. package/package.json +10 -8
  25. package/packageInfo.js +1 -1
  26. package/page/SubWalleEvmProvider.d.ts +1 -1
  27. package/services/chain-service/constants.d.ts +6 -0
  28. package/services/chain-service/constants.js +6 -0
  29. package/services/chain-service/handler/EvmApi.js +24 -12
  30. package/services/keyring-service/index.d.ts +4 -1
  31. package/services/keyring-service/index.js +33 -1
  32. package/services/notification-service/NotificationService.js +2 -1
  33. package/services/request-service/constants.d.ts +1 -0
  34. package/services/request-service/constants.js +9 -1
  35. package/services/request-service/handler/AuthRequestHandler.js +21 -2
  36. package/services/request-service/handler/EvmRequestHandler.js +2 -1
  37. package/services/setting-service/SettingService.js +5 -1
  38. package/services/transaction-service/index.d.ts +1 -0
  39. package/services/transaction-service/index.js +116 -48
  40. package/utils/lazy.d.ts +1 -1
  41. 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];
@@ -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 = bnMinStake.div(new _util.BN(10).pow(new _util.BN(tokenInfo.decimals))).toString();
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 = 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
@@ -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
- const meta = {
2779
- ...pair.meta,
2780
- isMasterPassword: false
2781
- };
2782
- if (!meta.originGenesisHash) {
2783
- meta.genesisHash = '';
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 external request
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
- /// Account management
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);
@@ -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-1'
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();
@@ -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
- resetWallet(resetAll) {
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
- chrome.notifications.create({
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(request => request.idStr === idStr);
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
- 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() {