@subwallet/extension-base 1.2.14-0 → 1.2.16-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 +6 -1
- package/cjs/core/substrate/nominationpools-pallet.js +2 -1
- package/cjs/koni/api/nft/config.js +9 -5
- package/cjs/koni/api/nft/index.js +9 -1
- package/cjs/koni/api/nft/unique_network_nft/index.js +12 -20
- package/cjs/koni/background/handlers/Extension.js +45 -7
- package/cjs/koni/background/handlers/State.js +11 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/index.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/substrate/gear.js +135 -0
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +9 -62
- package/cjs/services/balance-service/transfer/token.js +4 -3
- package/cjs/services/chain-service/constants.js +1 -0
- package/cjs/services/chain-service/handler/SubstrateApi.js +3 -1
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +21 -26
- package/cjs/services/chain-service/health-check/constants/index.js +4 -4
- package/cjs/services/chain-service/health-check/utils/asset-info.js +23 -6
- package/cjs/services/chain-service/health-check/utils/chain-info.js +25 -2
- package/cjs/services/chain-service/health-check/utils/new-utils/asset-asset-validate.js +160 -0
- package/cjs/services/chain-service/health-check/utils/new-utils/asset-validate.js +45 -0
- package/cjs/services/chain-service/health-check/utils/new-utils/chain-asset-validate.js +73 -0
- package/cjs/services/chain-service/health-check/utils/new-utils/chain-validate.js +34 -0
- package/cjs/services/chain-service/index.js +77 -3
- package/cjs/services/chain-service/types.js +1 -1
- package/cjs/services/chain-service/utils/index.js +18 -12
- package/cjs/services/earning-service/handlers/liquid-staking/acala.js +49 -19
- package/cjs/services/earning-service/service.js +3 -0
- package/cjs/services/migration-service/scripts/databases/ClearMetadataDatabase.js +16 -0
- package/cjs/services/migration-service/scripts/index.js +7 -7
- package/cjs/services/price-service/coingecko.js +57 -32
- package/cjs/services/price-service/index.js +30 -11
- package/cjs/services/transaction-service/index.js +12 -7
- package/cjs/utils/gear/combine.js +28 -0
- package/cjs/utils/gear/grc20.js +56 -49
- package/cjs/utils/gear/index.js +22 -0
- package/cjs/utils/gear/vft.js +173 -0
- package/cjs/utils/metadata.js +45 -34
- package/core/substrate/nominationpools-pallet.js +2 -1
- package/koni/api/nft/config.d.ts +1 -0
- package/koni/api/nft/config.js +3 -1
- package/koni/api/nft/index.js +9 -1
- package/koni/api/nft/unique_network_nft/index.js +12 -20
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +37 -1
- package/koni/background/handlers/State.d.ts +2 -0
- package/koni/background/handlers/State.js +11 -1
- package/package.json +44 -8
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/index.js +1 -1
- package/services/balance-service/helpers/subscribe/substrate/gear.d.ts +4 -0
- package/services/balance-service/helpers/subscribe/substrate/gear.js +123 -0
- package/services/balance-service/helpers/subscribe/substrate/index.js +10 -61
- package/services/balance-service/transfer/token.js +5 -4
- package/services/chain-service/constants.d.ts +1 -0
- package/services/chain-service/constants.js +1 -0
- package/services/chain-service/handler/SubstrateApi.d.ts +1 -1
- package/services/chain-service/handler/SubstrateApi.js +3 -1
- package/services/chain-service/handler/SubstrateChainHandler.d.ts +1 -0
- package/services/chain-service/handler/SubstrateChainHandler.js +22 -27
- package/services/chain-service/health-check/constants/index.js +4 -4
- package/services/chain-service/health-check/utils/asset-info.d.ts +1 -0
- package/services/chain-service/health-check/utils/asset-info.js +20 -4
- package/services/chain-service/health-check/utils/chain-info.d.ts +4 -2
- package/services/chain-service/health-check/utils/chain-info.js +20 -0
- package/services/chain-service/health-check/utils/new-utils/asset-asset-validate.d.ts +10 -0
- package/services/chain-service/health-check/utils/new-utils/asset-asset-validate.js +146 -0
- package/services/chain-service/health-check/utils/new-utils/asset-validate.d.ts +3 -0
- package/services/chain-service/health-check/utils/new-utils/asset-validate.js +38 -0
- package/services/chain-service/health-check/utils/new-utils/chain-asset-validate.d.ts +5 -0
- package/services/chain-service/health-check/utils/new-utils/chain-asset-validate.js +64 -0
- package/services/chain-service/health-check/utils/new-utils/chain-validate.d.ts +4 -0
- package/services/chain-service/health-check/utils/new-utils/chain-validate.js +26 -0
- package/services/chain-service/index.d.ts +4 -0
- package/services/chain-service/index.js +78 -4
- package/services/chain-service/types.d.ts +6 -0
- package/services/chain-service/types.js +1 -1
- package/services/chain-service/utils/index.d.ts +1 -0
- package/services/chain-service/utils/index.js +16 -12
- package/services/earning-service/handlers/liquid-staking/acala.js +46 -17
- package/services/earning-service/service.js +3 -0
- package/services/migration-service/scripts/databases/ClearMetadataDatabase.js +16 -0
- package/services/migration-service/scripts/index.js +7 -7
- package/services/price-service/coingecko.js +54 -32
- package/services/price-service/index.js +29 -11
- package/services/transaction-service/index.js +13 -8
- package/types/metadata.d.ts +9 -2
- package/utils/gear/combine.d.ts +10 -0
- package/utils/gear/combine.js +18 -0
- package/utils/gear/grc20.d.ts +18 -20
- package/utils/gear/grc20.js +53 -45
- package/utils/gear/index.d.ts +2 -0
- package/utils/gear/index.js +3 -1
- package/utils/gear/vft.d.ts +36 -0
- package/utils/gear/vft.js +162 -0
- package/utils/metadata.d.ts +7 -2
- package/utils/metadata.js +41 -31
|
@@ -8,7 +8,7 @@ import { _ChainState, _EvmApi, _NetworkUpsertParams, _SubstrateApi, _ValidateCus
|
|
|
8
8
|
import { CrowdloanContributionsResponse } from '@subwallet/extension-base/services/subscan-service/types';
|
|
9
9
|
import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
|
|
10
10
|
import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
11
|
-
import { BalanceJson, BuyServiceInfo, BuyTokenInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestEarlyValidateYield, RequestGetYieldPoolTargets, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseEarlyValidateYield, ResponseGetYieldPoolTargets, StorageDataInterface, SubmitYieldStepData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateYieldProcessParams, YieldPoolInfo, YieldPositionInfo, YieldValidationStatus } from '@subwallet/extension-base/types';
|
|
11
|
+
import { BalanceJson, BuyServiceInfo, BuyTokenInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestEarlyValidateYield, RequestGetYieldPoolTargets, RequestMetadataHash, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseEarlyValidateYield, ResponseGetYieldPoolTargets, ResponseMetadataHash, ResponseShortenMetadata, StorageDataInterface, SubmitYieldStepData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateYieldProcessParams, YieldPoolInfo, YieldPositionInfo, YieldValidationStatus } from '@subwallet/extension-base/types';
|
|
12
12
|
import { CommonOptimalPath } from '@subwallet/extension-base/types/service-base';
|
|
13
13
|
import { SwapErrorType, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, ValidateSwapProcessParams } from '@subwallet/extension-base/types/swap';
|
|
14
14
|
import { InjectedAccount, InjectedAccountWithMeta, MetadataDefBase } from '@subwallet/extension-inject/types';
|
|
@@ -201,10 +201,12 @@ export interface NftCollectionJson {
|
|
|
201
201
|
}
|
|
202
202
|
export interface MetadataItem {
|
|
203
203
|
genesisHash: string;
|
|
204
|
+
specName: string;
|
|
204
205
|
specVersion: string;
|
|
205
206
|
hexValue: HexString;
|
|
206
207
|
types: Record<string, Record<string, string> | string>;
|
|
207
208
|
userExtensions?: ExtDef;
|
|
209
|
+
hexV15?: HexString;
|
|
208
210
|
}
|
|
209
211
|
export interface CrowdloanItem {
|
|
210
212
|
state: APIItemState;
|
|
@@ -998,6 +1000,7 @@ export interface AddNetworkRequestExternal {
|
|
|
998
1000
|
decimals: number;
|
|
999
1001
|
};
|
|
1000
1002
|
}
|
|
1003
|
+
export declare type AddNetworkToRequestConnect = AddNetworkRequestExternal;
|
|
1001
1004
|
export interface AddTokenRequestExternal {
|
|
1002
1005
|
slug?: string;
|
|
1003
1006
|
contractAddress: string;
|
|
@@ -1756,6 +1759,8 @@ export interface KoniRequestSignatures {
|
|
|
1756
1759
|
'pri(walletConnect.notSupport.approve)': [RequestApproveWalletConnectNotSupport, boolean];
|
|
1757
1760
|
'pri(walletConnect.notSupport.reject)': [RequestRejectWalletConnectNotSupport, boolean];
|
|
1758
1761
|
'pri(metadata.find)': [RequestFindRawMetadata, ResponseFindRawMetadata];
|
|
1762
|
+
'pri(metadata.hash)': [RequestMetadataHash, ResponseMetadataHash];
|
|
1763
|
+
'pri(metadata.transaction.shorten)': [RequestShortenMetadata, ResponseShortenMetadata];
|
|
1759
1764
|
'pri(campaign.unlockDot.canMint)': [RequestUnlockDotCheckCanMint, boolean];
|
|
1760
1765
|
'pri(campaign.unlockDot.subscribe)': [RequestUnlockDotSubscribeMintedData, UnlockDotTransactionNft, UnlockDotTransactionNft];
|
|
1761
1766
|
'pri(campaign.banner.subscribe)': [null, CampaignBanner[], CampaignBanner[]];
|
|
@@ -15,7 +15,8 @@ function _getActiveStakeInNominationPool(memberInfo) {
|
|
|
15
15
|
return new _bignumber.default(memberInfo.points.toString());
|
|
16
16
|
}
|
|
17
17
|
function _getUnbondingStakeInNominationPool(memberInfo) {
|
|
18
|
-
|
|
18
|
+
const unbondingValues = Object.values(memberInfo.unbondingEras).map(unbonding => new _bignumber.default(unbonding));
|
|
19
|
+
return new _bignumber.default(Object.values(unbondingValues).reduce((a, b) => a.plus(b), new _bignumber.default(0)));
|
|
19
20
|
}
|
|
20
21
|
function _getTotalStakeInNominationPool(memberInfo) {
|
|
21
22
|
return _getActiveStakeInNominationPool(memberInfo).plus(_getUnbondingStakeInNominationPool(memberInfo));
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.W3S_IPFS = exports.VARA_SCAN_ENDPOINT = exports.UNIQUE_SCAN_ENDPOINT = exports.UNIQUE_IPFS_GATEWAY = exports.TRANSFER_CHAIN_ID = exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN = exports.SUPPORTED_NFT_NETWORKS = exports.SUBWALLET_IPFS = exports.SINGULAR_V2_ENDPOINT = exports.SINGULAR_V2_COLLECTION_ENDPOINT = exports.SINGULAR_V1_ENDPOINT = exports.SINGULAR_V1_COLLECTION_ENDPOINT = exports.RMRK_PINATA_SERVER = exports.QUARTZ_SCAN_ENDPOINT = exports.PINATA_IPFS_GATEWAY = exports.OPAL_SCAN_ENDPOINT = exports.NFT_STORAGE_GATEWAY = exports.KANARIA_EXTERNAL_SERVER = exports.KANARIA_ENDPOINT = exports.IPFS_W3S_LINK = exports.IPFS_IO = exports.IPFS_GATEWAY_4EVERLAND = exports.IPFS_FLEEK = exports.IPFS_ETH_ARAGON = exports.IPFS2_RMRK = exports.GATEWAY_IPFS_IO = exports.DWEB_LINK = exports.CLOUDFLARE_PINATA_SERVER = exports.CF_IPFS_GATEWAY = exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = exports.BIT_COUNTRY_IPFS_SERVER = exports.BIT_AVATAR_API = void 0;
|
|
6
|
+
exports.W3S_IPFS = exports.VARA_SCAN_ENDPOINT = exports.UNSUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.UNIQUE_SCAN_ENDPOINT = exports.UNIQUE_IPFS_GATEWAY = exports.TRANSFER_CHAIN_ID = exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN = exports.SUPPORTED_NFT_NETWORKS = exports.SUBWALLET_IPFS = exports.SINGULAR_V2_ENDPOINT = exports.SINGULAR_V2_COLLECTION_ENDPOINT = exports.SINGULAR_V1_ENDPOINT = exports.SINGULAR_V1_COLLECTION_ENDPOINT = exports.RMRK_PINATA_SERVER = exports.QUARTZ_SCAN_ENDPOINT = exports.PINATA_IPFS_GATEWAY = exports.OPAL_SCAN_ENDPOINT = exports.NFT_STORAGE_GATEWAY = exports.KANARIA_EXTERNAL_SERVER = exports.KANARIA_ENDPOINT = exports.IPFS_W3S_LINK = exports.IPFS_IO = exports.IPFS_GATEWAY_4EVERLAND = exports.IPFS_FLEEK = exports.IPFS_ETH_ARAGON = exports.IPFS2_RMRK = exports.GATEWAY_IPFS_IO = exports.DWEB_LINK = exports.CLOUDFLARE_PINATA_SERVER = exports.CF_IPFS_GATEWAY = exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = exports.BIT_COUNTRY_IPFS_SERVER = exports.BIT_AVATAR_API = void 0;
|
|
7
7
|
exports.getRandomIpfsGateway = getRandomIpfsGateway;
|
|
8
|
-
var
|
|
8
|
+
var _environment = require("@subwallet/extension-base/utils/environment");
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
10
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
11
|
|
|
12
|
+
// do not change to shorten path, avoid circle import
|
|
13
|
+
|
|
12
14
|
const SINGULAR_V1_ENDPOINT = 'https://singular.rmrk-api.xyz/api/account-rmrk1/';
|
|
13
15
|
exports.SINGULAR_V1_ENDPOINT = SINGULAR_V1_ENDPOINT;
|
|
14
16
|
const SINGULAR_V2_ENDPOINT = 'https://singular.rmrk-api.xyz/api/account/';
|
|
@@ -110,6 +112,8 @@ exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = SUPPORTED_TRANSFER_EVM_CHAIN_NAME;
|
|
|
110
112
|
})(SUPPORTED_TRANSFER_EVM_CHAIN_NAME || (exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = SUPPORTED_TRANSFER_EVM_CHAIN_NAME = {}));
|
|
111
113
|
const SUPPORTED_TRANSFER_EVM_CHAIN = [SUPPORTED_TRANSFER_EVM_CHAIN_NAME.moonbase, SUPPORTED_TRANSFER_EVM_CHAIN_NAME.moonbeam, SUPPORTED_TRANSFER_EVM_CHAIN_NAME.moonriver, SUPPORTED_TRANSFER_EVM_CHAIN_NAME.astarEvm, SUPPORTED_TRANSFER_EVM_CHAIN_NAME.shiden, SUPPORTED_TRANSFER_EVM_CHAIN_NAME.shibuya];
|
|
112
114
|
exports.SUPPORTED_TRANSFER_EVM_CHAIN = SUPPORTED_TRANSFER_EVM_CHAIN;
|
|
115
|
+
const UNSUPPORTED_TRANSFER_EVM_CHAIN_NAME = ['unique_evm'];
|
|
116
|
+
exports.UNSUPPORTED_TRANSFER_EVM_CHAIN_NAME = UNSUPPORTED_TRANSFER_EVM_CHAIN_NAME;
|
|
113
117
|
const TRANSFER_CHAIN_ID = {
|
|
114
118
|
[SUPPORTED_TRANSFER_EVM_CHAIN_NAME.moonbase]: 1287,
|
|
115
119
|
[SUPPORTED_TRANSFER_EVM_CHAIN_NAME.moonbeam]: 1284,
|
|
@@ -134,15 +138,15 @@ exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = SUPPORTED_TRANSFER_SUBSTRATE_C
|
|
|
134
138
|
SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME["pioneer"] = "pioneer";
|
|
135
139
|
})(SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME || (exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = {}));
|
|
136
140
|
const RANDOM_IPFS_GATEWAY_SETTING = [];
|
|
137
|
-
if (
|
|
141
|
+
if (_environment.isFirefox) {
|
|
138
142
|
RANDOM_IPFS_GATEWAY_SETTING.push({
|
|
139
143
|
provider: SUBWALLET_IPFS,
|
|
140
144
|
weight: 5000
|
|
141
145
|
});
|
|
142
146
|
}
|
|
143
|
-
if (
|
|
147
|
+
if (_environment.RuntimeInfo.protocol && _environment.RuntimeInfo.protocol.startsWith('http')) {
|
|
144
148
|
// This is for https
|
|
145
|
-
if (
|
|
149
|
+
if (_environment.RuntimeInfo.protocol.startsWith('https')) {
|
|
146
150
|
RANDOM_IPFS_GATEWAY_SETTING.push(
|
|
147
151
|
// {
|
|
148
152
|
// provider: IPFS_FLEEK,
|
|
@@ -25,7 +25,7 @@ var _assethub_nft = _interopRequireDefault(require("./assethub_nft"));
|
|
|
25
25
|
// import UniqueNftApi from '@subwallet/extension-base/koni/api/nft/unique_nft';
|
|
26
26
|
|
|
27
27
|
function createSubstrateNftApi(chain, substrateApi, addresses) {
|
|
28
|
-
const [substrateAddresses] = (0, _utils2.categoryAddresses)(addresses);
|
|
28
|
+
const [substrateAddresses, evmAddresses] = (0, _utils2.categoryAddresses)(addresses);
|
|
29
29
|
if (_constants._NFT_CHAIN_GROUP.acala.includes(chain)) {
|
|
30
30
|
return [new _acala_nft.AcalaNftApi(substrateApi, substrateAddresses, chain)];
|
|
31
31
|
} else if (_constants._NFT_CHAIN_GROUP.karura.includes(chain)) {
|
|
@@ -38,6 +38,8 @@ function createSubstrateNftApi(chain, substrateApi, addresses) {
|
|
|
38
38
|
return [new _assethub_unique.default(substrateApi, substrateAddresses, chain), new _assethub_nft.default(substrateApi, substrateAddresses, chain)];
|
|
39
39
|
} else if (_constants._NFT_CHAIN_GROUP.unique_network.includes(chain)) {
|
|
40
40
|
return [new _unique_network_nft.UniqueNftApi(chain, substrateAddresses)];
|
|
41
|
+
} else if (_constants._NFT_CHAIN_GROUP.unique_evm.includes(chain)) {
|
|
42
|
+
return [new _unique_network_nft.UniqueNftApi(chain, evmAddresses)];
|
|
41
43
|
} else if (_constants._NFT_CHAIN_GROUP.bitcountry.includes(chain)) {
|
|
42
44
|
return [new _bit.BitCountryNftApi(substrateApi, substrateAddresses, chain)];
|
|
43
45
|
} else if (_constants._NFT_CHAIN_GROUP.vara.includes(chain)) {
|
|
@@ -128,6 +130,12 @@ class NftHandler {
|
|
|
128
130
|
}
|
|
129
131
|
}
|
|
130
132
|
}
|
|
133
|
+
if (chain === 'unique_evm') {
|
|
134
|
+
const handlers = createSubstrateNftApi(chain, null, evmAddresses);
|
|
135
|
+
if (handlers && !!handlers.length) {
|
|
136
|
+
this.handlers.push(...handlers);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
131
139
|
if ((0, _utils._isChainSupportWasmNft)(chainInfo)) {
|
|
132
140
|
if (this.substrateApiMap[chain]) {
|
|
133
141
|
const handler = createWasmNftApi(chain, this.substrateApiMap[chain], substrateAddresses);
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.UniqueNftApi = void 0;
|
|
7
7
|
var _config = require("@subwallet/extension-base/koni/api/nft/config");
|
|
8
8
|
var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
|
|
9
|
+
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
9
10
|
var _utils = require("@subwallet/extension-base/utils");
|
|
10
11
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
11
12
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -21,23 +22,13 @@ class UniqueNftApi extends _nft.BaseNftApi {
|
|
|
21
22
|
handleProperties(nft) {
|
|
22
23
|
const propertiesMap = {};
|
|
23
24
|
const attRecord = nft.attributes;
|
|
24
|
-
if (attRecord) {
|
|
25
|
-
for (const item
|
|
26
|
-
const attName =
|
|
27
|
-
const attInfo =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
attList.push(trait._);
|
|
32
|
-
}
|
|
33
|
-
propertiesMap[attName] = {
|
|
34
|
-
value: attList
|
|
35
|
-
};
|
|
36
|
-
} else {
|
|
37
|
-
propertiesMap[attName] = {
|
|
38
|
-
value: attInfo._
|
|
39
|
-
};
|
|
40
|
-
}
|
|
25
|
+
if (attRecord.length) {
|
|
26
|
+
for (const item of attRecord) {
|
|
27
|
+
const attName = item.trait_type;
|
|
28
|
+
const attInfo = item.value;
|
|
29
|
+
propertiesMap[attName] = {
|
|
30
|
+
value: attInfo
|
|
31
|
+
};
|
|
41
32
|
}
|
|
42
33
|
}
|
|
43
34
|
return propertiesMap;
|
|
@@ -84,8 +75,10 @@ class UniqueNftApi extends _nft.BaseNftApi {
|
|
|
84
75
|
endpoint = _config.OPAL_SCAN_ENDPOINT;
|
|
85
76
|
uniqueAddress = address;
|
|
86
77
|
// Opal address: Normal address
|
|
78
|
+
} else if (_constants._NFT_CHAIN_GROUP.unique_evm.includes(this.chain)) {
|
|
79
|
+
endpoint = _config.UNIQUE_SCAN_ENDPOINT;
|
|
80
|
+
uniqueAddress = address.toLowerCase();
|
|
87
81
|
}
|
|
88
|
-
|
|
89
82
|
const resp = await fetch(endpoint, {
|
|
90
83
|
method: 'post',
|
|
91
84
|
headers: {
|
|
@@ -105,7 +98,6 @@ class UniqueNftApi extends _nft.BaseNftApi {
|
|
|
105
98
|
if (nfts) {
|
|
106
99
|
const collectionMap = {};
|
|
107
100
|
for (const nft of nfts) {
|
|
108
|
-
var _nft$image;
|
|
109
101
|
// Handle case rendering image on Quartz Network (Temporary solution)
|
|
110
102
|
if (this.chain === 'quartz' && nft.collection_id.toString() === '141') {
|
|
111
103
|
continue;
|
|
@@ -120,7 +112,7 @@ class UniqueNftApi extends _nft.BaseNftApi {
|
|
|
120
112
|
chain: this.chain,
|
|
121
113
|
owner: address,
|
|
122
114
|
name: nft.token_name,
|
|
123
|
-
image: this.parseUrl(
|
|
115
|
+
image: this.parseUrl(nft.image),
|
|
124
116
|
description: nft.collection_description,
|
|
125
117
|
collectionId: nft.collection_id.toString(),
|
|
126
118
|
properties: propertiesMap
|
|
@@ -20,6 +20,7 @@ var _web = require("@subwallet/extension-base/koni/api/contract-handler/evm/web3
|
|
|
20
20
|
var _utils = require("@subwallet/extension-base/koni/api/contract-handler/utils");
|
|
21
21
|
var _domain = require("@subwallet/extension-base/koni/api/dotsama/domain");
|
|
22
22
|
var _parseTransaction = require("@subwallet/extension-base/koni/api/dotsama/parseTransaction");
|
|
23
|
+
var _config = require("@subwallet/extension-base/koni/api/nft/config");
|
|
23
24
|
var _transfer2 = require("@subwallet/extension-base/koni/api/nft/transfer");
|
|
24
25
|
var _bonding = require("@subwallet/extension-base/koni/api/staking/bonding");
|
|
25
26
|
var _paraChain = require("@subwallet/extension-base/koni/api/staking/bonding/paraChain");
|
|
@@ -1856,6 +1857,17 @@ class KoniExtension {
|
|
|
1856
1857
|
} = inputData;
|
|
1857
1858
|
const contractAddress = params.contractAddress;
|
|
1858
1859
|
const tokenId = params.tokenId;
|
|
1860
|
+
if (_config.UNSUPPORTED_TRANSFER_EVM_CHAIN_NAME.includes(networkKey)) {
|
|
1861
|
+
return await this.#koniState.transactionService.handleTransaction({
|
|
1862
|
+
address: senderAddress,
|
|
1863
|
+
chain: networkKey,
|
|
1864
|
+
chainType: _KoniTypes.ChainType.EVM,
|
|
1865
|
+
data: inputData,
|
|
1866
|
+
extrinsicType: _KoniTypes.ExtrinsicType.SEND_NFT,
|
|
1867
|
+
transaction: null,
|
|
1868
|
+
url: _constants3.EXTENSION_REQUEST_URL
|
|
1869
|
+
});
|
|
1870
|
+
}
|
|
1859
1871
|
const transaction = await (0, _smartContract.getERC721Transaction)(this.#koniState.getEvmApi(networkKey), networkKey, contractAddress, senderAddress, recipientAddress, tokenId);
|
|
1860
1872
|
|
|
1861
1873
|
// this.addContact(recipientAddress);
|
|
@@ -3722,7 +3734,7 @@ class KoniExtension {
|
|
|
3722
3734
|
};
|
|
3723
3735
|
}
|
|
3724
3736
|
|
|
3725
|
-
|
|
3737
|
+
/* Metadata */
|
|
3726
3738
|
|
|
3727
3739
|
async findRawMetadata(_ref90) {
|
|
3728
3740
|
let {
|
|
@@ -3741,6 +3753,28 @@ class KoniExtension {
|
|
|
3741
3753
|
userExtensions
|
|
3742
3754
|
};
|
|
3743
3755
|
}
|
|
3756
|
+
async calculateMetadataHash(_ref91) {
|
|
3757
|
+
let {
|
|
3758
|
+
chain
|
|
3759
|
+
} = _ref91;
|
|
3760
|
+
const hash = await this.#koniState.calculateMetadataHash(chain);
|
|
3761
|
+
return {
|
|
3762
|
+
metadataHash: hash || ''
|
|
3763
|
+
};
|
|
3764
|
+
}
|
|
3765
|
+
async shortenMetadata(_ref92) {
|
|
3766
|
+
let {
|
|
3767
|
+
chain,
|
|
3768
|
+
txBlob
|
|
3769
|
+
} = _ref92;
|
|
3770
|
+
const shorten = await this.#koniState.shortenMetadata(chain, txBlob);
|
|
3771
|
+
return {
|
|
3772
|
+
txMetadata: shorten || ''
|
|
3773
|
+
};
|
|
3774
|
+
}
|
|
3775
|
+
|
|
3776
|
+
/* Metadata */
|
|
3777
|
+
|
|
3744
3778
|
async resolveDomainByAddress(request) {
|
|
3745
3779
|
const chainApi = this.#koniState.getSubstrateApi(request.chain);
|
|
3746
3780
|
return await (0, _domain.resolveAzeroDomainToAddress)(request.domain, request.chain, chainApi.api);
|
|
@@ -3978,18 +4012,18 @@ class KoniExtension {
|
|
|
3978
4012
|
|
|
3979
4013
|
/* Campaign */
|
|
3980
4014
|
|
|
3981
|
-
unlockDotCheckCanMint(
|
|
4015
|
+
unlockDotCheckCanMint(_ref93) {
|
|
3982
4016
|
let {
|
|
3983
4017
|
address,
|
|
3984
4018
|
network,
|
|
3985
4019
|
slug
|
|
3986
|
-
} =
|
|
4020
|
+
} = _ref93;
|
|
3987
4021
|
return this.#koniState.mintCampaignService.unlockDotCampaign.canMint(address, slug, network);
|
|
3988
4022
|
}
|
|
3989
|
-
unlockDotSubscribeMintedData(id, port,
|
|
4023
|
+
unlockDotSubscribeMintedData(id, port, _ref94) {
|
|
3990
4024
|
let {
|
|
3991
4025
|
transactionId
|
|
3992
|
-
} =
|
|
4026
|
+
} = _ref94;
|
|
3993
4027
|
const cb = (0, _subscriptions.createSubscription)(id, port);
|
|
3994
4028
|
const subscription = this.#koniState.mintCampaignService.unlockDotCampaign.subscribeMintedNft(transactionId, cb);
|
|
3995
4029
|
this.createUnsubscriptionHandle(id, subscription.unsubscribe);
|
|
@@ -4021,10 +4055,10 @@ class KoniExtension {
|
|
|
4021
4055
|
});
|
|
4022
4056
|
return filterBanner(await this.#koniState.campaignService.getProcessingCampaign());
|
|
4023
4057
|
}
|
|
4024
|
-
async completeCampaignBanner(
|
|
4058
|
+
async completeCampaignBanner(_ref95) {
|
|
4025
4059
|
let {
|
|
4026
4060
|
slug
|
|
4027
|
-
} =
|
|
4061
|
+
} = _ref95;
|
|
4028
4062
|
const campaign = await this.#koniState.dbService.getCampaign(slug);
|
|
4029
4063
|
if (campaign) {
|
|
4030
4064
|
await this.#koniState.dbService.upsertCampaign({
|
|
@@ -4681,6 +4715,10 @@ class KoniExtension {
|
|
|
4681
4715
|
// Metadata
|
|
4682
4716
|
case 'pri(metadata.find)':
|
|
4683
4717
|
return this.findRawMetadata(request);
|
|
4718
|
+
case 'pri(metadata.hash)':
|
|
4719
|
+
return this.calculateMetadataHash(request);
|
|
4720
|
+
case 'pri(metadata.transaction.shorten)':
|
|
4721
|
+
return this.shortenMetadata(request);
|
|
4684
4722
|
|
|
4685
4723
|
/* Campaign */
|
|
4686
4724
|
case 'pri(campaign.banner.subscribe)':
|
|
@@ -1813,7 +1813,8 @@ class KoniState {
|
|
|
1813
1813
|
return (_this$chainService34 = this.chainService) === null || _this$chainService34 === void 0 ? void 0 : (_this$chainService34$ = _this$chainService34.mantaPay) === null || _this$chainService34$ === void 0 ? void 0 : _this$chainService34$.subscribeSyncState();
|
|
1814
1814
|
}
|
|
1815
1815
|
|
|
1816
|
-
|
|
1816
|
+
/* Metadata */
|
|
1817
|
+
|
|
1817
1818
|
async findMetadata(hash) {
|
|
1818
1819
|
const metadata = await this.chainService.getMetadataByHash(hash);
|
|
1819
1820
|
return {
|
|
@@ -1823,6 +1824,15 @@ class KoniState {
|
|
|
1823
1824
|
userExtensions: metadata === null || metadata === void 0 ? void 0 : metadata.userExtensions
|
|
1824
1825
|
};
|
|
1825
1826
|
}
|
|
1827
|
+
async calculateMetadataHash(chain) {
|
|
1828
|
+
return this.chainService.calculateMetadataHash(chain);
|
|
1829
|
+
}
|
|
1830
|
+
async shortenMetadata(chain, txBlob) {
|
|
1831
|
+
return this.chainService.shortenMetadata(chain, txBlob);
|
|
1832
|
+
}
|
|
1833
|
+
|
|
1834
|
+
/* Metadata */
|
|
1835
|
+
|
|
1826
1836
|
getCrowdloanContributions(_ref11) {
|
|
1827
1837
|
let {
|
|
1828
1838
|
address,
|
package/cjs/packageInfo.js
CHANGED
|
@@ -96,7 +96,7 @@ function subscribeBalance(addresses, chains, tokens, _chainAssetMap, _chainInfoM
|
|
|
96
96
|
const chainSlug = chainInfo.slug;
|
|
97
97
|
const [useAddresses, notSupportAddresses] = filterAddress(addresses, chainInfo);
|
|
98
98
|
if (notSupportAddresses.length) {
|
|
99
|
-
const tokens = (0, _utils2.filterAssetsByChainAndType)(chainAssetMap, chainSlug, [_types._AssetType.NATIVE, _types._AssetType.ERC20, _types._AssetType.PSP22, _types._AssetType.LOCAL, _types._AssetType.GRC20]);
|
|
99
|
+
const tokens = (0, _utils2.filterAssetsByChainAndType)(chainAssetMap, chainSlug, [_types._AssetType.NATIVE, _types._AssetType.ERC20, _types._AssetType.PSP22, _types._AssetType.LOCAL, _types._AssetType.GRC20, _types._AssetType.VFT]);
|
|
100
100
|
const now = new Date().getTime();
|
|
101
101
|
Object.values(tokens).forEach(token => {
|
|
102
102
|
const items = notSupportAddresses.map(address => ({
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.subscribeVftBalance = exports.subscribeGRC20Balance = void 0;
|
|
7
|
+
var _api = require("@gear-js/api");
|
|
8
|
+
var _types = require("@subwallet/chain-list/types");
|
|
9
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
10
|
+
var _constants = require("@subwallet/extension-base/constants");
|
|
11
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
12
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
13
|
+
var _util = require("@polkadot/util");
|
|
14
|
+
var _utilCrypto = require("@polkadot/util-crypto");
|
|
15
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
16
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
17
|
+
|
|
18
|
+
const subscribeGRC20Balance = _ref => {
|
|
19
|
+
let {
|
|
20
|
+
addresses,
|
|
21
|
+
assetMap,
|
|
22
|
+
callback,
|
|
23
|
+
chainInfo,
|
|
24
|
+
substrateApi
|
|
25
|
+
} = _ref;
|
|
26
|
+
if (!(substrateApi instanceof _api.GearApi)) {
|
|
27
|
+
console.warn('Cannot subscribe GRC20 balance without GearApi instance');
|
|
28
|
+
return _util.noop;
|
|
29
|
+
}
|
|
30
|
+
const chain = chainInfo.slug;
|
|
31
|
+
const grc20ContractMap = {};
|
|
32
|
+
const tokenList = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.GRC20]);
|
|
33
|
+
Object.entries(tokenList).forEach(_ref2 => {
|
|
34
|
+
let [slug, tokenInfo] = _ref2;
|
|
35
|
+
grc20ContractMap[slug] = (0, _utils2.getGRC20ContractPromise)(substrateApi, (0, _utils._getContractAddressOfToken)(tokenInfo));
|
|
36
|
+
});
|
|
37
|
+
const getTokenBalances = () => {
|
|
38
|
+
Object.values(tokenList).map(async tokenInfo => {
|
|
39
|
+
try {
|
|
40
|
+
const contract = grc20ContractMap[tokenInfo.slug];
|
|
41
|
+
const balances = await Promise.all(addresses.map(async address => {
|
|
42
|
+
try {
|
|
43
|
+
const actor = (0, _util.u8aToHex)((0, _utilCrypto.decodeAddress)(address));
|
|
44
|
+
const _balanceOf = await contract.service.balanceOf(actor, address);
|
|
45
|
+
return {
|
|
46
|
+
address: address,
|
|
47
|
+
tokenSlug: tokenInfo.slug,
|
|
48
|
+
free: _balanceOf.toString(10),
|
|
49
|
+
locked: '0',
|
|
50
|
+
state: _KoniTypes.APIItemState.READY
|
|
51
|
+
};
|
|
52
|
+
} catch (err) {
|
|
53
|
+
console.error(`Error on get balance of account ${address} for token ${tokenInfo.slug}`, err);
|
|
54
|
+
return {
|
|
55
|
+
address: address,
|
|
56
|
+
tokenSlug: tokenInfo.slug,
|
|
57
|
+
free: '0',
|
|
58
|
+
locked: '0',
|
|
59
|
+
state: _KoniTypes.APIItemState.READY
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}));
|
|
63
|
+
callback(balances);
|
|
64
|
+
} catch (err) {
|
|
65
|
+
console.warn(tokenInfo.slug, err); // TODO: error createType
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
getTokenBalances();
|
|
71
|
+
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
72
|
+
return () => {
|
|
73
|
+
clearInterval(interval);
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
exports.subscribeGRC20Balance = subscribeGRC20Balance;
|
|
77
|
+
const subscribeVftBalance = _ref3 => {
|
|
78
|
+
let {
|
|
79
|
+
addresses,
|
|
80
|
+
assetMap,
|
|
81
|
+
callback,
|
|
82
|
+
chainInfo,
|
|
83
|
+
substrateApi
|
|
84
|
+
} = _ref3;
|
|
85
|
+
if (!(substrateApi instanceof _api.GearApi)) {
|
|
86
|
+
console.warn('Cannot subscribe VFT balance without GearApi instance');
|
|
87
|
+
return _util.noop;
|
|
88
|
+
}
|
|
89
|
+
const chain = chainInfo.slug;
|
|
90
|
+
const vftContractMap = {};
|
|
91
|
+
const tokenList = (0, _utils2.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.VFT]);
|
|
92
|
+
Object.entries(tokenList).forEach(_ref4 => {
|
|
93
|
+
let [slug, tokenInfo] = _ref4;
|
|
94
|
+
vftContractMap[slug] = (0, _utils2.getVFTContractPromise)(substrateApi, (0, _utils._getContractAddressOfToken)(tokenInfo));
|
|
95
|
+
});
|
|
96
|
+
const getTokenBalances = () => {
|
|
97
|
+
Object.values(tokenList).map(async tokenInfo => {
|
|
98
|
+
try {
|
|
99
|
+
const contract = vftContractMap[tokenInfo.slug];
|
|
100
|
+
const balances = await Promise.all(addresses.map(async address => {
|
|
101
|
+
try {
|
|
102
|
+
const actor = (0, _util.u8aToHex)((0, _utilCrypto.decodeAddress)(address));
|
|
103
|
+
const _balanceOf = await contract.service.balanceOf(actor, address);
|
|
104
|
+
return {
|
|
105
|
+
address: address,
|
|
106
|
+
tokenSlug: tokenInfo.slug,
|
|
107
|
+
free: _balanceOf.toString(10),
|
|
108
|
+
locked: '0',
|
|
109
|
+
state: _KoniTypes.APIItemState.READY
|
|
110
|
+
};
|
|
111
|
+
} catch (err) {
|
|
112
|
+
console.error(`Error on get balance of account ${address} for token ${tokenInfo.slug}`, err);
|
|
113
|
+
return {
|
|
114
|
+
address: address,
|
|
115
|
+
tokenSlug: tokenInfo.slug,
|
|
116
|
+
free: '0',
|
|
117
|
+
locked: '0',
|
|
118
|
+
state: _KoniTypes.APIItemState.READY
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}));
|
|
122
|
+
callback(balances);
|
|
123
|
+
} catch (err) {
|
|
124
|
+
console.warn(tokenInfo.slug, err); // TODO: error createType
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
getTokenBalances();
|
|
130
|
+
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
131
|
+
return () => {
|
|
132
|
+
clearInterval(interval);
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
exports.subscribeVftBalance = subscribeVftBalance;
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.subscribeSubstrateBalance = void 0;
|
|
8
|
-
var _api = require("@gear-js/api");
|
|
9
8
|
var _types = require("@subwallet/chain-list/types");
|
|
10
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
10
|
var _constants = require("@subwallet/extension-base/constants");
|
|
@@ -20,9 +19,9 @@ var _utils3 = require("@subwallet/extension-base/utils");
|
|
|
20
19
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
21
20
|
var _rxjs = require("rxjs");
|
|
22
21
|
var _util = require("@polkadot/util");
|
|
23
|
-
var _utilCrypto = require("@polkadot/util-crypto");
|
|
24
22
|
var _evm = require("../evm");
|
|
25
23
|
var _equilibrium = require("./equilibrium");
|
|
24
|
+
var _gear = require("./gear");
|
|
26
25
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
27
26
|
// SPDX-License-Identifier: Apache-2.0
|
|
28
27
|
|
|
@@ -33,6 +32,7 @@ const subscribeSubstrateBalance = async (addresses, chainInfo, assetMap, substra
|
|
|
33
32
|
let unsubWasmContractToken;
|
|
34
33
|
let unsubBridgedToken;
|
|
35
34
|
let unsubGrcToken;
|
|
35
|
+
let unsubVftToken;
|
|
36
36
|
const chain = chainInfo.slug;
|
|
37
37
|
const baseParams = {
|
|
38
38
|
addresses,
|
|
@@ -87,19 +87,24 @@ const subscribeSubstrateBalance = async (addresses, chainInfo, assetMap, substra
|
|
|
87
87
|
}
|
|
88
88
|
if ((0, _utils2._checkSmartContractSupportByChain)(chainInfo, _types._AssetType.GRC20)) {
|
|
89
89
|
// Get sub-token for substrate-based chains
|
|
90
|
-
unsubGrcToken = subscribeGRC20Balance(substrateParams);
|
|
90
|
+
unsubGrcToken = (0, _gear.subscribeGRC20Balance)(substrateParams);
|
|
91
|
+
}
|
|
92
|
+
if ((0, _utils2._checkSmartContractSupportByChain)(chainInfo, _types._AssetType.VFT)) {
|
|
93
|
+
// Get sub-token for substrate-based chains
|
|
94
|
+
unsubVftToken = (0, _gear.subscribeVftBalance)(substrateParams);
|
|
91
95
|
}
|
|
92
96
|
} catch (err) {
|
|
93
97
|
console.warn(err);
|
|
94
98
|
}
|
|
95
99
|
return () => {
|
|
96
|
-
var _unsubGrcToken;
|
|
100
|
+
var _unsubGrcToken, _unsubVftToken;
|
|
97
101
|
unsubNativeToken && unsubNativeToken();
|
|
98
102
|
unsubLocalToken && unsubLocalToken();
|
|
99
103
|
unsubEvmContractToken && unsubEvmContractToken();
|
|
100
104
|
unsubWasmContractToken && unsubWasmContractToken();
|
|
101
105
|
unsubBridgedToken && unsubBridgedToken();
|
|
102
106
|
(_unsubGrcToken = unsubGrcToken) === null || _unsubGrcToken === void 0 ? void 0 : _unsubGrcToken();
|
|
107
|
+
(_unsubVftToken = unsubVftToken) === null || _unsubVftToken === void 0 ? void 0 : _unsubVftToken();
|
|
103
108
|
};
|
|
104
109
|
};
|
|
105
110
|
|
|
@@ -437,62 +442,4 @@ const subscribeOrmlTokensPallet = async _ref8 => {
|
|
|
437
442
|
}).catch(console.error);
|
|
438
443
|
});
|
|
439
444
|
};
|
|
440
|
-
};
|
|
441
|
-
const subscribeGRC20Balance = _ref9 => {
|
|
442
|
-
let {
|
|
443
|
-
addresses,
|
|
444
|
-
assetMap,
|
|
445
|
-
callback,
|
|
446
|
-
chainInfo,
|
|
447
|
-
substrateApi
|
|
448
|
-
} = _ref9;
|
|
449
|
-
if (!(substrateApi instanceof _api.GearApi)) {
|
|
450
|
-
console.warn('Cannot subscribe VFT balance without GearApi instance');
|
|
451
|
-
return _util.noop;
|
|
452
|
-
}
|
|
453
|
-
const chain = chainInfo.slug;
|
|
454
|
-
const psp22ContractMap = {};
|
|
455
|
-
const tokenList = (0, _utils3.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.GRC20]);
|
|
456
|
-
Object.entries(tokenList).forEach(_ref10 => {
|
|
457
|
-
let [slug, tokenInfo] = _ref10;
|
|
458
|
-
psp22ContractMap[slug] = (0, _utils3.getGRC20ContractPromise)(substrateApi, (0, _utils2._getContractAddressOfToken)(tokenInfo));
|
|
459
|
-
});
|
|
460
|
-
const getTokenBalances = () => {
|
|
461
|
-
Object.values(tokenList).map(async tokenInfo => {
|
|
462
|
-
try {
|
|
463
|
-
const contract = psp22ContractMap[tokenInfo.slug];
|
|
464
|
-
const balances = await Promise.all(addresses.map(async address => {
|
|
465
|
-
try {
|
|
466
|
-
const actor = (0, _util.u8aToHex)((0, _utilCrypto.decodeAddress)(address));
|
|
467
|
-
const _balanceOf = await contract.balanceOf(actor, address);
|
|
468
|
-
return {
|
|
469
|
-
address: address,
|
|
470
|
-
tokenSlug: tokenInfo.slug,
|
|
471
|
-
free: _balanceOf.toString(10),
|
|
472
|
-
locked: '0',
|
|
473
|
-
state: _KoniTypes.APIItemState.READY
|
|
474
|
-
};
|
|
475
|
-
} catch (err) {
|
|
476
|
-
console.error(`Error on get balance of account ${address} for token ${tokenInfo.slug}`, err);
|
|
477
|
-
return {
|
|
478
|
-
address: address,
|
|
479
|
-
tokenSlug: tokenInfo.slug,
|
|
480
|
-
free: '0',
|
|
481
|
-
locked: '0',
|
|
482
|
-
state: _KoniTypes.APIItemState.READY
|
|
483
|
-
};
|
|
484
|
-
}
|
|
485
|
-
}));
|
|
486
|
-
callback(balances);
|
|
487
|
-
} catch (err) {
|
|
488
|
-
console.warn(tokenInfo.slug, err); // TODO: error createType
|
|
489
|
-
}
|
|
490
|
-
});
|
|
491
|
-
};
|
|
492
|
-
|
|
493
|
-
getTokenBalances();
|
|
494
|
-
const interval = setInterval(getTokenBalances, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
|
|
495
|
-
return () => {
|
|
496
|
-
clearInterval(interval);
|
|
497
|
-
};
|
|
498
445
|
};
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.getTransferMockTxFee = exports.createTransferExtrinsic = void 0;
|
|
8
8
|
var _api = require("@gear-js/api");
|
|
9
|
+
var _types = require("@subwallet/chain-list/types");
|
|
9
10
|
var _wasm = require("@subwallet/extension-base/koni/api/contract-handler/wasm");
|
|
10
11
|
var _utils = require("@subwallet/extension-base/koni/api/contract-handler/wasm/utils");
|
|
11
12
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
@@ -61,12 +62,12 @@ const createTransferExtrinsic = async _ref => {
|
|
|
61
62
|
}, to, value, {});
|
|
62
63
|
transferAmount = value;
|
|
63
64
|
} else if ((0, _utils2._isTokenGearSmartContract)(tokenInfo) && api instanceof _api.GearApi) {
|
|
64
|
-
const contractPromise = (0, _utils4.getGRC20ContractPromise)(api, (0, _utils2._getContractAddressOfToken)(tokenInfo));
|
|
65
|
-
const transaction = await contractPromise.transfer((0, _util.u8aToHex)((0, _utilCrypto.decodeAddress)(to)),
|
|
65
|
+
const contractPromise = tokenInfo.assetType === _types._AssetType.GRC20 ? (0, _utils4.getGRC20ContractPromise)(api, (0, _utils2._getContractAddressOfToken)(tokenInfo)) : (0, _utils4.getVFTContractPromise)(api, (0, _utils2._getContractAddressOfToken)(tokenInfo));
|
|
66
|
+
const transaction = await contractPromise.service.transfer((0, _util.u8aToHex)((0, _utilCrypto.decodeAddress)(to)), value) // Create transfer transaction
|
|
66
67
|
.withAccount(from) // Set sender account
|
|
67
68
|
.calculateGas(); // Add account arg to extrinsic
|
|
68
69
|
|
|
69
|
-
transfer = transaction.
|
|
70
|
+
transfer = transaction.extrinsic;
|
|
70
71
|
transferAmount = value;
|
|
71
72
|
} else if (_constants._TRANSFER_CHAIN_GROUP.acala.includes(networkKey)) {
|
|
72
73
|
if (!(0, _utils2._isNativeToken)(tokenInfo)) {
|
|
@@ -61,6 +61,7 @@ const _NFT_CHAIN_GROUP = {
|
|
|
61
61
|
statemine: ['statemine'],
|
|
62
62
|
statemint: ['statemint'],
|
|
63
63
|
unique_network: ['unique_network', 'quartz', 'opal'],
|
|
64
|
+
unique_evm: ['unique_evm'],
|
|
64
65
|
bitcountry: ['bitcountry', 'pioneer', 'continuum_network'],
|
|
65
66
|
vara: ['vara_network']
|
|
66
67
|
};
|
|
@@ -166,14 +166,16 @@ class SubstrateApi {
|
|
|
166
166
|
this.provider = this.createProvider(apiUrl);
|
|
167
167
|
this.api = this.createApi(this.provider);
|
|
168
168
|
}
|
|
169
|
-
connect() {
|
|
169
|
+
connect(_callbackUpdateMetadata) {
|
|
170
170
|
if (this.api.isConnected) {
|
|
171
171
|
this.updateConnectionStatus(_types2._ChainConnectionStatus.CONNECTED);
|
|
172
|
+
_callbackUpdateMetadata === null || _callbackUpdateMetadata === void 0 ? void 0 : _callbackUpdateMetadata(this);
|
|
172
173
|
} else {
|
|
173
174
|
this.updateConnectionStatus(_types2._ChainConnectionStatus.CONNECTING);
|
|
174
175
|
this.api.connect().then(() => {
|
|
175
176
|
this.api.isReady.then(() => {
|
|
176
177
|
this.updateConnectionStatus(_types2._ChainConnectionStatus.CONNECTED);
|
|
178
|
+
_callbackUpdateMetadata === null || _callbackUpdateMetadata === void 0 ? void 0 : _callbackUpdateMetadata(this);
|
|
177
179
|
}).catch(console.error);
|
|
178
180
|
}).catch(console.error);
|
|
179
181
|
}
|