@subwallet/extension-base 1.1.16-1 → 1.1.17-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/cjs/koni/api/nft/config.js +5 -1
- package/cjs/koni/api/nft/index.js +3 -0
- package/cjs/koni/api/nft/vara_nft/index.js +107 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/constants.js +3 -2
- package/cjs/services/chain-service/index.js +2 -0
- package/cjs/services/migration-service/scripts/EnableChain.js +18 -0
- package/cjs/services/migration-service/scripts/EnableVaraChain.js +15 -0
- package/cjs/services/migration-service/scripts/MigrateEthProvider.js +5 -20
- package/cjs/services/migration-service/scripts/MigratePioneerProvider.js +17 -0
- package/cjs/services/migration-service/scripts/MigrateProvider.js +29 -0
- package/cjs/services/migration-service/scripts/index.js +5 -1
- package/cjs/services/transaction-service/index.js +6 -1
- package/koni/api/nft/config.d.ts +1 -0
- package/koni/api/nft/config.js +4 -0
- package/koni/api/nft/index.js +3 -0
- package/koni/api/nft/vara_nft/index.d.ts +9 -0
- package/koni/api/nft/vara_nft/index.js +99 -0
- package/package.json +31 -6
- package/packageInfo.js +1 -1
- package/services/chain-service/constants.d.ts +1 -0
- package/services/chain-service/constants.js +3 -2
- package/services/chain-service/index.js +2 -0
- package/services/chain-service/types.d.ts +3 -1
- package/services/migration-service/scripts/EnableChain.d.ts +5 -0
- package/services/migration-service/scripts/EnableChain.js +10 -0
- package/services/migration-service/scripts/EnableVaraChain.d.ts +4 -0
- package/services/migration-service/scripts/EnableVaraChain.js +7 -0
- package/services/migration-service/scripts/MigrateEthProvider.d.ts +5 -3
- package/services/migration-service/scripts/MigrateEthProvider.js +5 -20
- package/services/migration-service/scripts/MigratePioneerProvider.d.ts +6 -0
- package/services/migration-service/scripts/MigratePioneerProvider.js +9 -0
- package/services/migration-service/scripts/MigrateProvider.d.ts +7 -0
- package/services/migration-service/scripts/MigrateProvider.js +21 -0
- package/services/migration-service/scripts/index.js +5 -1
- package/services/transaction-service/index.js +6 -1
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
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.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.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.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 = void 0;
|
|
6
|
+
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.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.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.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 = void 0;
|
|
7
7
|
exports.getRandomIpfsGateway = getRandomIpfsGateway;
|
|
8
8
|
var _utils = require("@subwallet/extension-base/utils");
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -39,6 +39,10 @@ const UNIQUE_SCAN_ENDPOINT = 'https://explorer-api.unique.network/v1/graphql';
|
|
|
39
39
|
exports.UNIQUE_SCAN_ENDPOINT = UNIQUE_SCAN_ENDPOINT;
|
|
40
40
|
const QUARTZ_SCAN_ENDPOINT = 'https://hasura-quartz.unique.network/v1/graphql';
|
|
41
41
|
exports.QUARTZ_SCAN_ENDPOINT = QUARTZ_SCAN_ENDPOINT;
|
|
42
|
+
const VARA_SCAN_ENDPOINT = 'https://nft-explorer.vara-network.io/graphql';
|
|
43
|
+
|
|
44
|
+
// GATEWAY
|
|
45
|
+
exports.VARA_SCAN_ENDPOINT = VARA_SCAN_ENDPOINT;
|
|
42
46
|
const UNIQUE_IPFS_GATEWAY = 'https://ipfs.unique.network/ipfs/';
|
|
43
47
|
exports.UNIQUE_IPFS_GATEWAY = UNIQUE_IPFS_GATEWAY;
|
|
44
48
|
const NFT_STORAGE_GATEWAY = 'https://nftstorage.link/ipfs/';
|
|
@@ -12,6 +12,7 @@ var _karura_nft = require("@subwallet/extension-base/koni/api/nft/karura_nft");
|
|
|
12
12
|
var _rmrk_nft = require("@subwallet/extension-base/koni/api/nft/rmrk_nft");
|
|
13
13
|
var _statemine_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/statemine_nft"));
|
|
14
14
|
var _unique_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/unique_nft"));
|
|
15
|
+
var _vara_nft = require("@subwallet/extension-base/koni/api/nft/vara_nft");
|
|
15
16
|
var _wasm_nft = require("@subwallet/extension-base/koni/api/nft/wasm_nft");
|
|
16
17
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
17
18
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
@@ -36,6 +37,8 @@ function createSubstrateNftApi(chain, substrateApi, addresses) {
|
|
|
36
37
|
return new _unique_nft.default(substrateApi, substrateAddresses, chain);
|
|
37
38
|
} else if (_constants._NFT_CHAIN_GROUP.bitcountry.includes(chain)) {
|
|
38
39
|
return new _bit.BitCountryNftApi(substrateApi, substrateAddresses, chain);
|
|
40
|
+
} else if (_constants._NFT_CHAIN_GROUP.vara.includes(chain)) {
|
|
41
|
+
return new _vara_nft.VaraNftApi(chain, substrateAddresses);
|
|
39
42
|
}
|
|
40
43
|
return null;
|
|
41
44
|
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.VaraNftApi = void 0;
|
|
8
|
+
var _config = require("@subwallet/extension-base/koni/api/nft/config");
|
|
9
|
+
var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
|
|
10
|
+
var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
11
|
+
var _util = require("@polkadot/util");
|
|
12
|
+
var _utilCrypto = require("@polkadot/util-crypto");
|
|
13
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
14
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
15
|
+
|
|
16
|
+
class VaraNftApi extends _nft.BaseNftApi {
|
|
17
|
+
endpoint = _config.VARA_SCAN_ENDPOINT;
|
|
18
|
+
|
|
19
|
+
// eslint-disable-next-line no-useless-constructor
|
|
20
|
+
constructor(chain, addresses) {
|
|
21
|
+
super(chain, undefined, addresses);
|
|
22
|
+
}
|
|
23
|
+
static parseNftRequest(publicKey) {
|
|
24
|
+
return {
|
|
25
|
+
// eslint-disable-next-line
|
|
26
|
+
query: `
|
|
27
|
+
query MyQuery {
|
|
28
|
+
accountById(id: "${publicKey}") {
|
|
29
|
+
id
|
|
30
|
+
nfts {
|
|
31
|
+
id
|
|
32
|
+
mediaUrl
|
|
33
|
+
name
|
|
34
|
+
tokenId
|
|
35
|
+
attribUrl
|
|
36
|
+
description
|
|
37
|
+
collection {
|
|
38
|
+
id
|
|
39
|
+
name
|
|
40
|
+
description
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
`
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// private static parseNftCollectionRequest (collectionId: string) {
|
|
50
|
+
// return {
|
|
51
|
+
// // eslint-disable-next-line
|
|
52
|
+
// query: `query MyQuery { collections(where: {collection_id: {_eq: \"${collectionId}\"}}) { collection_id name } }`
|
|
53
|
+
// };
|
|
54
|
+
// }
|
|
55
|
+
|
|
56
|
+
async getNftByAccount(address) {
|
|
57
|
+
var _result$data, _result$data$accountB;
|
|
58
|
+
const publicKey = (0, _util.hexAddPrefix)((0, _util.u8aToHex)((0, _utilCrypto.decodeAddress)(address)));
|
|
59
|
+
const resp = await (0, _crossFetch.default)(this.endpoint, {
|
|
60
|
+
method: 'post',
|
|
61
|
+
headers: {
|
|
62
|
+
'Content-Type': 'application/json'
|
|
63
|
+
},
|
|
64
|
+
body: JSON.stringify(VaraNftApi.parseNftRequest(publicKey))
|
|
65
|
+
});
|
|
66
|
+
const result = await resp.json();
|
|
67
|
+
|
|
68
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
69
|
+
return result === null || result === void 0 ? void 0 : (_result$data = result.data) === null || _result$data === void 0 ? void 0 : (_result$data$accountB = _result$data.accountById) === null || _result$data$accountB === void 0 ? void 0 : _result$data$accountB.nfts;
|
|
70
|
+
}
|
|
71
|
+
async handleNfts(params) {
|
|
72
|
+
try {
|
|
73
|
+
await Promise.all(this.addresses.map(async address => {
|
|
74
|
+
const nfts = await this.getNftByAccount(address);
|
|
75
|
+
for (const nft of nfts) {
|
|
76
|
+
const parsedNft = {
|
|
77
|
+
id: nft.tokenId,
|
|
78
|
+
chain: this.chain,
|
|
79
|
+
owner: address,
|
|
80
|
+
name: nft.name,
|
|
81
|
+
image: this.parseUrl(nft.mediaUrl),
|
|
82
|
+
description: nft.description,
|
|
83
|
+
collectionId: nft.collection.id
|
|
84
|
+
};
|
|
85
|
+
const parsedCollection = {
|
|
86
|
+
collectionId: nft.collection.id,
|
|
87
|
+
chain: this.chain,
|
|
88
|
+
collectionName: nft.collection.name
|
|
89
|
+
};
|
|
90
|
+
params.updateItem(this.chain, parsedNft, address);
|
|
91
|
+
params.updateCollection(this.chain, parsedCollection);
|
|
92
|
+
}
|
|
93
|
+
}));
|
|
94
|
+
} catch (e) {
|
|
95
|
+
console.error(`Failed to fetch ${this.chain} nft`, e);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async fetchNfts(params) {
|
|
99
|
+
try {
|
|
100
|
+
await this.handleNfts(params);
|
|
101
|
+
} catch (e) {
|
|
102
|
+
return 0;
|
|
103
|
+
}
|
|
104
|
+
return 1;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.VaraNftApi = VaraNftApi;
|
package/cjs/packageInfo.js
CHANGED
|
@@ -56,7 +56,8 @@ const _NFT_CHAIN_GROUP = {
|
|
|
56
56
|
statemine: ['statemine'],
|
|
57
57
|
statemint: ['statemint'],
|
|
58
58
|
unique_network: ['unique_network'],
|
|
59
|
-
bitcountry: ['bitcountry', 'pioneer']
|
|
59
|
+
bitcountry: ['bitcountry', 'pioneer'],
|
|
60
|
+
vara: ['vara_network']
|
|
60
61
|
};
|
|
61
62
|
|
|
62
63
|
// Staking--------------------------------------------------------------------------------------------------------------
|
|
@@ -238,7 +239,7 @@ const _XCM_TYPE = {
|
|
|
238
239
|
PR: `${_types._SubstrateChainType.PARACHAIN}-${_types._SubstrateChainType.RELAYCHAIN}` // UMP
|
|
239
240
|
};
|
|
240
241
|
exports._XCM_TYPE = _XCM_TYPE;
|
|
241
|
-
const _DEFAULT_ACTIVE_CHAINS = [..._chainList._DEFAULT_CHAINS];
|
|
242
|
+
const _DEFAULT_ACTIVE_CHAINS = [..._chainList._DEFAULT_CHAINS, 'vara_network'];
|
|
242
243
|
exports._DEFAULT_ACTIVE_CHAINS = _DEFAULT_ACTIVE_CHAINS;
|
|
243
244
|
const EVM_PASS_CONNECT_STATUS = {
|
|
244
245
|
acala: ['acala_evm', 'karura_evm']
|
|
@@ -851,6 +851,8 @@ class ChainService {
|
|
|
851
851
|
let evmInfo = null;
|
|
852
852
|
if (params.chainSpec.genesisHash !== '') {
|
|
853
853
|
substrateInfo = {
|
|
854
|
+
crowdloanFunds: params.chainSpec.crowdloanFunds || null,
|
|
855
|
+
crowdloanParaId: params.chainSpec.crowdloanParaId || null,
|
|
854
856
|
addressPrefix: params.chainSpec.addressPrefix,
|
|
855
857
|
blockExplorer: params.chainEditInfo.blockExplorer || null,
|
|
856
858
|
chainType: params.chainSpec.paraId !== null ? _types._SubstrateChainType.PARACHAIN : _types._SubstrateChainType.RELAYCHAIN,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class EnableChain extends _Base.default {
|
|
13
|
+
async run() {
|
|
14
|
+
const state = this.state;
|
|
15
|
+
await state.enableChain(this.slug, true);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.default = EnableChain;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _EnableChain = _interopRequireDefault(require("./EnableChain"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class EnableVaraChain extends _EnableChain.default {
|
|
13
|
+
slug = 'vara_network';
|
|
14
|
+
}
|
|
15
|
+
exports.default = EnableVaraChain;
|
|
@@ -5,28 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
var
|
|
8
|
+
var _MigrateProvider = _interopRequireDefault(require("./MigrateProvider"));
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
10
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
11
|
|
|
12
|
-
class MigrateEthProvider extends
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const oldProvider = 'Cloudflare';
|
|
17
|
-
const newProvider = 'Llamarpc';
|
|
18
|
-
const chainState = state.getChainStateByKey(slug);
|
|
19
|
-
const chainInfo = state.getChainInfo(slug);
|
|
20
|
-
if (chainState.active && chainState.currentProvider === oldProvider) {
|
|
21
|
-
await state.upsertChainInfo({
|
|
22
|
-
mode: 'update',
|
|
23
|
-
chainEditInfo: {
|
|
24
|
-
currentProvider: newProvider,
|
|
25
|
-
slug: slug,
|
|
26
|
-
providers: chainInfo.providers
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
}
|
|
12
|
+
class MigrateEthProvider extends _MigrateProvider.default {
|
|
13
|
+
newProvider = 'ethereum';
|
|
14
|
+
oldProvider = 'Cloudflare';
|
|
15
|
+
slug = 'Llamarpc';
|
|
31
16
|
}
|
|
32
17
|
exports.default = MigrateEthProvider;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _MigrateProvider = _interopRequireDefault(require("./MigrateProvider"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class MigratePioneerProvider extends _MigrateProvider.default {
|
|
13
|
+
slug = 'pioneer';
|
|
14
|
+
oldProvider = 'OnFinality';
|
|
15
|
+
newProvider = 'Pioneer';
|
|
16
|
+
}
|
|
17
|
+
exports.default = MigratePioneerProvider;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class MigrateProvider extends _Base.default {
|
|
13
|
+
async run() {
|
|
14
|
+
const state = this.state;
|
|
15
|
+
const chainState = state.getChainStateByKey(this.slug);
|
|
16
|
+
const chainInfo = state.getChainInfo(this.slug);
|
|
17
|
+
if (chainState.active && chainState.currentProvider === this.oldProvider) {
|
|
18
|
+
await state.upsertChainInfo({
|
|
19
|
+
mode: 'update',
|
|
20
|
+
chainEditInfo: {
|
|
21
|
+
currentProvider: this.newProvider,
|
|
22
|
+
slug: this.slug,
|
|
23
|
+
providers: chainInfo.providers
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.default = MigrateProvider;
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = exports.EVERYTIME = void 0;
|
|
8
8
|
var _DeleteChain = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/DeleteChain"));
|
|
9
9
|
var _AutoEnableChainsTokens = _interopRequireDefault(require("./AutoEnableChainsTokens"));
|
|
10
|
+
var _EnableVaraChain = _interopRequireDefault(require("./EnableVaraChain"));
|
|
10
11
|
var _MigrateAuthUrls = _interopRequireDefault(require("./MigrateAuthUrls"));
|
|
11
12
|
var _MigrateAutoLock = _interopRequireDefault(require("./MigrateAutoLock"));
|
|
12
13
|
var _MigrateChainPatrol = _interopRequireDefault(require("./MigrateChainPatrol"));
|
|
@@ -14,6 +15,7 @@ var _MigrateEthProvider = _interopRequireDefault(require("./MigrateEthProvider")
|
|
|
14
15
|
var _MigrateImportedToken = _interopRequireDefault(require("./MigrateImportedToken"));
|
|
15
16
|
var _MigrateLedgerAccount = _interopRequireDefault(require("./MigrateLedgerAccount"));
|
|
16
17
|
var _MigrateNetworkSettings = _interopRequireDefault(require("./MigrateNetworkSettings"));
|
|
18
|
+
var _MigratePioneerProvider = _interopRequireDefault(require("./MigratePioneerProvider"));
|
|
17
19
|
var _MigrateSettings = _interopRequireDefault(require("./MigrateSettings"));
|
|
18
20
|
var _MigrateTokenDecimals = _interopRequireDefault(require("./MigrateTokenDecimals"));
|
|
19
21
|
var _MigrateTransactionHistory = _interopRequireDefault(require("./MigrateTransactionHistory"));
|
|
@@ -36,7 +38,9 @@ var _default = {
|
|
|
36
38
|
'1.0.12-02': _MigrateEthProvider.default,
|
|
37
39
|
'1.1.6-01': _MigrateWalletReference.default,
|
|
38
40
|
'1.1.7': _DeleteChain.default,
|
|
39
|
-
'1.1.13-01': _MigrateTokenDecimals.default
|
|
41
|
+
'1.1.13-01': _MigrateTokenDecimals.default,
|
|
42
|
+
'1.1.17-01': _MigratePioneerProvider.default,
|
|
43
|
+
'1.1.17-03': _EnableVaraChain.default
|
|
40
44
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
41
45
|
};
|
|
42
46
|
exports.default = _default;
|
|
@@ -75,6 +75,7 @@ class TransactionService {
|
|
|
75
75
|
address,
|
|
76
76
|
chain,
|
|
77
77
|
edAsWarning,
|
|
78
|
+
extrinsicType,
|
|
78
79
|
isTransferAll,
|
|
79
80
|
transaction
|
|
80
81
|
} = validation;
|
|
@@ -84,7 +85,11 @@ class TransactionService {
|
|
|
84
85
|
|
|
85
86
|
// Return unsupported error if not found transaction
|
|
86
87
|
if (!transaction) {
|
|
87
|
-
|
|
88
|
+
if (extrinsicType === _KoniTypes.ExtrinsicType.SEND_NFT) {
|
|
89
|
+
validation.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)('This feature is not yet available for this NFT')));
|
|
90
|
+
} else {
|
|
91
|
+
validation.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.UNSUPPORTED));
|
|
92
|
+
}
|
|
88
93
|
}
|
|
89
94
|
const validationResponse = {
|
|
90
95
|
status: undefined,
|
package/koni/api/nft/config.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare const CF_IPFS_GATEWAY = "https://cf-ipfs.com/ipfs/";
|
|
|
13
13
|
export declare const PINATA_IPFS_GATEWAY = "https://gateway.pinata.cloud/ipfs/";
|
|
14
14
|
export declare const UNIQUE_SCAN_ENDPOINT = "https://explorer-api.unique.network/v1/graphql";
|
|
15
15
|
export declare const QUARTZ_SCAN_ENDPOINT = "https://hasura-quartz.unique.network/v1/graphql";
|
|
16
|
+
export declare const VARA_SCAN_ENDPOINT = "https://nft-explorer.vara-network.io/graphql";
|
|
16
17
|
export declare const UNIQUE_IPFS_GATEWAY = "https://ipfs.unique.network/ipfs/";
|
|
17
18
|
export declare const NFT_STORAGE_GATEWAY = "https://nftstorage.link/ipfs/";
|
|
18
19
|
export declare const IPFS_W3S_LINK = "https://w3s.link/ipfs/";
|
package/koni/api/nft/config.js
CHANGED
|
@@ -17,6 +17,10 @@ export const CF_IPFS_GATEWAY = 'https://cf-ipfs.com/ipfs/';
|
|
|
17
17
|
export const PINATA_IPFS_GATEWAY = 'https://gateway.pinata.cloud/ipfs/';
|
|
18
18
|
export const UNIQUE_SCAN_ENDPOINT = 'https://explorer-api.unique.network/v1/graphql';
|
|
19
19
|
export const QUARTZ_SCAN_ENDPOINT = 'https://hasura-quartz.unique.network/v1/graphql';
|
|
20
|
+
export const VARA_SCAN_ENDPOINT = 'https://nft-explorer.vara-network.io/graphql';
|
|
21
|
+
|
|
22
|
+
// GATEWAY
|
|
23
|
+
|
|
20
24
|
export const UNIQUE_IPFS_GATEWAY = 'https://ipfs.unique.network/ipfs/';
|
|
21
25
|
export const NFT_STORAGE_GATEWAY = 'https://nftstorage.link/ipfs/';
|
|
22
26
|
export const IPFS_W3S_LINK = 'https://w3s.link/ipfs/';
|
package/koni/api/nft/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { KaruraNftApi } from '@subwallet/extension-base/koni/api/nft/karura_nft'
|
|
|
8
8
|
import { RmrkNftApi } from '@subwallet/extension-base/koni/api/nft/rmrk_nft';
|
|
9
9
|
import StatemineNftApi from '@subwallet/extension-base/koni/api/nft/statemine_nft';
|
|
10
10
|
import UniqueNftApi from '@subwallet/extension-base/koni/api/nft/unique_nft';
|
|
11
|
+
import { VaraNftApi } from '@subwallet/extension-base/koni/api/nft/vara_nft';
|
|
11
12
|
import { WasmNftApi } from '@subwallet/extension-base/koni/api/nft/wasm_nft';
|
|
12
13
|
import { _NFT_CHAIN_GROUP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
13
14
|
import { _isChainSupportEvmNft, _isChainSupportNativeNft, _isChainSupportWasmNft } from '@subwallet/extension-base/services/chain-service/utils';
|
|
@@ -29,6 +30,8 @@ function createSubstrateNftApi(chain, substrateApi, addresses) {
|
|
|
29
30
|
return new UniqueNftApi(substrateApi, substrateAddresses, chain);
|
|
30
31
|
} else if (_NFT_CHAIN_GROUP.bitcountry.includes(chain)) {
|
|
31
32
|
return new BitCountryNftApi(substrateApi, substrateAddresses, chain);
|
|
33
|
+
} else if (_NFT_CHAIN_GROUP.vara.includes(chain)) {
|
|
34
|
+
return new VaraNftApi(chain, substrateAddresses);
|
|
32
35
|
}
|
|
33
36
|
return null;
|
|
34
37
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseNftApi, HandleNftParams } from '@subwallet/extension-base/koni/api/nft/nft';
|
|
2
|
+
export declare class VaraNftApi extends BaseNftApi {
|
|
3
|
+
endpoint: string;
|
|
4
|
+
constructor(chain: string, addresses: string[]);
|
|
5
|
+
private static parseNftRequest;
|
|
6
|
+
private getNftByAccount;
|
|
7
|
+
handleNfts(params: HandleNftParams): Promise<void>;
|
|
8
|
+
fetchNfts(params: HandleNftParams): Promise<number>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { VARA_SCAN_ENDPOINT } from '@subwallet/extension-base/koni/api/nft/config';
|
|
5
|
+
import { BaseNftApi } from '@subwallet/extension-base/koni/api/nft/nft';
|
|
6
|
+
import fetch from 'cross-fetch';
|
|
7
|
+
import { hexAddPrefix, u8aToHex } from '@polkadot/util';
|
|
8
|
+
import { decodeAddress } from '@polkadot/util-crypto';
|
|
9
|
+
export class VaraNftApi extends BaseNftApi {
|
|
10
|
+
endpoint = VARA_SCAN_ENDPOINT;
|
|
11
|
+
|
|
12
|
+
// eslint-disable-next-line no-useless-constructor
|
|
13
|
+
constructor(chain, addresses) {
|
|
14
|
+
super(chain, undefined, addresses);
|
|
15
|
+
}
|
|
16
|
+
static parseNftRequest(publicKey) {
|
|
17
|
+
return {
|
|
18
|
+
// eslint-disable-next-line
|
|
19
|
+
query: `
|
|
20
|
+
query MyQuery {
|
|
21
|
+
accountById(id: "${publicKey}") {
|
|
22
|
+
id
|
|
23
|
+
nfts {
|
|
24
|
+
id
|
|
25
|
+
mediaUrl
|
|
26
|
+
name
|
|
27
|
+
tokenId
|
|
28
|
+
attribUrl
|
|
29
|
+
description
|
|
30
|
+
collection {
|
|
31
|
+
id
|
|
32
|
+
name
|
|
33
|
+
description
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
`
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// private static parseNftCollectionRequest (collectionId: string) {
|
|
43
|
+
// return {
|
|
44
|
+
// // eslint-disable-next-line
|
|
45
|
+
// query: `query MyQuery { collections(where: {collection_id: {_eq: \"${collectionId}\"}}) { collection_id name } }`
|
|
46
|
+
// };
|
|
47
|
+
// }
|
|
48
|
+
|
|
49
|
+
async getNftByAccount(address) {
|
|
50
|
+
var _result$data, _result$data$accountB;
|
|
51
|
+
const publicKey = hexAddPrefix(u8aToHex(decodeAddress(address)));
|
|
52
|
+
const resp = await fetch(this.endpoint, {
|
|
53
|
+
method: 'post',
|
|
54
|
+
headers: {
|
|
55
|
+
'Content-Type': 'application/json'
|
|
56
|
+
},
|
|
57
|
+
body: JSON.stringify(VaraNftApi.parseNftRequest(publicKey))
|
|
58
|
+
});
|
|
59
|
+
const result = await resp.json();
|
|
60
|
+
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
62
|
+
return result === null || result === void 0 ? void 0 : (_result$data = result.data) === null || _result$data === void 0 ? void 0 : (_result$data$accountB = _result$data.accountById) === null || _result$data$accountB === void 0 ? void 0 : _result$data$accountB.nfts;
|
|
63
|
+
}
|
|
64
|
+
async handleNfts(params) {
|
|
65
|
+
try {
|
|
66
|
+
await Promise.all(this.addresses.map(async address => {
|
|
67
|
+
const nfts = await this.getNftByAccount(address);
|
|
68
|
+
for (const nft of nfts) {
|
|
69
|
+
const parsedNft = {
|
|
70
|
+
id: nft.tokenId,
|
|
71
|
+
chain: this.chain,
|
|
72
|
+
owner: address,
|
|
73
|
+
name: nft.name,
|
|
74
|
+
image: this.parseUrl(nft.mediaUrl),
|
|
75
|
+
description: nft.description,
|
|
76
|
+
collectionId: nft.collection.id
|
|
77
|
+
};
|
|
78
|
+
const parsedCollection = {
|
|
79
|
+
collectionId: nft.collection.id,
|
|
80
|
+
chain: this.chain,
|
|
81
|
+
collectionName: nft.collection.name
|
|
82
|
+
};
|
|
83
|
+
params.updateItem(this.chain, parsedNft, address);
|
|
84
|
+
params.updateCollection(this.chain, parsedCollection);
|
|
85
|
+
}
|
|
86
|
+
}));
|
|
87
|
+
} catch (e) {
|
|
88
|
+
console.error(`Failed to fetch ${this.chain} nft`, e);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async fetchNfts(params) {
|
|
92
|
+
try {
|
|
93
|
+
await this.handleNfts(params);
|
|
94
|
+
} catch (e) {
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
97
|
+
return 1;
|
|
98
|
+
}
|
|
99
|
+
}
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./cjs/detectPackage.js"
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
|
-
"version": "1.1.
|
|
20
|
+
"version": "1.1.17-0",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -279,6 +279,11 @@
|
|
|
279
279
|
"require": "./cjs/koni/api/nft/unique_nft/uniqueNftV2.js",
|
|
280
280
|
"default": "./koni/api/nft/unique_nft/uniqueNftV2.js"
|
|
281
281
|
},
|
|
282
|
+
"./koni/api/nft/vara_nft": {
|
|
283
|
+
"types": "./koni/api/nft/vara_nft/index.d.ts",
|
|
284
|
+
"require": "./cjs/koni/api/nft/vara_nft/index.js",
|
|
285
|
+
"default": "./koni/api/nft/vara_nft/index.js"
|
|
286
|
+
},
|
|
282
287
|
"./koni/api/nft/wasm_nft": {
|
|
283
288
|
"types": "./koni/api/nft/wasm_nft/index.d.ts",
|
|
284
289
|
"require": "./cjs/koni/api/nft/wasm_nft/index.js",
|
|
@@ -673,6 +678,16 @@
|
|
|
673
678
|
"require": "./cjs/services/migration-service/scripts/DeleteChain.js",
|
|
674
679
|
"default": "./services/migration-service/scripts/DeleteChain.js"
|
|
675
680
|
},
|
|
681
|
+
"./services/migration-service/scripts/EnableChain": {
|
|
682
|
+
"types": "./services/migration-service/scripts/EnableChain.d.ts",
|
|
683
|
+
"require": "./cjs/services/migration-service/scripts/EnableChain.js",
|
|
684
|
+
"default": "./services/migration-service/scripts/EnableChain.js"
|
|
685
|
+
},
|
|
686
|
+
"./services/migration-service/scripts/EnableVaraChain": {
|
|
687
|
+
"types": "./services/migration-service/scripts/EnableVaraChain.d.ts",
|
|
688
|
+
"require": "./cjs/services/migration-service/scripts/EnableVaraChain.js",
|
|
689
|
+
"default": "./services/migration-service/scripts/EnableVaraChain.js"
|
|
690
|
+
},
|
|
676
691
|
"./services/migration-service/scripts/MigrateAuthUrls": {
|
|
677
692
|
"types": "./services/migration-service/scripts/MigrateAuthUrls.d.ts",
|
|
678
693
|
"require": "./cjs/services/migration-service/scripts/MigrateAuthUrls.js",
|
|
@@ -708,6 +723,16 @@
|
|
|
708
723
|
"require": "./cjs/services/migration-service/scripts/MigrateNetworkSettings.js",
|
|
709
724
|
"default": "./services/migration-service/scripts/MigrateNetworkSettings.js"
|
|
710
725
|
},
|
|
726
|
+
"./services/migration-service/scripts/MigratePioneerProvider": {
|
|
727
|
+
"types": "./services/migration-service/scripts/MigratePioneerProvider.d.ts",
|
|
728
|
+
"require": "./cjs/services/migration-service/scripts/MigratePioneerProvider.js",
|
|
729
|
+
"default": "./services/migration-service/scripts/MigratePioneerProvider.js"
|
|
730
|
+
},
|
|
731
|
+
"./services/migration-service/scripts/MigrateProvider": {
|
|
732
|
+
"types": "./services/migration-service/scripts/MigrateProvider.d.ts",
|
|
733
|
+
"require": "./cjs/services/migration-service/scripts/MigrateProvider.js",
|
|
734
|
+
"default": "./services/migration-service/scripts/MigrateProvider.js"
|
|
735
|
+
},
|
|
711
736
|
"./services/migration-service/scripts/MigrateSettings": {
|
|
712
737
|
"types": "./services/migration-service/scripts/MigrateSettings.d.ts",
|
|
713
738
|
"require": "./cjs/services/migration-service/scripts/MigrateSettings.js",
|
|
@@ -1232,11 +1257,11 @@
|
|
|
1232
1257
|
"@reduxjs/toolkit": "^1.9.1",
|
|
1233
1258
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
1234
1259
|
"@substrate/connect": "^0.7.26",
|
|
1235
|
-
"@subwallet/chain-list": "0.2.16-beta.
|
|
1236
|
-
"@subwallet/extension-base": "^1.1.
|
|
1237
|
-
"@subwallet/extension-chains": "^1.1.
|
|
1238
|
-
"@subwallet/extension-dapp": "^1.1.
|
|
1239
|
-
"@subwallet/extension-inject": "^1.1.
|
|
1260
|
+
"@subwallet/chain-list": "0.2.16-beta.12",
|
|
1261
|
+
"@subwallet/extension-base": "^1.1.17-0",
|
|
1262
|
+
"@subwallet/extension-chains": "^1.1.17-0",
|
|
1263
|
+
"@subwallet/extension-dapp": "^1.1.17-0",
|
|
1264
|
+
"@subwallet/extension-inject": "^1.1.17-0",
|
|
1240
1265
|
"@subwallet/keyring": "^0.1.1",
|
|
1241
1266
|
"@subwallet/ui-keyring": "^0.1.1",
|
|
1242
1267
|
"@walletconnect/sign-client": "^2.8.4",
|
package/packageInfo.js
CHANGED
|
@@ -7,5 +7,5 @@ export const packageInfo = {
|
|
|
7
7
|
name: '@subwallet/extension-base',
|
|
8
8
|
path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
|
|
9
9
|
type: 'esm',
|
|
10
|
-
version: '1.1.
|
|
10
|
+
version: '1.1.17-0'
|
|
11
11
|
};
|
|
@@ -44,7 +44,8 @@ export const _NFT_CHAIN_GROUP = {
|
|
|
44
44
|
statemine: ['statemine'],
|
|
45
45
|
statemint: ['statemint'],
|
|
46
46
|
unique_network: ['unique_network'],
|
|
47
|
-
bitcountry: ['bitcountry', 'pioneer']
|
|
47
|
+
bitcountry: ['bitcountry', 'pioneer'],
|
|
48
|
+
vara: ['vara_network']
|
|
48
49
|
};
|
|
49
50
|
|
|
50
51
|
// Staking--------------------------------------------------------------------------------------------------------------
|
|
@@ -217,7 +218,7 @@ export const _XCM_TYPE = {
|
|
|
217
218
|
PR: `${_SubstrateChainType.PARACHAIN}-${_SubstrateChainType.RELAYCHAIN}` // UMP
|
|
218
219
|
};
|
|
219
220
|
|
|
220
|
-
export const _DEFAULT_ACTIVE_CHAINS = [..._DEFAULT_CHAINS];
|
|
221
|
+
export const _DEFAULT_ACTIVE_CHAINS = [..._DEFAULT_CHAINS, 'vara_network'];
|
|
221
222
|
export const EVM_PASS_CONNECT_STATUS = {
|
|
222
223
|
acala: ['acala_evm', 'karura_evm']
|
|
223
224
|
};
|
|
@@ -834,6 +834,8 @@ export class ChainService {
|
|
|
834
834
|
let evmInfo = null;
|
|
835
835
|
if (params.chainSpec.genesisHash !== '') {
|
|
836
836
|
substrateInfo = {
|
|
837
|
+
crowdloanFunds: params.chainSpec.crowdloanFunds || null,
|
|
838
|
+
crowdloanParaId: params.chainSpec.crowdloanParaId || null,
|
|
837
839
|
addressPrefix: params.chainSpec.addressPrefix,
|
|
838
840
|
blockExplorer: params.chainEditInfo.blockExplorer || null,
|
|
839
841
|
chainType: params.chainSpec.paraId !== null ? _SubstrateChainType.PARACHAIN : _SubstrateChainType.RELAYCHAIN,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _AssetRef, _AssetType, _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
|
|
1
|
+
import { _AssetRef, _AssetType, _ChainAsset, _ChainInfo, _CrowdloanFund } from '@subwallet/chain-list/types';
|
|
2
2
|
import { _CHAIN_VALIDATION_ERROR } from '@subwallet/extension-base/services/chain-service/handler/types';
|
|
3
3
|
import { BehaviorSubject } from 'rxjs';
|
|
4
4
|
import Web3 from 'web3';
|
|
@@ -89,6 +89,8 @@ export declare type _NetworkUpsertParams = {
|
|
|
89
89
|
genesisHash: string;
|
|
90
90
|
paraId: number | null;
|
|
91
91
|
addressPrefix: number;
|
|
92
|
+
crowdloanFunds?: _CrowdloanFund[] | null;
|
|
93
|
+
crowdloanParaId?: number | null;
|
|
92
94
|
evmChainId: number | null;
|
|
93
95
|
existentialDeposit: string;
|
|
94
96
|
decimals: number;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import BaseMigrationJob from '@subwallet/extension-base/services/migration-service/Base';
|
|
5
|
+
export default class EnableChain extends BaseMigrationJob {
|
|
6
|
+
async run() {
|
|
7
|
+
const state = this.state;
|
|
8
|
+
await state.enableChain(this.slug, true);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
export default class MigrateEthProvider extends
|
|
3
|
-
|
|
1
|
+
import MigrateProvider from './MigrateProvider';
|
|
2
|
+
export default class MigrateEthProvider extends MigrateProvider {
|
|
3
|
+
newProvider: string;
|
|
4
|
+
oldProvider: string;
|
|
5
|
+
slug: string;
|
|
4
6
|
}
|
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import
|
|
5
|
-
export default class MigrateEthProvider extends
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const oldProvider = 'Cloudflare';
|
|
10
|
-
const newProvider = 'Llamarpc';
|
|
11
|
-
const chainState = state.getChainStateByKey(slug);
|
|
12
|
-
const chainInfo = state.getChainInfo(slug);
|
|
13
|
-
if (chainState.active && chainState.currentProvider === oldProvider) {
|
|
14
|
-
await state.upsertChainInfo({
|
|
15
|
-
mode: 'update',
|
|
16
|
-
chainEditInfo: {
|
|
17
|
-
currentProvider: newProvider,
|
|
18
|
-
slug: slug,
|
|
19
|
-
providers: chainInfo.providers
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
4
|
+
import MigrateProvider from "./MigrateProvider.js";
|
|
5
|
+
export default class MigrateEthProvider extends MigrateProvider {
|
|
6
|
+
newProvider = 'ethereum';
|
|
7
|
+
oldProvider = 'Cloudflare';
|
|
8
|
+
slug = 'Llamarpc';
|
|
24
9
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import MigrateProvider from "./MigrateProvider.js";
|
|
5
|
+
export default class MigratePioneerProvider extends MigrateProvider {
|
|
6
|
+
slug = 'pioneer';
|
|
7
|
+
oldProvider = 'OnFinality';
|
|
8
|
+
newProvider = 'Pioneer';
|
|
9
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import BaseMigrationJob from '@subwallet/extension-base/services/migration-service/Base';
|
|
2
|
+
export default abstract class MigrateProvider extends BaseMigrationJob {
|
|
3
|
+
abstract slug: string;
|
|
4
|
+
abstract oldProvider: string;
|
|
5
|
+
abstract newProvider: string;
|
|
6
|
+
run(): Promise<void>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import BaseMigrationJob from '@subwallet/extension-base/services/migration-service/Base';
|
|
5
|
+
export default class MigrateProvider extends BaseMigrationJob {
|
|
6
|
+
async run() {
|
|
7
|
+
const state = this.state;
|
|
8
|
+
const chainState = state.getChainStateByKey(this.slug);
|
|
9
|
+
const chainInfo = state.getChainInfo(this.slug);
|
|
10
|
+
if (chainState.active && chainState.currentProvider === this.oldProvider) {
|
|
11
|
+
await state.upsertChainInfo({
|
|
12
|
+
mode: 'update',
|
|
13
|
+
chainEditInfo: {
|
|
14
|
+
currentProvider: this.newProvider,
|
|
15
|
+
slug: this.slug,
|
|
16
|
+
providers: chainInfo.providers
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import DeleteChain from '@subwallet/extension-base/services/migration-service/scripts/DeleteChain';
|
|
5
5
|
import AutoEnableChainsTokens from "./AutoEnableChainsTokens.js";
|
|
6
|
+
import EnableVaraChain from "./EnableVaraChain.js";
|
|
6
7
|
import MigrateAuthUrls from "./MigrateAuthUrls.js";
|
|
7
8
|
import MigrateAutoLock from "./MigrateAutoLock.js";
|
|
8
9
|
import MigrateChainPatrol from "./MigrateChainPatrol.js";
|
|
@@ -10,6 +11,7 @@ import MigrateEthProvider from "./MigrateEthProvider.js";
|
|
|
10
11
|
import MigrateImportedToken from "./MigrateImportedToken.js";
|
|
11
12
|
import MigrateLedgerAccount from "./MigrateLedgerAccount.js";
|
|
12
13
|
import MigrateNetworkSettings from "./MigrateNetworkSettings.js";
|
|
14
|
+
import MigratePioneerProvider from "./MigratePioneerProvider.js";
|
|
13
15
|
import MigrateSettings from "./MigrateSettings.js";
|
|
14
16
|
import MigrateTokenDecimals from "./MigrateTokenDecimals.js";
|
|
15
17
|
import MigrateTransactionHistory from "./MigrateTransactionHistory.js";
|
|
@@ -28,6 +30,8 @@ export default {
|
|
|
28
30
|
'1.0.12-02': MigrateEthProvider,
|
|
29
31
|
'1.1.6-01': MigrateWalletReference,
|
|
30
32
|
'1.1.7': DeleteChain,
|
|
31
|
-
'1.1.13-01': MigrateTokenDecimals
|
|
33
|
+
'1.1.13-01': MigrateTokenDecimals,
|
|
34
|
+
'1.1.17-01': MigratePioneerProvider,
|
|
35
|
+
'1.1.17-03': EnableVaraChain
|
|
32
36
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
33
37
|
};
|
|
@@ -68,6 +68,7 @@ export default class TransactionService {
|
|
|
68
68
|
address,
|
|
69
69
|
chain,
|
|
70
70
|
edAsWarning,
|
|
71
|
+
extrinsicType,
|
|
71
72
|
isTransferAll,
|
|
72
73
|
transaction
|
|
73
74
|
} = validation;
|
|
@@ -77,7 +78,11 @@ export default class TransactionService {
|
|
|
77
78
|
|
|
78
79
|
// Return unsupported error if not found transaction
|
|
79
80
|
if (!transaction) {
|
|
80
|
-
|
|
81
|
+
if (extrinsicType === ExtrinsicType.SEND_NFT) {
|
|
82
|
+
validation.errors.push(new TransactionError(BasicTxErrorType.UNSUPPORTED, t('This feature is not yet available for this NFT')));
|
|
83
|
+
} else {
|
|
84
|
+
validation.errors.push(new TransactionError(BasicTxErrorType.UNSUPPORTED));
|
|
85
|
+
}
|
|
81
86
|
}
|
|
82
87
|
const validationResponse = {
|
|
83
88
|
status: undefined,
|