@subwallet/extension-base 1.0.13-0 → 1.0.13-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/background/KoniTypes.d.ts +37 -0
- package/background/KoniTypes.js +8 -1
- package/background/handlers/Extension.js +17 -2
- package/background/types.d.ts +6 -1
- package/cjs/background/KoniTypes.js +10 -2
- package/cjs/background/handlers/Extension.js +22 -6
- package/cjs/constants/index.js +7 -1
- package/cjs/defaults.js +1 -1
- package/cjs/koni/api/dotsama/balance.js +5 -0
- package/cjs/koni/api/dotsama/transfer.js +6 -0
- package/cjs/koni/background/cron.js +12 -1
- package/cjs/koni/background/handlers/Extension.js +324 -147
- package/cjs/koni/background/handlers/State.js +222 -50
- package/cjs/koni/background/subscription.js +3 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/constants.js +10 -4
- package/cjs/services/chain-service/handler/SubstrateApi.js +2 -1
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +3 -1
- package/cjs/services/chain-service/handler/manta/MantaPrivateHandler.js +147 -0
- package/cjs/services/chain-service/index.js +54 -5
- package/cjs/services/chain-service/utils.js +6 -1
- package/cjs/services/event-service/types.js +3 -1
- package/cjs/services/storage-service/DatabaseService.js +31 -1
- package/cjs/services/storage-service/databases/index.js +3 -0
- package/cjs/services/storage-service/db-stores/MantaPay.js +40 -0
- package/cjs/utils/index.js +12 -0
- package/cjs/utils/lazy.js +52 -0
- package/constants/index.d.ts +2 -0
- package/constants/index.js +2 -0
- package/defaults.d.ts +1 -1
- package/defaults.js +1 -1
- package/koni/api/dotsama/balance.js +6 -1
- package/koni/api/dotsama/transfer.js +7 -1
- package/koni/background/cron.d.ts +1 -0
- package/koni/background/cron.js +13 -2
- package/koni/background/handlers/Extension.d.ts +5 -0
- package/koni/background/handlers/Extension.js +186 -11
- package/koni/background/handlers/State.d.ts +15 -3
- package/koni/background/handlers/State.js +224 -49
- package/koni/background/subscription.js +3 -0
- package/package.json +22 -5
- package/packageInfo.js +1 -1
- package/services/chain-service/constants.d.ts +3 -0
- package/services/chain-service/constants.js +5 -2
- package/services/chain-service/handler/SubstrateApi.d.ts +1 -1
- package/services/chain-service/handler/SubstrateApi.js +2 -1
- package/services/chain-service/handler/SubstrateChainHandler.d.ts +1 -1
- package/services/chain-service/handler/SubstrateChainHandler.js +3 -1
- package/services/chain-service/handler/manta/MantaPrivateHandler.d.ts +30 -0
- package/services/chain-service/handler/manta/MantaPrivateHandler.js +140 -0
- package/services/chain-service/handler/types.d.ts +2 -0
- package/services/chain-service/index.d.ts +7 -3
- package/services/chain-service/index.js +56 -7
- package/services/chain-service/utils.d.ts +1 -0
- package/services/chain-service/utils.js +5 -1
- package/services/event-service/types.d.ts +3 -0
- package/services/event-service/types.js +3 -1
- package/services/storage-service/DatabaseService.d.ts +10 -1
- package/services/storage-service/DatabaseService.js +31 -1
- package/services/storage-service/databases/index.d.ts +2 -0
- package/services/storage-service/databases/index.js +3 -0
- package/services/storage-service/db-stores/MantaPay.d.ts +9 -0
- package/services/storage-service/db-stores/MantaPay.js +32 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +2 -1
- package/utils/lazy.d.ts +2 -0
- package/utils/lazy.js +43 -0
|
@@ -9,6 +9,7 @@ var _chainList = require("@subwallet/chain-list");
|
|
|
9
9
|
var _types = require("@subwallet/chain-list/types");
|
|
10
10
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
11
11
|
var _EvmChainHandler = require("@subwallet/extension-base/services/chain-service/handler/EvmChainHandler");
|
|
12
|
+
var _MantaPrivateHandler = require("@subwallet/extension-base/services/chain-service/handler/manta/MantaPrivateHandler");
|
|
12
13
|
var _SubstrateChainHandler = require("@subwallet/extension-base/services/chain-service/handler/SubstrateChainHandler");
|
|
13
14
|
var _types2 = require("@subwallet/extension-base/services/chain-service/handler/types");
|
|
14
15
|
var _types3 = require("@subwallet/extension-base/services/chain-service/types");
|
|
@@ -29,6 +30,10 @@ class ChainService {
|
|
|
29
30
|
};
|
|
30
31
|
lockChainInfoMap = false; // prevent unwanted changes (edit, enable, disable) to chainInfoMap
|
|
31
32
|
|
|
33
|
+
get mantaPay() {
|
|
34
|
+
return this.mantaChainHandler;
|
|
35
|
+
}
|
|
36
|
+
|
|
32
37
|
// TODO: consider BehaviorSubject
|
|
33
38
|
chainInfoMapSubject = new _rxjs.Subject();
|
|
34
39
|
chainStateMapSubject = new _rxjs.Subject();
|
|
@@ -42,6 +47,10 @@ class ChainService {
|
|
|
42
47
|
constructor(dbService, eventService) {
|
|
43
48
|
this.dbService = dbService;
|
|
44
49
|
this.eventService = eventService;
|
|
50
|
+
this.substrateChainHandler = new _SubstrateChainHandler.SubstrateChainHandler();
|
|
51
|
+
this.evmChainHandler = new _EvmChainHandler.EvmChainHandler();
|
|
52
|
+
this.mantaChainHandler = new _MantaPrivateHandler.MantaPrivateHandler(dbService);
|
|
53
|
+
this.chainInfoMapSubject.next(this.dataMap.chainInfoMap);
|
|
45
54
|
this.chainStateMapSubject.next(this.dataMap.chainStateMap);
|
|
46
55
|
this.chainInfoMapSubject.next(this.dataMap.chainInfoMap);
|
|
47
56
|
this.assetRegistrySubject.next(this.dataMap.assetRegistry);
|
|
@@ -225,6 +234,15 @@ class ChainService {
|
|
|
225
234
|
getAssetBySlug(slug) {
|
|
226
235
|
return this.getAssetRegistry()[slug];
|
|
227
236
|
}
|
|
237
|
+
getMantaZkAssets(chain) {
|
|
238
|
+
const result = {};
|
|
239
|
+
Object.values(this.getAssetRegistry()).forEach(chainAsset => {
|
|
240
|
+
if (chainAsset.originChain === chain && (0, _utils._isAssetFungibleToken)(chainAsset) && chainAsset.symbol.startsWith(_constants._ZK_ASSET_PREFIX)) {
|
|
241
|
+
result[chainAsset.slug] = chainAsset;
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
return result;
|
|
245
|
+
}
|
|
228
246
|
getFungibleTokensByChain(chainSlug) {
|
|
229
247
|
let checkActive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
230
248
|
const result = {};
|
|
@@ -415,11 +433,21 @@ class ChainService {
|
|
|
415
433
|
}
|
|
416
434
|
};
|
|
417
435
|
if (chainInfo.substrateInfo !== null && chainInfo.substrateInfo !== undefined) {
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
436
|
+
if (_constants._MANTA_ZK_CHAIN_GROUP.includes(chainInfo.slug)) {
|
|
437
|
+
const apiPromise = await this.mantaChainHandler.initMantaPay(endpoint, chainInfo.slug);
|
|
438
|
+
const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
|
|
439
|
+
providerName,
|
|
440
|
+
externalApiPromise: apiPromise,
|
|
441
|
+
onUpdateStatus
|
|
442
|
+
});
|
|
443
|
+
this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
|
|
444
|
+
} else {
|
|
445
|
+
const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
|
|
446
|
+
providerName,
|
|
447
|
+
onUpdateStatus
|
|
448
|
+
});
|
|
449
|
+
this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
|
|
450
|
+
}
|
|
423
451
|
}
|
|
424
452
|
if (chainInfo.evmInfo !== null && chainInfo.evmInfo !== undefined) {
|
|
425
453
|
const chainApi = await this.evmChainHandler.initApi(chainInfo.slug, endpoint, {
|
|
@@ -1179,6 +1207,27 @@ class ChainService {
|
|
|
1179
1207
|
});
|
|
1180
1208
|
this.store.set('AssetSetting', assetSettings);
|
|
1181
1209
|
}
|
|
1210
|
+
setMantaZkAssetSettings(visible) {
|
|
1211
|
+
const zkAssetSettings = {};
|
|
1212
|
+
Object.values(this.dataMap.assetRegistry).forEach(asset => {
|
|
1213
|
+
if ((0, _utils._isMantaZkAsset)(asset)) {
|
|
1214
|
+
zkAssetSettings[asset.slug] = {
|
|
1215
|
+
visible
|
|
1216
|
+
};
|
|
1217
|
+
}
|
|
1218
|
+
});
|
|
1219
|
+
this.store.get('AssetSetting', storedAssetSettings => {
|
|
1220
|
+
const newAssetSettings = {
|
|
1221
|
+
...storedAssetSettings,
|
|
1222
|
+
...zkAssetSettings
|
|
1223
|
+
};
|
|
1224
|
+
this.store.set('AssetSetting', newAssetSettings);
|
|
1225
|
+
this.assetSettingSubject.next(newAssetSettings);
|
|
1226
|
+
Object.keys(zkAssetSettings).forEach(slug => {
|
|
1227
|
+
this.eventService.emit('asset.updateState', slug);
|
|
1228
|
+
});
|
|
1229
|
+
});
|
|
1230
|
+
}
|
|
1182
1231
|
async getStoreAssetSettings() {
|
|
1183
1232
|
return new Promise(resolve => {
|
|
1184
1233
|
this.store.get('AssetSetting', resolve);
|
|
@@ -51,6 +51,7 @@ exports._isCustomProvider = _isCustomProvider;
|
|
|
51
51
|
exports._isEqualContractAddress = _isEqualContractAddress;
|
|
52
52
|
exports._isEqualSmartContractAsset = _isEqualSmartContractAsset;
|
|
53
53
|
exports._isLocalToken = _isLocalToken;
|
|
54
|
+
exports._isMantaZkAsset = _isMantaZkAsset;
|
|
54
55
|
exports._isNativeToken = _isNativeToken;
|
|
55
56
|
exports._isNativeTokenBySlug = _isNativeTokenBySlug;
|
|
56
57
|
exports._isPureEvmChain = _isPureEvmChain;
|
|
@@ -67,6 +68,7 @@ exports._parseAssetRefKey = _parseAssetRefKey;
|
|
|
67
68
|
exports._parseMetadataForSmartContractAsset = _parseMetadataForSmartContractAsset;
|
|
68
69
|
exports.findChainInfoByHalfGenesisHash = exports.findChainInfoByChainId = void 0;
|
|
69
70
|
var _types = require("@subwallet/chain-list/types");
|
|
71
|
+
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
70
72
|
var _types2 = require("@subwallet/extension-base/services/chain-service/types");
|
|
71
73
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
72
74
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
@@ -424,4 +426,7 @@ const findChainInfoByChainId = (chainMap, chainId) => {
|
|
|
424
426
|
}
|
|
425
427
|
return null;
|
|
426
428
|
};
|
|
427
|
-
exports.findChainInfoByChainId = findChainInfoByChainId;
|
|
429
|
+
exports.findChainInfoByChainId = findChainInfoByChainId;
|
|
430
|
+
function _isMantaZkAsset(chainAsset) {
|
|
431
|
+
return _constants._MANTA_ZK_CHAIN_GROUP.includes(chainAsset.originChain) && chainAsset.symbol.startsWith(_constants._ZK_ASSET_PREFIX);
|
|
432
|
+
}
|
|
@@ -7,5 +7,7 @@ exports.COMMON_RELOAD_EVENTS = void 0;
|
|
|
7
7
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
|
|
10
|
-
const COMMON_RELOAD_EVENTS = ['account.updateCurrent', 'asset.updateState', 'account.add', 'chain.updateState', 'account.remove', 'chain.add'
|
|
10
|
+
const COMMON_RELOAD_EVENTS = ['account.updateCurrent', 'asset.updateState', 'account.add', 'chain.updateState', 'account.remove', 'chain.add', 'mantaPay.initSync',
|
|
11
|
+
// TODO: re-check this
|
|
12
|
+
'mantaPay.enable'];
|
|
11
13
|
exports.COMMON_RELOAD_EVENTS = COMMON_RELOAD_EVENTS;
|
|
@@ -9,6 +9,7 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
|
9
9
|
var _databases = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/databases"));
|
|
10
10
|
var _dbStores = require("@subwallet/extension-base/services/storage-service/db-stores");
|
|
11
11
|
var _ChainStakingMetadata = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/ChainStakingMetadata"));
|
|
12
|
+
var _MantaPay = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/MantaPay"));
|
|
12
13
|
var _NominatorMetadata = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/NominatorMetadata"));
|
|
13
14
|
var _utils = require("@subwallet/extension-base/utils");
|
|
14
15
|
var _util = require("@polkadot/util");
|
|
@@ -39,7 +40,8 @@ class DatabaseService {
|
|
|
39
40
|
asset: new _dbStores.AssetStore(this._db.asset),
|
|
40
41
|
// staking
|
|
41
42
|
chainStakingMetadata: new _ChainStakingMetadata.default(this._db.chainStakingMetadata),
|
|
42
|
-
nominatorMetadata: new _NominatorMetadata.default(this._db.nominatorMetadata)
|
|
43
|
+
nominatorMetadata: new _NominatorMetadata.default(this._db.nominatorMetadata),
|
|
44
|
+
mantaPay: new _MantaPay.default(this._db.mantaPay)
|
|
43
45
|
};
|
|
44
46
|
}
|
|
45
47
|
async updatePriceStore(priceData) {
|
|
@@ -237,5 +239,33 @@ class DatabaseService {
|
|
|
237
239
|
});
|
|
238
240
|
});
|
|
239
241
|
}
|
|
242
|
+
async setMantaPayData(data) {
|
|
243
|
+
await this._db.mantaPay.put(data); // just override if exist
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
async updateMantaPayData(key, data) {
|
|
247
|
+
await this._db.mantaPay.update(key, data); // just override if exist
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
async getMantaPayData(key) {
|
|
251
|
+
return this._db.mantaPay.get({
|
|
252
|
+
key
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
async deleteMantaPayConfig(key) {
|
|
256
|
+
return this.stores.mantaPay.deleteRecord(key);
|
|
257
|
+
}
|
|
258
|
+
subscribeMantaPayConfig(chain, callback) {
|
|
259
|
+
this.stores.mantaPay.subscribeMantaPayConfig(chain).subscribe({
|
|
260
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
261
|
+
next: data => callback && callback(data)
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
async getMantaPayConfig(chain) {
|
|
265
|
+
return this.stores.mantaPay.getConfig(chain);
|
|
266
|
+
}
|
|
267
|
+
async getMantaPayFirstConfig(chain) {
|
|
268
|
+
return this.stores.mantaPay.getFirstConfig(chain);
|
|
269
|
+
}
|
|
240
270
|
}
|
|
241
271
|
exports.default = DatabaseService;
|
|
@@ -36,6 +36,9 @@ class KoniDatabase extends _dexie.default {
|
|
|
36
36
|
this.conditionalVersion(2, {
|
|
37
37
|
metadata: 'genesisHash, chain'
|
|
38
38
|
});
|
|
39
|
+
this.conditionalVersion(3, {
|
|
40
|
+
mantaPay: 'key, chain'
|
|
41
|
+
});
|
|
39
42
|
}
|
|
40
43
|
conditionalVersion(version, schema, upgrade) {
|
|
41
44
|
if (this.schemaVersion != null && this.schemaVersion < version) {
|
|
@@ -0,0 +1,40 @@
|
|
|
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 _BaseStore = _interopRequireDefault(require("@subwallet/extension-base/services/storage-service/db-stores/BaseStore"));
|
|
9
|
+
var _dexie = require("dexie");
|
|
10
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
11
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
|
|
13
|
+
class MantaPayStore extends _BaseStore.default {
|
|
14
|
+
async getAll() {
|
|
15
|
+
return this.table.toArray();
|
|
16
|
+
}
|
|
17
|
+
subscribeMantaPayConfig(chain) {
|
|
18
|
+
return (0, _dexie.liveQuery)(
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
|
|
20
|
+
() => this.table.where({
|
|
21
|
+
chain
|
|
22
|
+
}).filter(data => (data === null || data === void 0 ? void 0 : data.key) && (data === null || data === void 0 ? void 0 : data.key.startsWith('config'))).toArray());
|
|
23
|
+
}
|
|
24
|
+
getConfig(chain) {
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
|
|
26
|
+
return this.table.where({
|
|
27
|
+
chain
|
|
28
|
+
}).filter(data => (data === null || data === void 0 ? void 0 : data.key) && (data === null || data === void 0 ? void 0 : data.key.startsWith('config'))).toArray();
|
|
29
|
+
}
|
|
30
|
+
getFirstConfig(chain) {
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return
|
|
32
|
+
return this.table.where({
|
|
33
|
+
chain
|
|
34
|
+
}).filter(data => (data === null || data === void 0 ? void 0 : data.key) && (data === null || data === void 0 ? void 0 : data.key.startsWith('config'))).first();
|
|
35
|
+
}
|
|
36
|
+
deleteRecord(key) {
|
|
37
|
+
return this.table.where('key').equals(key).delete();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.default = MantaPayStore;
|
package/cjs/utils/index.js
CHANGED
|
@@ -97,6 +97,18 @@ Object.keys(_environment).forEach(function (key) {
|
|
|
97
97
|
}
|
|
98
98
|
});
|
|
99
99
|
});
|
|
100
|
+
var _lazy = require("./lazy");
|
|
101
|
+
Object.keys(_lazy).forEach(function (key) {
|
|
102
|
+
if (key === "default" || key === "__esModule") return;
|
|
103
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
104
|
+
if (key in exports && exports[key] === _lazy[key]) return;
|
|
105
|
+
Object.defineProperty(exports, key, {
|
|
106
|
+
enumerable: true,
|
|
107
|
+
get: function () {
|
|
108
|
+
return _lazy[key];
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
100
112
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
101
113
|
// SPDX-License-Identifier: Apache-2.0
|
|
102
114
|
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.addLazy = addLazy;
|
|
7
|
+
exports.removeLazy = removeLazy;
|
|
8
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
9
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
10
|
+
|
|
11
|
+
const lazyMap = {};
|
|
12
|
+
function removeLazy(key) {
|
|
13
|
+
if (lazyMap[key]) {
|
|
14
|
+
clearTimeout(lazyMap[key].timeout);
|
|
15
|
+
delete lazyMap[key];
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Add or update new lazy thread
|
|
20
|
+
function addLazy(key, callback) {
|
|
21
|
+
let lazyTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 300;
|
|
22
|
+
let maxLazyTime = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 3000;
|
|
23
|
+
const existed = lazyMap[key];
|
|
24
|
+
const now = new Date().getTime();
|
|
25
|
+
if (existed) {
|
|
26
|
+
clearTimeout(existed.timeout);
|
|
27
|
+
lazyMap[key] = {
|
|
28
|
+
...existed,
|
|
29
|
+
callback
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// Fire callback if last fire is too long
|
|
33
|
+
if (now - existed.lastFire >= maxLazyTime) {
|
|
34
|
+
callback();
|
|
35
|
+
lazyMap[key].lastFire = now;
|
|
36
|
+
} else {
|
|
37
|
+
lazyMap[key].timeout = setTimeout(() => {
|
|
38
|
+
// This will be fire in the last call of lazy thread
|
|
39
|
+
callback();
|
|
40
|
+
lazyMap[key].lastFire = new Date().getTime();
|
|
41
|
+
removeLazy(key);
|
|
42
|
+
}, lazyTime);
|
|
43
|
+
}
|
|
44
|
+
} else {
|
|
45
|
+
// Fire callback immediately in the first time
|
|
46
|
+
callback();
|
|
47
|
+
lazyMap[key] = {
|
|
48
|
+
callback,
|
|
49
|
+
lastFire: now
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
package/constants/index.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export declare const CRON_GET_API_MAP_STATUS = 10000;
|
|
|
12
12
|
export declare const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
|
|
13
13
|
export declare const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
|
|
14
14
|
export declare const CRON_RECOVER_HISTORY_INTERVAL = 30000;
|
|
15
|
+
export declare const CRON_SYNC_MANTA_PAY = 300000;
|
|
16
|
+
export declare const MANTA_PAY_BALANCE_INTERVAL = 30000;
|
|
15
17
|
export declare const ALL_ACCOUNT_KEY = "ALL";
|
|
16
18
|
export declare const ALL_NETWORK_KEY = "all";
|
|
17
19
|
export declare const ALL_GENESIS_HASH: null;
|
package/constants/index.js
CHANGED
|
@@ -15,6 +15,8 @@ export const CRON_GET_API_MAP_STATUS = 10000;
|
|
|
15
15
|
export const CRON_REFRESH_CHAIN_STAKING_METADATA = 900000;
|
|
16
16
|
export const CRON_REFRESH_CHAIN_NOMINATOR_METADATA = 1800000;
|
|
17
17
|
export const CRON_RECOVER_HISTORY_INTERVAL = 30000;
|
|
18
|
+
export const CRON_SYNC_MANTA_PAY = 300000;
|
|
19
|
+
export const MANTA_PAY_BALANCE_INTERVAL = 30000;
|
|
18
20
|
export const ALL_ACCOUNT_KEY = 'ALL';
|
|
19
21
|
export const ALL_NETWORK_KEY = 'all';
|
|
20
22
|
export const ALL_GENESIS_HASH = null;
|
package/defaults.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare const ALLOWED_PATH: readonly ["/", "/settings/security", "/accounts/connect-ledger", "/accounts/restore-json", "/accounts/new-seed-phrase"];
|
|
1
|
+
declare const ALLOWED_PATH: readonly ["/", "/settings/security", "/accounts/connect-ledger", "/accounts/restore-json", "/accounts/detail", "/accounts/new-seed-phrase"];
|
|
2
2
|
declare const PHISHING_PAGE_REDIRECT = "/phishing-page-detected";
|
|
3
3
|
declare const EXTENSION_PREFIX: string;
|
|
4
4
|
declare const PORT_MOBILE: string;
|
package/defaults.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright 2019-2022 @polkadot/extension-base authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
const ALLOWED_PATH = ['/', '/settings/security', '/accounts/connect-ledger', '/accounts/restore-json', '/accounts/new-seed-phrase'];
|
|
4
|
+
const ALLOWED_PATH = ['/', '/settings/security', '/accounts/connect-ledger', '/accounts/restore-json', '/accounts/detail', '/accounts/new-seed-phrase'];
|
|
5
5
|
const PHISHING_PAGE_REDIRECT = '/phishing-page-detected';
|
|
6
6
|
const EXTENSION_PREFIX = process.env.EXTENSION_PREFIX || '';
|
|
7
7
|
const PORT_MOBILE = `${EXTENSION_PREFIX}mobile`;
|
|
@@ -9,7 +9,7 @@ import { getERC20Contract } from '@subwallet/extension-base/koni/api/tokens/evm/
|
|
|
9
9
|
import { getPSP22ContractPromise } from '@subwallet/extension-base/koni/api/tokens/wasm';
|
|
10
10
|
import { getDefaultWeightV2 } from '@subwallet/extension-base/koni/api/tokens/wasm/utils';
|
|
11
11
|
import { state } from '@subwallet/extension-base/koni/background/handlers';
|
|
12
|
-
import { _BALANCE_CHAIN_GROUP, _PURE_EVM_CHAINS } from '@subwallet/extension-base/services/chain-service/constants';
|
|
12
|
+
import { _BALANCE_CHAIN_GROUP, _MANTA_ZK_CHAIN_GROUP, _PURE_EVM_CHAINS, _ZK_ASSET_PREFIX } from '@subwallet/extension-base/services/chain-service/constants';
|
|
13
13
|
import { _checkSmartContractSupportByChain, _getChainNativeTokenSlug, _getContractAddressOfToken, _getTokenOnChainAssetId, _getTokenOnChainInfo, _isChainEvmCompatible, _isPureEvmChain, _isSubstrateRelayChain } from '@subwallet/extension-base/services/chain-service/utils';
|
|
14
14
|
import { categoryAddresses, sumBN } from '@subwallet/extension-base/utils';
|
|
15
15
|
import BigN from 'bignumber.js';
|
|
@@ -324,6 +324,11 @@ async function subscribeTokensAccountsPallet(addresses, chain, api, callBack, in
|
|
|
324
324
|
}
|
|
325
325
|
async function subscribeAssetsAccountPallet(addresses, chain, api, callBack) {
|
|
326
326
|
const tokenMap = state.getAssetByChainAndAsset(chain, [_AssetType.LOCAL]);
|
|
327
|
+
Object.values(tokenMap).forEach(token => {
|
|
328
|
+
if (_MANTA_ZK_CHAIN_GROUP.includes(token.originChain) && token.symbol.startsWith(_ZK_ASSET_PREFIX)) {
|
|
329
|
+
delete tokenMap[token.slug];
|
|
330
|
+
}
|
|
331
|
+
});
|
|
327
332
|
const unsubList = await Promise.all(Object.values(tokenMap).map(async tokenInfo => {
|
|
328
333
|
try {
|
|
329
334
|
const assetIndex = _getTokenOnChainAssetId(tokenInfo);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import { getPSP22ContractPromise } from '@subwallet/extension-base/koni/api/tokens/wasm';
|
|
5
5
|
import { getWasmContractGasLimit } from '@subwallet/extension-base/koni/api/tokens/wasm/utils';
|
|
6
|
-
import { _BALANCE_TOKEN_GROUP, _TRANSFER_CHAIN_GROUP, _TRANSFER_NOT_SUPPORTED_CHAINS } from '@subwallet/extension-base/services/chain-service/constants';
|
|
6
|
+
import { _BALANCE_TOKEN_GROUP, _MANTA_ZK_CHAIN_GROUP, _TRANSFER_CHAIN_GROUP, _TRANSFER_NOT_SUPPORTED_CHAINS, _ZK_ASSET_PREFIX } from '@subwallet/extension-base/services/chain-service/constants';
|
|
7
7
|
import { _getContractAddressOfToken, _getTokenOnChainAssetId, _getTokenOnChainInfo, _isChainEvmCompatible, _isNativeToken, _isTokenWasmSmartContract } from '@subwallet/extension-base/services/chain-service/utils';
|
|
8
8
|
import { BN } from '@polkadot/util';
|
|
9
9
|
function isRefCount(accountInfo) {
|
|
@@ -34,6 +34,12 @@ export async function checkSupportTransfer(networkKey, tokenInfo, substrateApiMa
|
|
|
34
34
|
supportTransferAll: true
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
+
if (tokenInfo.symbol.startsWith(_ZK_ASSET_PREFIX) && _MANTA_ZK_CHAIN_GROUP.includes(tokenInfo.originChain)) {
|
|
38
|
+
return {
|
|
39
|
+
supportTransfer: false,
|
|
40
|
+
supportTransferAll: false
|
|
41
|
+
};
|
|
42
|
+
}
|
|
37
43
|
if (_TRANSFER_NOT_SUPPORTED_CHAINS.includes(networkKey)) {
|
|
38
44
|
return {
|
|
39
45
|
supportTransfer: false,
|
|
@@ -24,6 +24,7 @@ export declare class KoniCron {
|
|
|
24
24
|
removeAllCrons: () => void;
|
|
25
25
|
start: () => Promise<void>;
|
|
26
26
|
stop: () => Promise<void>;
|
|
27
|
+
syncMantaPay: () => void;
|
|
27
28
|
refreshNft: (address: string, apiMap: ApiMap, smartContractNfts: _ChainAsset[], chainInfoMap: Record<string, _ChainInfo>) => () => void;
|
|
28
29
|
resetNft: (newAddress: string) => void;
|
|
29
30
|
resetStakingReward: () => void;
|
package/koni/background/cron.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import { CRON_REFRESH_CHAIN_STAKING_METADATA, CRON_REFRESH_NFT_INTERVAL, CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL, CRON_REFRESH_STAKING_REWARD_INTERVAL } from '@subwallet/extension-base/constants';
|
|
4
|
+
import { CRON_REFRESH_CHAIN_STAKING_METADATA, CRON_REFRESH_NFT_INTERVAL, CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL, CRON_REFRESH_STAKING_REWARD_INTERVAL, CRON_SYNC_MANTA_PAY } from '@subwallet/extension-base/constants';
|
|
5
5
|
import { _isChainSupportEvmNft, _isChainSupportNativeNft, _isChainSupportSubstrateStaking, _isChainSupportWasmNft } from '@subwallet/extension-base/services/chain-service/utils';
|
|
6
6
|
import { waitTimeout } from '@subwallet/extension-base/utils';
|
|
7
7
|
import { Subject } from 'rxjs';
|
|
@@ -62,6 +62,7 @@ export class KoniCron {
|
|
|
62
62
|
const commonReload = eventTypes.some(eventType => commonReloadEvents.includes(eventType));
|
|
63
63
|
const chainUpdated = eventTypes.includes('chain.updateState');
|
|
64
64
|
const stakingSubmitted = eventTypes.includes('transaction.submitStaking');
|
|
65
|
+
const reloadMantaPay = eventTypes.includes('mantaPay.submitTransaction') || eventTypes.includes('mantaPay.enable');
|
|
65
66
|
const updatedChains = [];
|
|
66
67
|
if (chainUpdated) {
|
|
67
68
|
events.forEach(event => {
|
|
@@ -71,7 +72,7 @@ export class KoniCron {
|
|
|
71
72
|
}
|
|
72
73
|
});
|
|
73
74
|
}
|
|
74
|
-
if (!commonReload && !chainUpdated && !stakingSubmitted) {
|
|
75
|
+
if (!commonReload && !chainUpdated && !stakingSubmitted && !reloadMantaPay) {
|
|
75
76
|
return;
|
|
76
77
|
}
|
|
77
78
|
const address = (_serviceInfo$currentA = serviceInfo.currentAccountInfo) === null || _serviceInfo$currentA === void 0 ? void 0 : _serviceInfo$currentA.address;
|
|
@@ -82,6 +83,9 @@ export class KoniCron {
|
|
|
82
83
|
const needUpdateNft = this.needUpdateNft(chainInfoMap, updatedChains);
|
|
83
84
|
const needUpdateStaking = this.needUpdateStaking(chainInfoMap, updatedChains);
|
|
84
85
|
|
|
86
|
+
// MantaPay
|
|
87
|
+
reloadMantaPay && this.removeCron('syncMantaPay');
|
|
88
|
+
|
|
85
89
|
// NFT
|
|
86
90
|
(commonReload || needUpdateNft) && this.resetNft(address);
|
|
87
91
|
(commonReload || needUpdateNft) && this.removeCron('refreshNft');
|
|
@@ -99,6 +103,7 @@ export class KoniCron {
|
|
|
99
103
|
(commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshStakingReward', this.refreshStakingReward(address), CRON_REFRESH_STAKING_REWARD_INTERVAL);
|
|
100
104
|
(commonReload || needUpdateStaking || stakingSubmitted) && this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(address), CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
|
|
101
105
|
needUpdateStaking && this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(serviceInfo.chainInfoMap, serviceInfo.chainStateMap, serviceInfo.chainApiMap.substrate), CRON_REFRESH_CHAIN_STAKING_METADATA);
|
|
106
|
+
reloadMantaPay && this.addCron('syncMantaPay', this.syncMantaPay, CRON_SYNC_MANTA_PAY);
|
|
102
107
|
} else {
|
|
103
108
|
this.setStakingRewardReady();
|
|
104
109
|
}
|
|
@@ -113,6 +118,7 @@ export class KoniCron {
|
|
|
113
118
|
this.addCron('refreshStakingReward', this.refreshStakingReward(currentAccountInfo.address), CRON_REFRESH_STAKING_REWARD_INTERVAL);
|
|
114
119
|
this.addCron('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(currentAccountInfo.address), CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
|
|
115
120
|
this.addCron('updateChainStakingMetadata', this.updateChainStakingMetadata(this.state.getChainInfoMap(), this.state.getChainStateMap(), this.state.getSubstrateApiMap()), CRON_REFRESH_CHAIN_STAKING_METADATA);
|
|
121
|
+
this.addCron('syncMantaPay', this.syncMantaPay, CRON_SYNC_MANTA_PAY);
|
|
116
122
|
} else {
|
|
117
123
|
this.setStakingRewardReady();
|
|
118
124
|
}
|
|
@@ -136,6 +142,11 @@ export class KoniCron {
|
|
|
136
142
|
this.status = 'stopped';
|
|
137
143
|
return Promise.resolve();
|
|
138
144
|
};
|
|
145
|
+
syncMantaPay = () => {
|
|
146
|
+
if (this.state.isMantaPayEnabled) {
|
|
147
|
+
this.state.syncMantaPay().catch(console.warn);
|
|
148
|
+
}
|
|
149
|
+
};
|
|
139
150
|
refreshNft = (address, apiMap, smartContractNfts, chainInfoMap) => {
|
|
140
151
|
return () => {
|
|
141
152
|
this.subscriptions.subscribeNft(address, apiMap.substrate, apiMap.evm, smartContractNfts, chainInfoMap);
|
|
@@ -194,5 +194,10 @@ export default class KoniExtension {
|
|
|
194
194
|
private rejectWalletConnectSession;
|
|
195
195
|
private subscribeWalletConnectSessions;
|
|
196
196
|
private disconnectWalletConnectSession;
|
|
197
|
+
private enableMantaPay;
|
|
198
|
+
private initSyncMantaPay;
|
|
199
|
+
private disableMantaPay;
|
|
200
|
+
private subscribeMantaPayConfig;
|
|
201
|
+
private subscribeMantaPaySyncState;
|
|
197
202
|
handle<TMessageType extends MessageTypes>(id: string, type: TMessageType, request: RequestTypes[TMessageType], port: chrome.runtime.Port): Promise<ResponseType<TMessageType>>;
|
|
198
203
|
}
|