@subwallet/extension-base 1.0.2-2 → 1.0.3-0
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 +56 -40
- package/background/KoniTypes.js +11 -9
- package/background/errors/TransactionError.js +25 -1
- package/background/types.d.ts +10 -5
- package/cjs/background/KoniTypes.js +11 -9
- package/cjs/background/errors/TransactionError.js +24 -0
- package/cjs/constants/index.js +8 -26
- package/cjs/koni/api/dotsama/balance.js +49 -224
- package/cjs/koni/api/dotsama/transfer.js +34 -39
- package/cjs/koni/api/nft/acala_nft/index.js +7 -7
- package/cjs/koni/api/nft/bit.country/index.js +7 -6
- package/cjs/koni/api/nft/evm_nft/index.js +8 -3
- package/cjs/koni/api/nft/index.js +3 -6
- package/cjs/koni/api/nft/karura_nft/index.js +7 -6
- package/cjs/koni/api/nft/rmrk_nft/index.js +11 -1
- package/cjs/koni/api/nft/statemine_nft/index.js +7 -6
- package/cjs/koni/api/nft/unique_nft/index.js +5 -1
- package/cjs/koni/api/nft/wasm_nft/index.js +170 -111
- package/cjs/koni/api/nft/wasm_nft/utils.js +11 -7
- package/cjs/koni/api/staking/bonding/amplitude.js +13 -9
- package/cjs/koni/api/staking/bonding/astar.js +15 -13
- package/cjs/koni/api/staking/bonding/index.js +22 -10
- package/cjs/koni/api/staking/bonding/paraChain.js +85 -2
- package/cjs/koni/api/staking/bonding/relayChain.js +122 -16
- package/cjs/koni/api/staking/bonding/utils.js +27 -8
- package/cjs/koni/api/tokens/wasm/index.js +5 -4
- package/cjs/koni/api/tokens/wasm/utils.js +63 -0
- package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
- package/cjs/koni/api/xcm/utils.js +18 -13
- package/cjs/koni/api/xcm/xTokens.js +1 -1
- package/cjs/koni/api/xcm/xcmPallet.js +9 -6
- package/cjs/koni/background/cron.js +171 -61
- package/cjs/koni/background/handlers/Extension.js +391 -207
- package/cjs/koni/background/handlers/State.js +49 -34
- package/cjs/koni/background/handlers/Tabs.js +50 -17
- package/cjs/koni/background/subscription.js +53 -28
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/base/types.js +20 -0
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +13 -8
- package/cjs/services/chain-service/index.js +73 -49
- package/cjs/services/event-service/index.js +5 -1
- package/cjs/services/event-service/types.js +11 -1
- package/cjs/services/history-service/index.js +101 -50
- package/cjs/services/history-service/subsquid-multi-chain-history.js +13 -10
- package/cjs/services/keyring-service/index.js +11 -13
- package/cjs/services/migration-service/scripts/MigrateImportedToken.js +2 -1
- package/cjs/services/price-service/coingecko.js +0 -1
- package/cjs/services/price-service/index.js +71 -24
- package/cjs/services/request-service/handler/AuthRequestHandler.js +13 -7
- package/cjs/services/request-service/handler/EvmRequestHandler.js +8 -12
- package/cjs/services/request-service/index.js +14 -5
- package/cjs/services/storage-service/DatabaseService.js +66 -34
- package/cjs/services/storage-service/db-stores/Nft.js +7 -15
- package/cjs/services/storage-service/db-stores/Transaction.js +6 -10
- package/cjs/services/transaction-service/event-parser/index.js +20 -48
- package/cjs/services/transaction-service/index.js +104 -48
- package/cjs/services/transaction-service/utils.js +10 -8
- package/cjs/utils/address.js +10 -1
- package/cjs/utils/index.js +9 -15
- package/cjs/utils/promise.js +26 -0
- package/constants/index.d.ts +7 -13
- package/constants/index.js +7 -13
- package/koni/api/dotsama/balance.d.ts +0 -1
- package/koni/api/dotsama/balance.js +22 -197
- package/koni/api/dotsama/transfer.js +11 -16
- package/koni/api/nft/acala_nft/index.js +7 -7
- package/koni/api/nft/bit.country/index.js +7 -6
- package/koni/api/nft/evm_nft/index.js +7 -3
- package/koni/api/nft/index.d.ts +1 -2
- package/koni/api/nft/index.js +3 -6
- package/koni/api/nft/karura_nft/index.js +7 -6
- package/koni/api/nft/nft.d.ts +1 -0
- package/koni/api/nft/rmrk_nft/index.js +11 -1
- package/koni/api/nft/statemine_nft/index.js +7 -6
- package/koni/api/nft/unique_nft/index.js +5 -1
- package/koni/api/nft/wasm_nft/index.d.ts +0 -2
- package/koni/api/nft/wasm_nft/index.js +168 -109
- package/koni/api/nft/wasm_nft/utils.d.ts +7 -5
- package/koni/api/nft/wasm_nft/utils.js +7 -5
- package/koni/api/staking/bonding/amplitude.d.ts +0 -1
- package/koni/api/staking/bonding/amplitude.js +15 -10
- package/koni/api/staking/bonding/astar.js +8 -6
- package/koni/api/staking/bonding/index.d.ts +4 -1
- package/koni/api/staking/bonding/index.js +23 -13
- package/koni/api/staking/bonding/paraChain.d.ts +3 -0
- package/koni/api/staking/bonding/paraChain.js +86 -5
- package/koni/api/staking/bonding/relayChain.d.ts +5 -1
- package/koni/api/staking/bonding/relayChain.js +121 -18
- package/koni/api/staking/bonding/utils.d.ts +3 -2
- package/koni/api/staking/bonding/utils.js +27 -9
- package/koni/api/tokens/wasm/index.js +5 -4
- package/koni/api/tokens/wasm/utils.d.ts +6 -0
- package/koni/api/tokens/wasm/utils.js +54 -0
- package/koni/api/xcm/polkadotXcm.js +2 -2
- package/koni/api/xcm/utils.d.ts +5 -6
- package/koni/api/xcm/utils.js +15 -10
- package/koni/api/xcm/xTokens.js +2 -2
- package/koni/api/xcm/xcmPallet.js +10 -9
- package/koni/background/cron.d.ts +6 -1
- package/koni/background/cron.js +172 -62
- package/koni/background/handlers/Extension.d.ts +9 -3
- package/koni/background/handlers/Extension.js +306 -126
- package/koni/background/handlers/State.d.ts +5 -6
- package/koni/background/handlers/State.js +51 -34
- package/koni/background/handlers/Tabs.js +50 -17
- package/koni/background/subscription.d.ts +2 -0
- package/koni/background/subscription.js +51 -29
- package/package.json +29 -14
- package/packageInfo.js +1 -1
- package/services/base/types.d.ts +34 -0
- package/services/base/types.js +15 -0
- package/services/chain-service/handler/SubstrateChainHandler.js +14 -9
- package/services/chain-service/helper/psp22_abi.json +1041 -881
- package/services/chain-service/helper/psp34_abi.json +2963 -1807
- package/services/chain-service/index.d.ts +5 -2
- package/services/chain-service/index.js +68 -45
- package/services/chain-service/types.d.ts +1 -0
- package/services/event-service/index.js +5 -1
- package/services/event-service/types.d.ts +5 -9
- package/services/event-service/types.js +4 -1
- package/services/history-service/index.d.ts +28 -7
- package/services/history-service/index.js +101 -50
- package/services/history-service/subsquid-multi-chain-history.js +16 -12
- package/services/keyring-service/index.d.ts +4 -2
- package/services/keyring-service/index.js +11 -13
- package/services/migration-service/scripts/MigrateImportedToken.js +2 -1
- package/services/price-service/coingecko.js +0 -1
- package/services/price-service/index.d.ts +22 -1
- package/services/price-service/index.js +71 -24
- package/services/request-service/handler/AuthRequestHandler.d.ts +3 -1
- package/services/request-service/handler/AuthRequestHandler.js +13 -7
- package/services/request-service/handler/EvmRequestHandler.js +8 -12
- package/services/request-service/index.d.ts +3 -1
- package/services/request-service/index.js +14 -5
- package/services/storage-service/DatabaseService.d.ts +2 -0
- package/services/storage-service/DatabaseService.js +66 -34
- package/services/storage-service/db-stores/Nft.d.ts +2 -2
- package/services/storage-service/db-stores/Nft.js +7 -14
- package/services/storage-service/db-stores/Transaction.d.ts +2 -0
- package/services/storage-service/db-stores/Transaction.js +6 -10
- package/services/transaction-service/event-parser/index.js +21 -49
- package/services/transaction-service/index.d.ts +2 -0
- package/services/transaction-service/index.js +86 -32
- package/services/transaction-service/types.d.ts +2 -0
- package/services/transaction-service/utils.js +10 -8
- package/utils/address.d.ts +3 -0
- package/utils/address.js +8 -1
- package/utils/index.d.ts +2 -2
- package/utils/index.js +7 -13
- package/utils/promise.d.ts +6 -0
- package/utils/promise.js +20 -0
|
@@ -6,30 +6,31 @@ import { TransactionError } from '@subwallet/extension-base/background/errors/Tr
|
|
|
6
6
|
import { isJsonPayload, SEED_DEFAULT_LENGTH, SEED_LENGTHS } from '@subwallet/extension-base/background/handlers/Extension';
|
|
7
7
|
import { withErrorLog } from '@subwallet/extension-base/background/handlers/helpers';
|
|
8
8
|
import { createSubscription } from '@subwallet/extension-base/background/handlers/subscriptions';
|
|
9
|
-
import { AccountExternalErrorCode, BasicTxErrorType, ChainType, ExternalRequestPromiseStatus, ExtrinsicType, TransferTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
|
|
9
|
+
import { AccountExternalErrorCode, BasicTxErrorType, ChainType, ExternalRequestPromiseStatus, ExtrinsicType, StakingType, TransferTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
|
|
10
10
|
import { ALL_ACCOUNT_KEY, ALL_GENESIS_HASH, DEFAULT_TIME_AUTO_LOCK } from '@subwallet/extension-base/constants';
|
|
11
11
|
import { ALLOWED_PATH } from '@subwallet/extension-base/defaults';
|
|
12
12
|
import { parseSubstrateTransaction } from '@subwallet/extension-base/koni/api/dotsama/parseTransaction';
|
|
13
13
|
import { checkReferenceCount, checkSupportTransfer, createTransferExtrinsic } from '@subwallet/extension-base/koni/api/dotsama/transfer';
|
|
14
14
|
import { getNftTransferExtrinsic, isRecipientSelf } from '@subwallet/extension-base/koni/api/nft/transfer';
|
|
15
|
-
import { getBondingExtrinsic, getCancelWithdrawalExtrinsic, getClaimRewardExtrinsic, getNominationPoolsInfo, getUnbondingExtrinsic, getValidatorsInfo, getWithdrawalExtrinsic } from '@subwallet/extension-base/koni/api/staking/bonding';
|
|
15
|
+
import { getBondingExtrinsic, getCancelWithdrawalExtrinsic, getClaimRewardExtrinsic, getNominationPoolsInfo, getUnbondingExtrinsic, getValidatorsInfo, getWithdrawalExtrinsic, validateBondingCondition, validateUnbondingCondition } from '@subwallet/extension-base/koni/api/staking/bonding';
|
|
16
16
|
import { getTuringCancelCompoundingExtrinsic, getTuringCompoundExtrinsic } from '@subwallet/extension-base/koni/api/staking/bonding/paraChain';
|
|
17
|
-
import { getPoolingBondingExtrinsic, getPoolingUnbondingExtrinsic } from '@subwallet/extension-base/koni/api/staking/bonding/relayChain';
|
|
17
|
+
import { getPoolingBondingExtrinsic, getPoolingUnbondingExtrinsic, validatePoolBondingCondition, validateRelayUnbondingCondition } from '@subwallet/extension-base/koni/api/staking/bonding/relayChain';
|
|
18
18
|
import { getERC20TransactionObject, getERC721Transaction, getEVMTransactionObject } from '@subwallet/extension-base/koni/api/tokens/evm/transfer';
|
|
19
19
|
import { getPSP34TransferExtrinsic } from '@subwallet/extension-base/koni/api/tokens/wasm';
|
|
20
20
|
import { createXcmExtrinsic } from '@subwallet/extension-base/koni/api/xcm';
|
|
21
21
|
import { _getChainNativeTokenBasicInfo, _getContractAddressOfToken, _getEvmChainId, _getSubstrateGenesisHash, _getTokenMinAmount, _isAssetSmartContractNft, _isChainEvmCompatible, _isCustomAsset, _isLocalToken, _isNativeToken, _isTokenEvmSmartContract } from '@subwallet/extension-base/services/chain-service/utils';
|
|
22
22
|
import { EXTENSION_REQUEST_URL } from '@subwallet/extension-base/services/request-service/constants';
|
|
23
|
+
import { reformatAddress } from '@subwallet/extension-base/utils';
|
|
24
|
+
import { convertSubjectInfoToAddresses } from '@subwallet/extension-base/utils/address';
|
|
23
25
|
import { createTransactionFromRLP, signatureToHex } from '@subwallet/extension-base/utils/eth';
|
|
24
26
|
import { parseContractInput, parseEvmRlp } from '@subwallet/extension-base/utils/eth/parseTransaction';
|
|
25
27
|
import { createPair } from '@subwallet/keyring';
|
|
26
28
|
import { keyring } from '@subwallet/ui-keyring';
|
|
27
|
-
import { accounts as accountsObservable } from '@subwallet/ui-keyring/observable/accounts';
|
|
28
29
|
import BigN from 'bignumber.js';
|
|
29
30
|
import { Transaction } from 'ethereumjs-tx';
|
|
30
31
|
import { TypeRegistry } from '@polkadot/types';
|
|
31
|
-
import { assert, BN, hexStripPrefix, hexToU8a, isAscii, isHex, u8aToHex, u8aToString } from '@polkadot/util';
|
|
32
|
-
import { base64Decode, isEthereumAddress, jsonDecrypt, keyExtractSuri, mnemonicGenerate, mnemonicValidate } from '@polkadot/util-crypto';
|
|
32
|
+
import { assert, BN, BN_ZERO, hexStripPrefix, hexToU8a, isAscii, isHex, u8aToHex, u8aToString } from '@polkadot/util';
|
|
33
|
+
import { base64Decode, decodeAddress, isAddress, isEthereumAddress, jsonDecrypt, keyExtractSuri, mnemonicGenerate, mnemonicValidate } from '@polkadot/util-crypto';
|
|
33
34
|
const ETH_DERIVE_DEFAULT = '/m/44\'/60\'/0\'/0/0';
|
|
34
35
|
function getSuri(seed, type) {
|
|
35
36
|
return type === 'ethereum' ? `${seed}${ETH_DERIVE_DEFAULT}` : seed;
|
|
@@ -163,7 +164,8 @@ export default class KoniExtension {
|
|
|
163
164
|
// FIXME This looks very much like what we have in Tabs
|
|
164
165
|
accountsSubscribe(id, port) {
|
|
165
166
|
const cb = createSubscription(id, port);
|
|
166
|
-
const
|
|
167
|
+
const accountSubject = this.#koniState.keyringService.accountSubject;
|
|
168
|
+
const subscription = accountSubject.subscribe(accounts => cb(transformAccounts(accounts)));
|
|
167
169
|
port.onDisconnect.addListener(() => {
|
|
168
170
|
this.cancelSubscription(id);
|
|
169
171
|
subscription.unsubscribe();
|
|
@@ -401,35 +403,37 @@ export default class KoniExtension {
|
|
|
401
403
|
}
|
|
402
404
|
async accountsGetAllWithCurrentAddress(id, port) {
|
|
403
405
|
const cb = createSubscription(id, port);
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
this.cancelSubscription(id);
|
|
431
|
-
});
|
|
406
|
+
const keyringService = this.#koniState.keyringService;
|
|
407
|
+
await this.#koniState.eventService.waitAccountReady;
|
|
408
|
+
const currentAccount = keyringService.currentAccount;
|
|
409
|
+
const transformedAccounts = transformAccounts(keyringService.accounts);
|
|
410
|
+
const responseData = {
|
|
411
|
+
accounts: transformedAccounts !== null && transformedAccounts !== void 0 && transformedAccounts.length ? [{
|
|
412
|
+
...ACCOUNT_ALL_JSON
|
|
413
|
+
}, ...transformedAccounts] : [],
|
|
414
|
+
currentAddress: currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.address,
|
|
415
|
+
currentGenesisHash: currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.currentGenesisHash
|
|
416
|
+
};
|
|
417
|
+
const subscriptionAccounts = keyringService.accountSubject.subscribe(storedAccounts => {
|
|
418
|
+
const transformedAccounts = transformAccounts(storedAccounts);
|
|
419
|
+
responseData.accounts = transformedAccounts !== null && transformedAccounts !== void 0 && transformedAccounts.length ? [{
|
|
420
|
+
...ACCOUNT_ALL_JSON
|
|
421
|
+
}, ...transformedAccounts] : [];
|
|
422
|
+
cb(responseData);
|
|
423
|
+
});
|
|
424
|
+
const subscriptionCurrentAccount = keyringService.currentAccountSubject.subscribe(currentAccountData => {
|
|
425
|
+
responseData.currentAddress = currentAccountData.address;
|
|
426
|
+
responseData.currentGenesisHash = currentAccountData.currentGenesisHash;
|
|
427
|
+
cb(responseData);
|
|
428
|
+
});
|
|
429
|
+
this.createUnsubscriptionHandle(id, () => {
|
|
430
|
+
subscriptionAccounts.unsubscribe();
|
|
431
|
+
subscriptionCurrentAccount.unsubscribe();
|
|
432
432
|
});
|
|
433
|
+
port.onDisconnect.addListener(() => {
|
|
434
|
+
this.cancelSubscription(id);
|
|
435
|
+
});
|
|
436
|
+
return responseData;
|
|
433
437
|
}
|
|
434
438
|
accountsGetAll(id, port) {
|
|
435
439
|
const cb = createSubscription(id, port);
|
|
@@ -445,21 +449,66 @@ export default class KoniExtension {
|
|
|
445
449
|
});
|
|
446
450
|
return id;
|
|
447
451
|
}
|
|
448
|
-
|
|
452
|
+
subscribeAddresses(id, port) {
|
|
453
|
+
const _cb = createSubscription(id, port);
|
|
454
|
+
const subscription = this.#koniState.keyringService.addressesSubject.subscribe(subjectInfo => {
|
|
455
|
+
const addresses = convertSubjectInfoToAddresses(subjectInfo);
|
|
456
|
+
_cb({
|
|
457
|
+
addresses: addresses
|
|
458
|
+
});
|
|
459
|
+
});
|
|
460
|
+
this.createUnsubscriptionHandle(id, subscription.unsubscribe);
|
|
461
|
+
port.onDisconnect.addListener(() => {
|
|
462
|
+
this.cancelSubscription(id);
|
|
463
|
+
});
|
|
464
|
+
const subjectInfo = this.#koniState.keyringService.addresses;
|
|
465
|
+
return {
|
|
466
|
+
addresses: convertSubjectInfoToAddresses(subjectInfo)
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
saveRecentAccount({
|
|
449
470
|
accountId
|
|
450
471
|
}) {
|
|
451
|
-
|
|
472
|
+
if (isAddress(accountId)) {
|
|
473
|
+
const address = reformatAddress(accountId);
|
|
474
|
+
const account = keyring.getAccount(address);
|
|
475
|
+
const contact = keyring.getAddress(address);
|
|
476
|
+
return account || contact || {
|
|
477
|
+
...keyring.saveRecent(accountId).json,
|
|
478
|
+
publicKey: decodeAddress(address)
|
|
479
|
+
};
|
|
480
|
+
} else {
|
|
481
|
+
throw Error('Invalid address');
|
|
482
|
+
}
|
|
452
483
|
}
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
484
|
+
editContactAccount({
|
|
485
|
+
address,
|
|
486
|
+
meta
|
|
487
|
+
}) {
|
|
488
|
+
if (isAddress(address)) {
|
|
489
|
+
const _address = reformatAddress(address);
|
|
490
|
+
keyring.saveAddress(_address, meta);
|
|
491
|
+
return true;
|
|
492
|
+
} else {
|
|
493
|
+
throw Error('Invalid address');
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
deleteContactAccount({
|
|
497
|
+
address
|
|
498
|
+
}) {
|
|
499
|
+
if (isAddress(address)) {
|
|
500
|
+
const _address = reformatAddress(address);
|
|
501
|
+
keyring.forgetAddress(_address);
|
|
502
|
+
return true;
|
|
503
|
+
} else {
|
|
504
|
+
throw Error('Invalid address');
|
|
505
|
+
}
|
|
457
506
|
}
|
|
458
507
|
_getAuthListV2() {
|
|
508
|
+
const keyringService = this.#koniState.keyringService;
|
|
459
509
|
return new Promise((resolve, reject) => {
|
|
460
510
|
this.#koniState.getAuthorize(rs => {
|
|
461
|
-
const
|
|
462
|
-
const addressList = Object.keys(accounts);
|
|
511
|
+
const addressList = Object.keys(keyringService.accounts);
|
|
463
512
|
const urlList = Object.keys(rs);
|
|
464
513
|
if (Object.keys(rs[urlList[0]].isAllowedMap).toString() !== addressList.toString()) {
|
|
465
514
|
urlList.forEach(url => {
|
|
@@ -573,7 +622,7 @@ export default class KoniExtension {
|
|
|
573
622
|
return true;
|
|
574
623
|
}
|
|
575
624
|
getNonReadonlyAccounts() {
|
|
576
|
-
const storedAccounts =
|
|
625
|
+
const storedAccounts = this.#koniState.keyringService.accounts;
|
|
577
626
|
const transformedAccounts = transformAccounts(storedAccounts);
|
|
578
627
|
return transformedAccounts.filter(a => !a.isReadOnly).map(a => a.address);
|
|
579
628
|
}
|
|
@@ -806,8 +855,12 @@ export default class KoniExtension {
|
|
|
806
855
|
} else {
|
|
807
856
|
accountInfo.address = address;
|
|
808
857
|
if (address !== ALL_ACCOUNT_KEY) {
|
|
809
|
-
|
|
810
|
-
|
|
858
|
+
try {
|
|
859
|
+
const currentKeyPair = keyring.getPair(address);
|
|
860
|
+
accountInfo.currentGenesisHash = (currentKeyPair === null || currentKeyPair === void 0 ? void 0 : currentKeyPair.meta.genesisHash) || ALL_GENESIS_HASH;
|
|
861
|
+
} catch {
|
|
862
|
+
accountInfo.currentGenesisHash = ALL_GENESIS_HASH;
|
|
863
|
+
}
|
|
811
864
|
} else {
|
|
812
865
|
accountInfo.currentGenesisHash = accountInfo.allGenesisHash || ALL_GENESIS_HASH;
|
|
813
866
|
}
|
|
@@ -817,18 +870,15 @@ export default class KoniExtension {
|
|
|
817
870
|
});
|
|
818
871
|
}
|
|
819
872
|
updateCurrentAccountAddress(address) {
|
|
820
|
-
this._saveCurrentAccountAddress(address
|
|
821
|
-
this.triggerAccountsSubscription();
|
|
822
|
-
});
|
|
873
|
+
this._saveCurrentAccountAddress(address);
|
|
823
874
|
return true;
|
|
824
875
|
}
|
|
825
|
-
saveCurrentAccountAddress(data
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
876
|
+
async saveCurrentAccountAddress(data) {
|
|
877
|
+
return new Promise(resolve => {
|
|
878
|
+
this._saveCurrentAccountAddress(data.address, currentInfo => {
|
|
879
|
+
resolve(currentInfo);
|
|
880
|
+
});
|
|
830
881
|
});
|
|
831
|
-
return true;
|
|
832
882
|
}
|
|
833
883
|
async getAssetSetting() {
|
|
834
884
|
return this.#koniState.chainService.getAssetSettings();
|
|
@@ -845,6 +895,7 @@ export default class KoniExtension {
|
|
|
845
895
|
async updateAssetSetting(params) {
|
|
846
896
|
try {
|
|
847
897
|
await this.#koniState.chainService.updateAssetSetting(params.tokenSlug, params.assetSetting);
|
|
898
|
+
this.#koniState.eventService.emit('asset.updateState', params.tokenSlug);
|
|
848
899
|
return true;
|
|
849
900
|
} catch (e) {
|
|
850
901
|
console.error('Error updating asset setting', e);
|
|
@@ -1272,6 +1323,14 @@ export default class KoniExtension {
|
|
|
1272
1323
|
});
|
|
1273
1324
|
return historySubject.getValue();
|
|
1274
1325
|
}
|
|
1326
|
+
addContact(to) {
|
|
1327
|
+
const toAddress = reformatAddress(to);
|
|
1328
|
+
const account = keyring.getAccount(toAddress);
|
|
1329
|
+
const contact = keyring.getAddress(toAddress);
|
|
1330
|
+
if (!account && (!contact || contact.meta.isRecent)) {
|
|
1331
|
+
keyring.saveAddress(toAddress, {});
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1275
1334
|
validateTransfer(tokenSlug, from, to, value, transferAll) {
|
|
1276
1335
|
const errors = [];
|
|
1277
1336
|
const keypair = keyring.getPair(from);
|
|
@@ -1322,7 +1381,6 @@ export default class KoniExtension {
|
|
|
1322
1381
|
|
|
1323
1382
|
// Get native token amount
|
|
1324
1383
|
const freeBalance = await this.#koniState.balanceService.getTokenFreeBalance(from, networkKey, tokenSlug);
|
|
1325
|
-
let edAsWarning = false;
|
|
1326
1384
|
if (isEthereumAddress(from) && isEthereumAddress(to)) {
|
|
1327
1385
|
chainType = ChainType.EVM;
|
|
1328
1386
|
const txVal = transferAll ? freeBalance.value : value || '0';
|
|
@@ -1332,7 +1390,6 @@ export default class KoniExtension {
|
|
|
1332
1390
|
[transaction, transferAmount.value] = await getERC20TransactionObject(_getContractAddressOfToken(tokenInfo), chainInfo, from, to, txVal, !!transferAll, evmApiMap);
|
|
1333
1391
|
} else {
|
|
1334
1392
|
[transaction, transferAmount.value] = await getEVMTransactionObject(chainInfo, to, txVal, !!transferAll, evmApiMap);
|
|
1335
|
-
edAsWarning = true;
|
|
1336
1393
|
}
|
|
1337
1394
|
} else {
|
|
1338
1395
|
const substrateApi = this.#koniState.getSubstrateApi(networkKey);
|
|
@@ -1345,9 +1402,9 @@ export default class KoniExtension {
|
|
|
1345
1402
|
to: to,
|
|
1346
1403
|
substrateApi
|
|
1347
1404
|
});
|
|
1348
|
-
edAsWarning = true;
|
|
1349
1405
|
}
|
|
1350
1406
|
const transferNativeAmount = isTransferNativeToken ? transferAmount.value : '0';
|
|
1407
|
+
this.addContact(to);
|
|
1351
1408
|
return this.#koniState.transactionService.handleTransaction({
|
|
1352
1409
|
errors,
|
|
1353
1410
|
warnings,
|
|
@@ -1360,7 +1417,7 @@ export default class KoniExtension {
|
|
|
1360
1417
|
extrinsicType: isTransferNativeToken ? ExtrinsicType.TRANSFER_BALANCE : ExtrinsicType.TRANSFER_TOKEN,
|
|
1361
1418
|
ignoreWarnings: transferAll,
|
|
1362
1419
|
isTransferAll: transferAll,
|
|
1363
|
-
edAsWarning:
|
|
1420
|
+
edAsWarning: isTransferNativeToken
|
|
1364
1421
|
});
|
|
1365
1422
|
}
|
|
1366
1423
|
validateCrossChainTransfer(destinationNetworkKey, sendingTokenSlug, sender, sendingValue) {
|
|
@@ -1400,6 +1457,7 @@ export default class KoniExtension {
|
|
|
1400
1457
|
substrateApi
|
|
1401
1458
|
});
|
|
1402
1459
|
}
|
|
1460
|
+
this.addContact(to);
|
|
1403
1461
|
return await this.#koniState.transactionService.handleTransaction({
|
|
1404
1462
|
url: EXTENSION_REQUEST_URL,
|
|
1405
1463
|
address: from,
|
|
@@ -1409,6 +1467,7 @@ export default class KoniExtension {
|
|
|
1409
1467
|
extrinsicType: ExtrinsicType.TRANSFER_XCM,
|
|
1410
1468
|
chainType: ChainType.SUBSTRATE,
|
|
1411
1469
|
transferNativeAmount: _isNativeToken(originTokenInfo) ? value : '0',
|
|
1470
|
+
isTransferAll: inputData.transferAll,
|
|
1412
1471
|
errors
|
|
1413
1472
|
});
|
|
1414
1473
|
}
|
|
@@ -1422,6 +1481,7 @@ export default class KoniExtension {
|
|
|
1422
1481
|
const contractAddress = params.contractAddress;
|
|
1423
1482
|
const tokenId = params.tokenId;
|
|
1424
1483
|
const transaction = await getERC721Transaction(this.#koniState.getEvmApi(networkKey), contractAddress, senderAddress, recipientAddress, tokenId);
|
|
1484
|
+
this.addContact(recipientAddress);
|
|
1425
1485
|
return await this.#koniState.transactionService.handleTransaction({
|
|
1426
1486
|
address: senderAddress,
|
|
1427
1487
|
chain: networkKey,
|
|
@@ -1497,6 +1557,71 @@ export default class KoniExtension {
|
|
|
1497
1557
|
}) {
|
|
1498
1558
|
return await this.#koniState.balanceService.getTokenFreeBalance(address, networkKey, token);
|
|
1499
1559
|
}
|
|
1560
|
+
async transferGetMaxTransferable({
|
|
1561
|
+
address,
|
|
1562
|
+
destChain,
|
|
1563
|
+
isXcmTransfer,
|
|
1564
|
+
networkKey,
|
|
1565
|
+
token
|
|
1566
|
+
}) {
|
|
1567
|
+
const freeBalance = await this.#koniState.balanceService.getTokenFreeBalance(address, networkKey, token);
|
|
1568
|
+
const tokenInfo = token ? this.#koniState.chainService.getAssetBySlug(token) : this.#koniState.chainService.getNativeTokenInfo(networkKey);
|
|
1569
|
+
if (!_isNativeToken(tokenInfo)) {
|
|
1570
|
+
return freeBalance;
|
|
1571
|
+
} else {
|
|
1572
|
+
const substrateApi = this.#koniState.chainService.getSubstrateApi(networkKey);
|
|
1573
|
+
let estimatedFee;
|
|
1574
|
+
let maxTransferable = new BN(freeBalance.value);
|
|
1575
|
+
if (isXcmTransfer) {
|
|
1576
|
+
const chainInfoMap = this.#koniState.chainService.getChainInfoMap();
|
|
1577
|
+
const destinationTokenInfo = this.#koniState.getXcmEqualAssetByChain(destChain, tokenInfo.slug);
|
|
1578
|
+
if (!destinationTokenInfo) {
|
|
1579
|
+
estimatedFee = '0';
|
|
1580
|
+
} else {
|
|
1581
|
+
maxTransferable = maxTransferable.sub(new BN(tokenInfo.minAmount || '0'));
|
|
1582
|
+
const mockTx = await createXcmExtrinsic({
|
|
1583
|
+
chainInfoMap,
|
|
1584
|
+
destinationTokenInfo,
|
|
1585
|
+
originTokenInfo: tokenInfo,
|
|
1586
|
+
recipient: address,
|
|
1587
|
+
sendingValue: '0',
|
|
1588
|
+
substrateApi
|
|
1589
|
+
});
|
|
1590
|
+
try {
|
|
1591
|
+
var _paymentInfo$partialF;
|
|
1592
|
+
const paymentInfo = await mockTx.paymentInfo(address);
|
|
1593
|
+
estimatedFee = (paymentInfo === null || paymentInfo === void 0 ? void 0 : (_paymentInfo$partialF = paymentInfo.partialFee) === null || _paymentInfo$partialF === void 0 ? void 0 : _paymentInfo$partialF.toString()) || '0';
|
|
1594
|
+
} catch (e) {
|
|
1595
|
+
estimatedFee = '0';
|
|
1596
|
+
console.warn('Error estimating fee', e);
|
|
1597
|
+
}
|
|
1598
|
+
}
|
|
1599
|
+
} else {
|
|
1600
|
+
const [mockTx] = await createTransferExtrinsic({
|
|
1601
|
+
from: address,
|
|
1602
|
+
networkKey,
|
|
1603
|
+
substrateApi,
|
|
1604
|
+
to: address,
|
|
1605
|
+
tokenInfo,
|
|
1606
|
+
transferAll: true,
|
|
1607
|
+
value: '0'
|
|
1608
|
+
});
|
|
1609
|
+
try {
|
|
1610
|
+
var _paymentInfo$partialF2;
|
|
1611
|
+
const paymentInfo = await (mockTx === null || mockTx === void 0 ? void 0 : mockTx.paymentInfo(address));
|
|
1612
|
+
estimatedFee = (paymentInfo === null || paymentInfo === void 0 ? void 0 : (_paymentInfo$partialF2 = paymentInfo.partialFee) === null || _paymentInfo$partialF2 === void 0 ? void 0 : _paymentInfo$partialF2.toString()) || '0';
|
|
1613
|
+
} catch (e) {
|
|
1614
|
+
estimatedFee = '0';
|
|
1615
|
+
console.warn('Error estimating fee', e);
|
|
1616
|
+
}
|
|
1617
|
+
}
|
|
1618
|
+
maxTransferable = maxTransferable.sub(new BN(estimatedFee));
|
|
1619
|
+
return {
|
|
1620
|
+
...freeBalance,
|
|
1621
|
+
value: maxTransferable.gt(BN_ZERO) ? maxTransferable.toString() || '0' : '0'
|
|
1622
|
+
};
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1500
1625
|
async subscribeAddressFreeBalance({
|
|
1501
1626
|
address,
|
|
1502
1627
|
networkKey,
|
|
@@ -1543,6 +1668,7 @@ export default class KoniExtension {
|
|
|
1543
1668
|
const networkKey = params === null || params === void 0 ? void 0 : params.networkKey;
|
|
1544
1669
|
const apiProps = this.#koniState.getSubstrateApi(networkKey);
|
|
1545
1670
|
const extrinsic = !isPSP34 ? getNftTransferExtrinsic(networkKey, apiProps, senderAddress, recipientAddress, params || {}) : await getPSP34TransferExtrinsic(networkKey, apiProps, senderAddress, recipientAddress, params || {});
|
|
1671
|
+
this.addContact(recipientAddress);
|
|
1546
1672
|
const rs = await this.#koniState.transactionService.handleTransaction({
|
|
1547
1673
|
address: senderAddress,
|
|
1548
1674
|
chain: networkKey,
|
|
@@ -1576,23 +1702,6 @@ export default class KoniExtension {
|
|
|
1576
1702
|
meta: pair.meta
|
|
1577
1703
|
};
|
|
1578
1704
|
}
|
|
1579
|
-
|
|
1580
|
-
// private async isInWalletAccount (address?: string) {
|
|
1581
|
-
// return new Promise((resolve) => {
|
|
1582
|
-
// if (address) {
|
|
1583
|
-
// accountsObservable.subject.subscribe((storedAccounts: SubjectInfo): void => {
|
|
1584
|
-
// if (storedAccounts[address]) {
|
|
1585
|
-
// resolve(true);
|
|
1586
|
-
// }
|
|
1587
|
-
//
|
|
1588
|
-
// resolve(false);
|
|
1589
|
-
// });
|
|
1590
|
-
// } else {
|
|
1591
|
-
// resolve(false);
|
|
1592
|
-
// }
|
|
1593
|
-
// });
|
|
1594
|
-
// }
|
|
1595
|
-
|
|
1596
1705
|
accountsTie2({
|
|
1597
1706
|
address,
|
|
1598
1707
|
genesisHash
|
|
@@ -2038,6 +2147,7 @@ export default class KoniExtension {
|
|
|
2038
2147
|
}
|
|
2039
2148
|
async getNominationPoolOptions(chain) {
|
|
2040
2149
|
const substrateApi = this.#koniState.getSubstrateApi(chain);
|
|
2150
|
+
console.log('chain', chain);
|
|
2041
2151
|
return await getNominationPoolsInfo(chain, substrateApi);
|
|
2042
2152
|
}
|
|
2043
2153
|
async submitBonding(inputData) {
|
|
@@ -2048,12 +2158,15 @@ export default class KoniExtension {
|
|
|
2048
2158
|
nominatorMetadata,
|
|
2049
2159
|
selectedValidators
|
|
2050
2160
|
} = inputData;
|
|
2051
|
-
if (!amount || !selectedValidators) {
|
|
2052
|
-
// Todo: Check and return error here
|
|
2053
|
-
|
|
2054
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INVALID_PARAMS)]);
|
|
2055
|
-
}
|
|
2056
2161
|
const chainInfo = this.#koniState.getChainInfo(chain);
|
|
2162
|
+
const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, StakingType.NOMINATED);
|
|
2163
|
+
if (!chainStakingMetadata) {
|
|
2164
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INTERNAL_ERROR)]);
|
|
2165
|
+
}
|
|
2166
|
+
const bondingValidation = validateBondingCondition(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata);
|
|
2167
|
+
if (!amount || !selectedValidators || bondingValidation.length > 0) {
|
|
2168
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors(bondingValidation);
|
|
2169
|
+
}
|
|
2057
2170
|
const substrateApi = this.#koniState.getSubstrateApi(chain);
|
|
2058
2171
|
const extrinsic = await getBondingExtrinsic(chainInfo, amount, selectedValidators, substrateApi, address, nominatorMetadata);
|
|
2059
2172
|
console.log('Bonding extrinsic: ', chain, extrinsic.toHex());
|
|
@@ -2064,7 +2177,8 @@ export default class KoniExtension {
|
|
|
2064
2177
|
data: inputData,
|
|
2065
2178
|
extrinsicType: ExtrinsicType.STAKING_BOND,
|
|
2066
2179
|
transaction: extrinsic,
|
|
2067
|
-
url: EXTENSION_REQUEST_URL
|
|
2180
|
+
url: EXTENSION_REQUEST_URL,
|
|
2181
|
+
transferNativeAmount: amount
|
|
2068
2182
|
});
|
|
2069
2183
|
}
|
|
2070
2184
|
async submitUnbonding(inputData) {
|
|
@@ -2074,12 +2188,17 @@ export default class KoniExtension {
|
|
|
2074
2188
|
nominatorMetadata,
|
|
2075
2189
|
validatorAddress
|
|
2076
2190
|
} = inputData;
|
|
2077
|
-
|
|
2078
|
-
|
|
2191
|
+
const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, StakingType.NOMINATED);
|
|
2192
|
+
if (!chainStakingMetadata || !nominatorMetadata) {
|
|
2193
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INTERNAL_ERROR)]);
|
|
2194
|
+
}
|
|
2195
|
+
const unbondingValidation = validateUnbondingCondition(nominatorMetadata, amount, chain, chainStakingMetadata, validatorAddress);
|
|
2196
|
+
if (!amount || unbondingValidation.length > 0) {
|
|
2197
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors(unbondingValidation);
|
|
2079
2198
|
}
|
|
2080
2199
|
const substrateApi = this.#koniState.getSubstrateApi(chain);
|
|
2081
2200
|
const extrinsic = await getUnbondingExtrinsic(nominatorMetadata, amount, chain, substrateApi, validatorAddress);
|
|
2082
|
-
console.log('
|
|
2201
|
+
console.log('Unbonding extrinsic: ', extrinsic.toHex());
|
|
2083
2202
|
return await this.#koniState.transactionService.handleTransaction({
|
|
2084
2203
|
address: nominatorMetadata.address,
|
|
2085
2204
|
chain: chain,
|
|
@@ -2153,7 +2272,7 @@ export default class KoniExtension {
|
|
|
2153
2272
|
chainType: ChainType.SUBSTRATE
|
|
2154
2273
|
});
|
|
2155
2274
|
}
|
|
2156
|
-
async
|
|
2275
|
+
async submitPoolBonding(inputData) {
|
|
2157
2276
|
const {
|
|
2158
2277
|
address,
|
|
2159
2278
|
amount,
|
|
@@ -2161,8 +2280,15 @@ export default class KoniExtension {
|
|
|
2161
2280
|
nominatorMetadata,
|
|
2162
2281
|
selectedPool
|
|
2163
2282
|
} = inputData;
|
|
2164
|
-
|
|
2165
|
-
|
|
2283
|
+
const chainInfo = this.#koniState.getChainInfo(chain);
|
|
2284
|
+
const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, StakingType.NOMINATED);
|
|
2285
|
+
if (!chainStakingMetadata) {
|
|
2286
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INTERNAL_ERROR)]);
|
|
2287
|
+
}
|
|
2288
|
+
const bondingValidation = validatePoolBondingCondition(chainInfo, amount, selectedPool, address, chainStakingMetadata, nominatorMetadata);
|
|
2289
|
+
if (!amount || bondingValidation.length > 0) {
|
|
2290
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors(bondingValidation);
|
|
2291
|
+
}
|
|
2166
2292
|
const substrateApi = this.#koniState.getSubstrateApi(chain);
|
|
2167
2293
|
const extrinsic = await getPoolingBondingExtrinsic(substrateApi, amount, selectedPool.id, nominatorMetadata);
|
|
2168
2294
|
console.log('Join nomination pool extrinsic', extrinsic.toHex());
|
|
@@ -2181,6 +2307,14 @@ export default class KoniExtension {
|
|
|
2181
2307
|
chain,
|
|
2182
2308
|
nominatorMetadata
|
|
2183
2309
|
} = inputData;
|
|
2310
|
+
const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, StakingType.NOMINATED);
|
|
2311
|
+
if (!chainStakingMetadata || !nominatorMetadata) {
|
|
2312
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new TransactionError(BasicTxErrorType.INTERNAL_ERROR)]);
|
|
2313
|
+
}
|
|
2314
|
+
const unbondingValidation = validateRelayUnbondingCondition(amount, chainStakingMetadata, nominatorMetadata);
|
|
2315
|
+
if (!amount || unbondingValidation.length > 0) {
|
|
2316
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors(unbondingValidation);
|
|
2317
|
+
}
|
|
2184
2318
|
const substrateApi = this.#koniState.getSubstrateApi(chain);
|
|
2185
2319
|
const extrinsic = await getPoolingUnbondingExtrinsic(substrateApi, amount, nominatorMetadata);
|
|
2186
2320
|
console.log('Nomination pool unbond extrinsic', extrinsic.toHex());
|
|
@@ -2670,6 +2804,23 @@ export default class KoniExtension {
|
|
|
2670
2804
|
});
|
|
2671
2805
|
return notificationSubject.value;
|
|
2672
2806
|
}
|
|
2807
|
+
async reloadCron({
|
|
2808
|
+
data
|
|
2809
|
+
}) {
|
|
2810
|
+
if (data === 'nft') {
|
|
2811
|
+
return await this.#koniState.reloadNft();
|
|
2812
|
+
} else if (data === 'staking') {
|
|
2813
|
+
return await this.#koniState.reloadStaking();
|
|
2814
|
+
}
|
|
2815
|
+
return Promise.resolve(false);
|
|
2816
|
+
}
|
|
2817
|
+
async getLogoMap() {
|
|
2818
|
+
const [chainLogoMap, assetLogoMap] = await Promise.all([this.#koniState.chainService.getChainLogoMap(), this.#koniState.chainService.getAssetLogoMap()]);
|
|
2819
|
+
return {
|
|
2820
|
+
chainLogoMap,
|
|
2821
|
+
assetLogoMap
|
|
2822
|
+
};
|
|
2823
|
+
}
|
|
2673
2824
|
|
|
2674
2825
|
// --------------------------------------------------------------
|
|
2675
2826
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
@@ -2688,8 +2839,6 @@ export default class KoniExtension {
|
|
|
2688
2839
|
return this.accountsCreateSuri(request);
|
|
2689
2840
|
case 'pri(accounts.changePassword)':
|
|
2690
2841
|
return this.accountsChangePassword(request);
|
|
2691
|
-
case 'pri(accounts.edit)':
|
|
2692
|
-
return this.accountsEdit(request);
|
|
2693
2842
|
case 'pri(accounts.export)':
|
|
2694
2843
|
return this.accountsExport(request);
|
|
2695
2844
|
case 'pri(accounts.show)':
|
|
@@ -2758,40 +2907,6 @@ export default class KoniExtension {
|
|
|
2758
2907
|
return this.getAuthListV2();
|
|
2759
2908
|
case 'pri(authorize.toggle)':
|
|
2760
2909
|
return this.toggleAuthorization2(request);
|
|
2761
|
-
case 'pri(accounts.create.suriV2)':
|
|
2762
|
-
return await this.accountsCreateSuriV2(request);
|
|
2763
|
-
case 'pri(accounts.forget)':
|
|
2764
|
-
return await this.accountsForgetOverride(request);
|
|
2765
|
-
case 'pri(accounts.create.externalV2)':
|
|
2766
|
-
return await this.accountsCreateExternalV2(request);
|
|
2767
|
-
case 'pri(accounts.create.hardwareV2)':
|
|
2768
|
-
return await this.accountsCreateHardwareV2(request);
|
|
2769
|
-
case 'pri(accounts.create.hardwareMultiple)':
|
|
2770
|
-
return await this.accountsCreateHardwareMultiple(request);
|
|
2771
|
-
case 'pri(accounts.create.withSecret)':
|
|
2772
|
-
return await this.accountsCreateWithSecret(request);
|
|
2773
|
-
case 'pri(seed.createV2)':
|
|
2774
|
-
return this.seedCreateV2(request);
|
|
2775
|
-
case 'pri(seed.validateV2)':
|
|
2776
|
-
return this.seedValidateV2(request);
|
|
2777
|
-
case 'pri(privateKey.validateV2)':
|
|
2778
|
-
return this.metamaskPrivateKeyValidateV2(request);
|
|
2779
|
-
case 'pri(accounts.exportPrivateKey)':
|
|
2780
|
-
return this.accountExportPrivateKey(request);
|
|
2781
|
-
case 'pri(accounts.checkPublicAndSecretKey)':
|
|
2782
|
-
return this.checkPublicAndSecretKey(request);
|
|
2783
|
-
case 'pri(accounts.subscribeWithCurrentAddress)':
|
|
2784
|
-
return await this.accountsGetAllWithCurrentAddress(id, port);
|
|
2785
|
-
case 'pri(accounts.subscribeAccountsInputAddress)':
|
|
2786
|
-
return this.accountsGetAll(id, port);
|
|
2787
|
-
case 'pri(accounts.saveRecent)':
|
|
2788
|
-
return this.saveRecentAccountId(request);
|
|
2789
|
-
case 'pri(accounts.triggerSubscription)':
|
|
2790
|
-
return this.triggerAccountsSubscription();
|
|
2791
|
-
case 'pri(currentAccount.saveAddress)':
|
|
2792
|
-
return this.saveCurrentAccountAddress(request, id, port);
|
|
2793
|
-
case 'pri(accounts.updateCurrentAddress)':
|
|
2794
|
-
return this.updateCurrentAccountAddress(request);
|
|
2795
2910
|
case 'pri(settings.changeBalancesVisibility)':
|
|
2796
2911
|
return this.toggleBalancesVisibility(id, port);
|
|
2797
2912
|
case 'pri(settings.subscribe)':
|
|
@@ -2841,6 +2956,65 @@ export default class KoniExtension {
|
|
|
2841
2956
|
case 'pri(transaction.history.getSubscription)':
|
|
2842
2957
|
return await this.subscribeHistory(id, port);
|
|
2843
2958
|
|
|
2959
|
+
/// Account management
|
|
2960
|
+
// Add account
|
|
2961
|
+
case 'pri(accounts.create.suriV2)':
|
|
2962
|
+
return await this.accountsCreateSuriV2(request);
|
|
2963
|
+
case 'pri(accounts.create.externalV2)':
|
|
2964
|
+
return await this.accountsCreateExternalV2(request);
|
|
2965
|
+
case 'pri(accounts.create.hardwareV2)':
|
|
2966
|
+
return await this.accountsCreateHardwareV2(request);
|
|
2967
|
+
case 'pri(accounts.create.hardwareMultiple)':
|
|
2968
|
+
return await this.accountsCreateHardwareMultiple(request);
|
|
2969
|
+
case 'pri(accounts.create.withSecret)':
|
|
2970
|
+
return await this.accountsCreateWithSecret(request);
|
|
2971
|
+
case 'pri(seed.createV2)':
|
|
2972
|
+
return this.seedCreateV2(request);
|
|
2973
|
+
|
|
2974
|
+
// Remove account
|
|
2975
|
+
case 'pri(accounts.forget)':
|
|
2976
|
+
return await this.accountsForgetOverride(request);
|
|
2977
|
+
|
|
2978
|
+
// Validate account
|
|
2979
|
+
case 'pri(seed.validateV2)':
|
|
2980
|
+
return this.seedValidateV2(request);
|
|
2981
|
+
case 'pri(privateKey.validateV2)':
|
|
2982
|
+
return this.metamaskPrivateKeyValidateV2(request);
|
|
2983
|
+
case 'pri(accounts.checkPublicAndSecretKey)':
|
|
2984
|
+
return this.checkPublicAndSecretKey(request);
|
|
2985
|
+
|
|
2986
|
+
// Export account
|
|
2987
|
+
case 'pri(accounts.exportPrivateKey)':
|
|
2988
|
+
return this.accountExportPrivateKey(request);
|
|
2989
|
+
|
|
2990
|
+
// Subscribe account
|
|
2991
|
+
case 'pri(accounts.subscribeWithCurrentAddress)':
|
|
2992
|
+
return await this.accountsGetAllWithCurrentAddress(id, port);
|
|
2993
|
+
case 'pri(accounts.subscribeAccountsInputAddress)':
|
|
2994
|
+
return this.accountsGetAll(id, port);
|
|
2995
|
+
|
|
2996
|
+
// Save current account
|
|
2997
|
+
case 'pri(currentAccount.saveAddress)':
|
|
2998
|
+
return await this.saveCurrentAccountAddress(request);
|
|
2999
|
+
case 'pri(accounts.updateCurrentAddress)':
|
|
3000
|
+
return this.updateCurrentAccountAddress(request);
|
|
3001
|
+
|
|
3002
|
+
// Edit account
|
|
3003
|
+
case 'pri(accounts.edit)':
|
|
3004
|
+
return this.accountsEdit(request);
|
|
3005
|
+
|
|
3006
|
+
// Save contact address
|
|
3007
|
+
case 'pri(accounts.saveRecent)':
|
|
3008
|
+
return this.saveRecentAccount(request);
|
|
3009
|
+
case 'pri(accounts.editContact)':
|
|
3010
|
+
return this.editContactAccount(request);
|
|
3011
|
+
case 'pri(accounts.deleteContact)':
|
|
3012
|
+
return this.deleteContactAccount(request);
|
|
3013
|
+
|
|
3014
|
+
// Subscribe address
|
|
3015
|
+
case 'pri(accounts.subscribeAddresses)':
|
|
3016
|
+
return this.subscribeAddresses(id, port);
|
|
3017
|
+
|
|
2844
3018
|
// ChainService
|
|
2845
3019
|
case 'pri(chainService.subscribeChainInfoMap)':
|
|
2846
3020
|
return this.subscribeChainInfoMap(id, port);
|
|
@@ -2884,6 +3058,8 @@ export default class KoniExtension {
|
|
|
2884
3058
|
return await this.transferCheckSupporting(request);
|
|
2885
3059
|
case 'pri(transfer.getExistentialDeposit)':
|
|
2886
3060
|
return this.transferGetExistentialDeposit(request);
|
|
3061
|
+
case 'pri(transfer.getMaxTransferable)':
|
|
3062
|
+
return this.transferGetMaxTransferable(request);
|
|
2887
3063
|
case 'pri(freeBalance.get)':
|
|
2888
3064
|
return this.getAddressFreeBalance(request);
|
|
2889
3065
|
case 'pri(freeBalance.subscribe)':
|
|
@@ -2895,7 +3071,7 @@ export default class KoniExtension {
|
|
|
2895
3071
|
case 'pri(accounts.get.meta)':
|
|
2896
3072
|
return this.getAccountMeta(request);
|
|
2897
3073
|
|
|
2898
|
-
|
|
3074
|
+
/// Send NFT
|
|
2899
3075
|
case 'pri(evmNft.submitTransaction)':
|
|
2900
3076
|
return this.evmNftSubmitTransaction(request);
|
|
2901
3077
|
case 'pri(substrateNft.submitTransaction)':
|
|
@@ -2953,7 +3129,7 @@ export default class KoniExtension {
|
|
|
2953
3129
|
case 'pri(staking.submitTuringCancelCompound)':
|
|
2954
3130
|
return await this.submitTuringCancelStakeCompound(request);
|
|
2955
3131
|
case 'pri(bonding.nominationPool.submitBonding)':
|
|
2956
|
-
return await this.
|
|
3132
|
+
return await this.submitPoolBonding(request);
|
|
2957
3133
|
case 'pri(bonding.nominationPool.submitUnbonding)':
|
|
2958
3134
|
return await this.submitPoolingUnbonding(request);
|
|
2959
3135
|
|
|
@@ -3002,6 +3178,10 @@ export default class KoniExtension {
|
|
|
3002
3178
|
// Notification
|
|
3003
3179
|
case 'pri(notifications.subscribe)':
|
|
3004
3180
|
return this.subscribeNotifications(id, port);
|
|
3181
|
+
case 'pri(cron.reload)':
|
|
3182
|
+
return await this.reloadCron(request);
|
|
3183
|
+
case 'pri(settings.getLogoMaps)':
|
|
3184
|
+
return await this.getLogoMap();
|
|
3005
3185
|
|
|
3006
3186
|
// Default
|
|
3007
3187
|
default:
|