@subwallet/extension-base 1.0.3-0 → 1.0.4-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 +25 -15
- package/background/KoniTypes.js +1 -0
- package/cjs/background/KoniTypes.js +1 -0
- package/cjs/koni/api/staking/bonding/amplitude.js +9 -2
- package/cjs/koni/api/staking/bonding/astar.js +9 -1
- package/cjs/koni/api/staking/bonding/paraChain.js +10 -2
- package/cjs/koni/api/staking/bonding/relayChain.js +21 -4
- package/cjs/koni/background/handlers/Extension.js +61 -19
- package/cjs/koni/background/handlers/State.js +12 -0
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/constants.js +17 -2
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +1 -1
- package/cjs/services/chain-service/index.js +96 -18
- package/cjs/services/keyring-service/index.js +9 -0
- package/cjs/services/migration-service/index.js +7 -4
- package/cjs/services/migration-service/scripts/MigrateAuthUrls.js +39 -0
- package/cjs/services/migration-service/scripts/index.js +3 -1
- package/cjs/services/price-service/index.js +0 -1
- package/cjs/services/request-service/handler/AuthRequestHandler.js +7 -0
- package/cjs/services/request-service/handler/EvmRequestHandler.js +21 -0
- package/cjs/services/request-service/handler/MetadataRequestHandler.js +6 -0
- package/cjs/services/request-service/handler/SubstrateRequestHandler.js +6 -0
- package/cjs/services/request-service/index.js +6 -0
- package/cjs/services/setting-service/SettingService.js +4 -9
- package/cjs/services/setting-service/constants.js +12 -2
- package/cjs/services/storage-service/DatabaseService.js +14 -0
- package/cjs/services/storage-service/databases/index.js +1 -1
- package/cjs/services/storage-service/db-stores/BaseStore.js +3 -0
- package/cjs/services/transaction-service/index.js +3 -0
- package/koni/api/staking/bonding/amplitude.js +9 -2
- package/koni/api/staking/bonding/astar.js +9 -1
- package/koni/api/staking/bonding/paraChain.js +10 -2
- package/koni/api/staking/bonding/relayChain.js +21 -4
- package/koni/background/handlers/Extension.d.ts +1 -0
- package/koni/background/handlers/Extension.js +42 -1
- package/koni/background/handlers/State.d.ts +1 -0
- package/koni/background/handlers/State.js +12 -0
- package/package.json +21 -16
- package/packageInfo.js +1 -1
- package/services/chain-service/constants.d.ts +6 -0
- package/services/chain-service/constants.js +10 -1
- package/services/chain-service/handler/SubstrateChainHandler.js +1 -1
- package/services/chain-service/index.d.ts +3 -1
- package/services/chain-service/index.js +97 -19
- package/services/keyring-service/index.d.ts +1 -0
- package/services/keyring-service/index.js +9 -0
- package/services/migration-service/index.js +7 -4
- package/services/migration-service/scripts/MigrateAuthUrls.d.ts +4 -0
- package/services/migration-service/scripts/MigrateAuthUrls.js +31 -0
- package/services/migration-service/scripts/index.js +3 -1
- package/services/price-service/index.js +0 -1
- package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
- package/services/request-service/handler/AuthRequestHandler.js +7 -0
- package/services/request-service/handler/EvmRequestHandler.d.ts +1 -0
- package/services/request-service/handler/EvmRequestHandler.js +21 -0
- package/services/request-service/handler/MetadataRequestHandler.d.ts +1 -0
- package/services/request-service/handler/MetadataRequestHandler.js +6 -0
- package/services/request-service/handler/SubstrateRequestHandler.d.ts +1 -0
- package/services/request-service/handler/SubstrateRequestHandler.js +6 -0
- package/services/request-service/index.d.ts +1 -0
- package/services/request-service/index.js +6 -0
- package/services/setting-service/SettingService.d.ts +1 -0
- package/services/setting-service/SettingService.js +5 -10
- package/services/setting-service/constants.d.ts +2 -1
- package/services/setting-service/constants.js +10 -1
- package/services/storage-service/DatabaseService.d.ts +1 -0
- package/services/storage-service/DatabaseService.js +14 -0
- package/services/storage-service/databases/index.js +1 -1
- package/services/storage-service/db-stores/BaseStore.d.ts +1 -0
- package/services/storage-service/db-stores/BaseStore.js +3 -0
- package/services/transaction-service/index.d.ts +1 -0
- package/services/transaction-service/index.js +3 -0
- /package/cjs/services/chain-service/{heath-check → health-check}/index.js +0 -0
- /package/services/chain-service/{heath-check → health-check}/index.d.ts +0 -0
- /package/services/chain-service/{heath-check → health-check}/index.js +0 -0
|
@@ -47,7 +47,6 @@ class ChainService {
|
|
|
47
47
|
this.chainInfoMapSubject.next(this.dataMap.chainInfoMap);
|
|
48
48
|
this.chainStateMapSubject.next(this.dataMap.chainStateMap);
|
|
49
49
|
this.assetRegistrySubject.next(this.dataMap.assetRegistry);
|
|
50
|
-
this.multiChainAssetMapSubject.next(_chainList.MultiChainAssetMap);
|
|
51
50
|
this.xcmRefMapSubject.next(this.getXcmRefMap());
|
|
52
51
|
this.logger = (0, _logger.logger)('chain-service');
|
|
53
52
|
this.refreshChainStateInterval(3000, 6);
|
|
@@ -359,7 +358,9 @@ class ChainService {
|
|
|
359
358
|
// Business logic
|
|
360
359
|
async init() {
|
|
361
360
|
// TODO: reconsider the flow of initiation
|
|
362
|
-
this.
|
|
361
|
+
const [latestAssetRefMap, latestMultiChainAssetMap] = await Promise.all([this.fetchLatestData(_constants._ASSET_REF_SRC, _chainList.AssetRefMap), this.fetchLatestData(_constants._MULTI_CHAIN_ASSET_SRC, _chainList.MultiChainAssetMap)]);
|
|
362
|
+
this.multiChainAssetMapSubject.next(latestMultiChainAssetMap);
|
|
363
|
+
this.dataMap.assetRefMap = latestAssetRefMap;
|
|
363
364
|
await this.initChains();
|
|
364
365
|
this.chainInfoMapSubject.next(this.getChainInfoMap());
|
|
365
366
|
this.chainStateMapSubject.next(this.getChainStateMap());
|
|
@@ -464,16 +465,16 @@ class ChainService {
|
|
|
464
465
|
this.eventService.emit('chain.updateState', chainSlug);
|
|
465
466
|
return true;
|
|
466
467
|
}
|
|
467
|
-
checkExistedPredefinedChain(genesisHash, evmChainId) {
|
|
468
|
+
checkExistedPredefinedChain(latestChainInfoMap, genesisHash, evmChainId) {
|
|
468
469
|
let duplicatedSlug = '';
|
|
469
470
|
if (genesisHash) {
|
|
470
|
-
Object.values(
|
|
471
|
+
Object.values(latestChainInfoMap).forEach(chainInfo => {
|
|
471
472
|
if (chainInfo.substrateInfo && chainInfo.substrateInfo.genesisHash === genesisHash) {
|
|
472
473
|
duplicatedSlug = chainInfo.slug;
|
|
473
474
|
}
|
|
474
475
|
});
|
|
475
476
|
} else if (evmChainId) {
|
|
476
|
-
Object.values(
|
|
477
|
+
Object.values(latestChainInfoMap).forEach(chainInfo => {
|
|
477
478
|
if (chainInfo.evmInfo && chainInfo.evmInfo.evmChainId === evmChainId) {
|
|
478
479
|
duplicatedSlug = chainInfo.slug;
|
|
479
480
|
}
|
|
@@ -481,8 +482,47 @@ class ChainService {
|
|
|
481
482
|
}
|
|
482
483
|
return duplicatedSlug;
|
|
483
484
|
}
|
|
485
|
+
async fetchLatestData(src, defaultValue) {
|
|
486
|
+
return Promise.resolve(defaultValue);
|
|
487
|
+
// try {
|
|
488
|
+
// const timeout = new Promise((resolve) => {
|
|
489
|
+
// const id = setTimeout(() => {
|
|
490
|
+
// clearTimeout(id);
|
|
491
|
+
// resolve(null);
|
|
492
|
+
// }, 1500);
|
|
493
|
+
// });
|
|
494
|
+
// let result = defaultValue;
|
|
495
|
+
// const resp = await Promise.race([
|
|
496
|
+
// timeout,
|
|
497
|
+
// fetch(src)
|
|
498
|
+
// ]) as Response || null;
|
|
499
|
+
//
|
|
500
|
+
// if (!resp) {
|
|
501
|
+
// console.warn('Error fetching latest data', src);
|
|
502
|
+
//
|
|
503
|
+
// return result;
|
|
504
|
+
// }
|
|
505
|
+
//
|
|
506
|
+
// if (resp.ok) {
|
|
507
|
+
// try {
|
|
508
|
+
// result = await resp.json();
|
|
509
|
+
// console.log('Fetched latest data', src);
|
|
510
|
+
// } catch (err) {
|
|
511
|
+
// console.warn('Error parsing latest data', src, err);
|
|
512
|
+
// }
|
|
513
|
+
// }
|
|
514
|
+
//
|
|
515
|
+
// return result;
|
|
516
|
+
// } catch (e) {
|
|
517
|
+
// console.warn('Error fetching latest data', src, e);
|
|
518
|
+
//
|
|
519
|
+
// return defaultValue;
|
|
520
|
+
// }
|
|
521
|
+
}
|
|
522
|
+
|
|
484
523
|
async initChains() {
|
|
485
524
|
const storedChainSettings = await this.dbService.getAllChainStore();
|
|
525
|
+
const latestChainInfoMap = await this.fetchLatestData(_constants._CHAIN_INFO_SRC, _chainList.ChainInfoMap);
|
|
486
526
|
const storedChainSettingMap = {};
|
|
487
527
|
storedChainSettings.forEach(chainStoredSetting => {
|
|
488
528
|
storedChainSettingMap[chainStoredSetting.slug] = chainStoredSetting;
|
|
@@ -491,8 +531,8 @@ class ChainService {
|
|
|
491
531
|
const deprecatedChains = [];
|
|
492
532
|
const deprecatedChainMap = {};
|
|
493
533
|
if (storedChainSettings.length === 0) {
|
|
494
|
-
this.dataMap.chainInfoMap =
|
|
495
|
-
Object.values(
|
|
534
|
+
this.dataMap.chainInfoMap = latestChainInfoMap;
|
|
535
|
+
Object.values(latestChainInfoMap).forEach(chainInfo => {
|
|
496
536
|
this.dataMap.chainStateMap[chainInfo.slug] = {
|
|
497
537
|
currentProvider: Object.keys(chainInfo.providers)[0],
|
|
498
538
|
slug: chainInfo.slug,
|
|
@@ -508,10 +548,10 @@ class ChainService {
|
|
|
508
548
|
});
|
|
509
549
|
});
|
|
510
550
|
} else {
|
|
511
|
-
const mergedChainInfoMap =
|
|
551
|
+
const mergedChainInfoMap = latestChainInfoMap;
|
|
512
552
|
for (const [storedSlug, storedChainInfo] of Object.entries(storedChainSettingMap)) {
|
|
513
|
-
if (storedSlug in
|
|
514
|
-
// check predefined chains first,
|
|
553
|
+
if (storedSlug in latestChainInfoMap) {
|
|
554
|
+
// check predefined chains first, keep setting for providers and currentProvider
|
|
515
555
|
mergedChainInfoMap[storedSlug].providers = {
|
|
516
556
|
...storedChainInfo.providers,
|
|
517
557
|
...mergedChainInfoMap[storedSlug].providers
|
|
@@ -531,7 +571,7 @@ class ChainService {
|
|
|
531
571
|
var _storedChainInfo$subs, _storedChainInfo$evmI;
|
|
532
572
|
// only custom chains are left
|
|
533
573
|
// check custom chain duplicated with predefined chain => merge into predefined chain
|
|
534
|
-
const duplicatedDefaultSlug = this.checkExistedPredefinedChain((_storedChainInfo$subs = storedChainInfo.substrateInfo) === null || _storedChainInfo$subs === void 0 ? void 0 : _storedChainInfo$subs.genesisHash, (_storedChainInfo$evmI = storedChainInfo.evmInfo) === null || _storedChainInfo$evmI === void 0 ? void 0 : _storedChainInfo$evmI.evmChainId);
|
|
574
|
+
const duplicatedDefaultSlug = this.checkExistedPredefinedChain(latestChainInfoMap, (_storedChainInfo$subs = storedChainInfo.substrateInfo) === null || _storedChainInfo$subs === void 0 ? void 0 : _storedChainInfo$subs.genesisHash, (_storedChainInfo$evmI = storedChainInfo.evmInfo) === null || _storedChainInfo$evmI === void 0 ? void 0 : _storedChainInfo$evmI.evmChainId);
|
|
535
575
|
if (duplicatedDefaultSlug.length > 0) {
|
|
536
576
|
// merge custom chain with existed chain
|
|
537
577
|
mergedChainInfoMap[duplicatedDefaultSlug].providers = {
|
|
@@ -602,10 +642,11 @@ class ChainService {
|
|
|
602
642
|
}
|
|
603
643
|
async initAssetRegistry(deprecatedCustomChainMap) {
|
|
604
644
|
const storedAssetRegistry = await this.dbService.getAllAssetStore();
|
|
645
|
+
const latestAssetRegistry = await this.fetchLatestData(_constants._CHAIN_ASSET_SRC, _chainList.ChainAssetMap);
|
|
605
646
|
if (storedAssetRegistry.length === 0) {
|
|
606
|
-
this.dataMap.assetRegistry =
|
|
647
|
+
this.dataMap.assetRegistry = latestAssetRegistry;
|
|
607
648
|
} else {
|
|
608
|
-
const mergedAssetRegistry =
|
|
649
|
+
const mergedAssetRegistry = latestAssetRegistry;
|
|
609
650
|
const parsedStoredAssetRegistry = {};
|
|
610
651
|
const deprecatedAssets = [];
|
|
611
652
|
|
|
@@ -627,7 +668,7 @@ class ChainService {
|
|
|
627
668
|
});
|
|
628
669
|
for (const assetInfo of Object.values(parsedStoredAssetRegistry)) {
|
|
629
670
|
let duplicated = false;
|
|
630
|
-
for (const defaultChainAsset of Object.values(
|
|
671
|
+
for (const defaultChainAsset of Object.values(latestAssetRegistry)) {
|
|
631
672
|
// case merge custom asset with default asset
|
|
632
673
|
if ((0, _utils._isEqualSmartContractAsset)(assetInfo, defaultChainAsset)) {
|
|
633
674
|
duplicated = true;
|
|
@@ -1169,13 +1210,12 @@ class ChainService {
|
|
|
1169
1210
|
}
|
|
1170
1211
|
return this.assetSettingSubject.value;
|
|
1171
1212
|
}
|
|
1172
|
-
async updateAssetSetting(assetSlug, assetSetting) {
|
|
1213
|
+
async updateAssetSetting(assetSlug, assetSetting, autoEnableNativeToken) {
|
|
1173
1214
|
const currentAssetSettings = await this.getAssetSettings();
|
|
1174
1215
|
let needUpdateSubject;
|
|
1175
1216
|
|
|
1176
1217
|
// Update settings
|
|
1177
1218
|
currentAssetSettings[assetSlug] = assetSetting;
|
|
1178
|
-
this.setAssetSettings(currentAssetSettings);
|
|
1179
1219
|
if (assetSetting.visible) {
|
|
1180
1220
|
const assetInfo = this.getAssetBySlug(assetSlug);
|
|
1181
1221
|
const chainState = this.getChainStateByKey(assetInfo.originChain);
|
|
@@ -1184,8 +1224,15 @@ class ChainService {
|
|
|
1184
1224
|
if (chainState && !chainState.active) {
|
|
1185
1225
|
this.enableChain(chainState.slug);
|
|
1186
1226
|
needUpdateSubject = true;
|
|
1227
|
+
if (autoEnableNativeToken) {
|
|
1228
|
+
const nativeAsset = this.getNativeTokenInfo(assetInfo.originChain);
|
|
1229
|
+
currentAssetSettings[nativeAsset.slug] = {
|
|
1230
|
+
visible: true
|
|
1231
|
+
};
|
|
1232
|
+
}
|
|
1187
1233
|
}
|
|
1188
1234
|
}
|
|
1235
|
+
this.setAssetSettings(currentAssetSettings);
|
|
1189
1236
|
return needUpdateSubject;
|
|
1190
1237
|
}
|
|
1191
1238
|
async updateAssetSettingByChain(chainSlug, visible) {
|
|
@@ -1203,10 +1250,41 @@ class ChainService {
|
|
|
1203
1250
|
return this.assetSettingSubject;
|
|
1204
1251
|
}
|
|
1205
1252
|
async getChainLogoMap() {
|
|
1206
|
-
return
|
|
1253
|
+
return await this.fetchLatestData(_constants._CHAIN_LOGO_MAP_SRC, _chainList.ChainLogoMap);
|
|
1207
1254
|
}
|
|
1208
1255
|
async getAssetLogoMap() {
|
|
1209
|
-
return
|
|
1256
|
+
return await this.fetchLatestData(_constants._ASSET_LOGO_MAP_SRC, _chainList.AssetLogoMap);
|
|
1257
|
+
}
|
|
1258
|
+
resetWallet(resetAll) {
|
|
1259
|
+
if (resetAll) {
|
|
1260
|
+
this.setAssetSettings({});
|
|
1261
|
+
|
|
1262
|
+
// Disconnect chain
|
|
1263
|
+
const activeChains = this.getActiveChainInfos();
|
|
1264
|
+
for (const chain of Object.keys(activeChains)) {
|
|
1265
|
+
if (!_constants._DEFAULT_ACTIVE_CHAINS.includes(chain)) {
|
|
1266
|
+
this.disableChain(chain);
|
|
1267
|
+
}
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
// Remove custom chain
|
|
1271
|
+
const allChains = this.getChainInfoMap();
|
|
1272
|
+
for (const chain of Object.keys(allChains)) {
|
|
1273
|
+
if ((0, _utils._isCustomChain)(chain)) {
|
|
1274
|
+
this.removeCustomChain(chain);
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
// Remove custom asset
|
|
1279
|
+
const assetSettings = this.getAssetSettings();
|
|
1280
|
+
const customToken = [];
|
|
1281
|
+
for (const asset of Object.keys(assetSettings)) {
|
|
1282
|
+
if ((0, _utils._isCustomAsset)(asset)) {
|
|
1283
|
+
customToken.push(asset);
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1286
|
+
this.deleteCustomAssets(customToken);
|
|
1287
|
+
}
|
|
1210
1288
|
}
|
|
1211
1289
|
}
|
|
1212
1290
|
exports.ChainService = ChainService;
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.KeyringService = void 0;
|
|
7
|
+
var _constants = require("@subwallet/extension-base/constants");
|
|
7
8
|
var _stores = require("@subwallet/extension-base/stores");
|
|
8
9
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
9
10
|
var _rxjs = require("rxjs");
|
|
@@ -95,5 +96,13 @@ class KeyringService {
|
|
|
95
96
|
this.eventService.emit('account.updateCurrent', currentAccountData);
|
|
96
97
|
this.currentAccountStore.set('CurrentAccountInfo', currentAccountData);
|
|
97
98
|
}
|
|
99
|
+
resetWallet(resetAll) {
|
|
100
|
+
_uiKeyring.keyring.resetWallet(resetAll);
|
|
101
|
+
this.updateKeyringState();
|
|
102
|
+
this.currentAccountSubject.next({
|
|
103
|
+
address: _constants.ALL_ACCOUNT_KEY,
|
|
104
|
+
currentGenesisHash: null
|
|
105
|
+
});
|
|
106
|
+
}
|
|
98
107
|
}
|
|
99
108
|
exports.KeyringService = KeyringService;
|
|
@@ -19,8 +19,11 @@ class MigrationService {
|
|
|
19
19
|
async run() {
|
|
20
20
|
this.logger.log('Migrating...');
|
|
21
21
|
const keys = Object.keys(_scripts.default).sort((a, b) => a.localeCompare(b));
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
|
|
23
|
+
// Await timeout 2s
|
|
24
|
+
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
25
|
+
for (let i = 0; i < keys.length; i++) {
|
|
26
|
+
try {
|
|
24
27
|
const JobClass = _scripts.default[keys[i]];
|
|
25
28
|
const key = keys[i];
|
|
26
29
|
const name = JobClass.name;
|
|
@@ -38,9 +41,9 @@ class MigrationService {
|
|
|
38
41
|
timestamp: new Date().getTime()
|
|
39
42
|
});
|
|
40
43
|
}
|
|
44
|
+
} catch (error) {
|
|
45
|
+
this.logger.error('Migration error: ', _scripts.default[keys[i]].name, error);
|
|
41
46
|
}
|
|
42
|
-
} catch (error) {
|
|
43
|
-
this.logger.error('Migration error: ', error);
|
|
44
47
|
}
|
|
45
48
|
this.logger.log('Migration done.');
|
|
46
49
|
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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 MigrateSettings extends _Base.default {
|
|
13
|
+
async run() {
|
|
14
|
+
try {
|
|
15
|
+
return new Promise(resolve => {
|
|
16
|
+
this.state.getAuthorize(value => {
|
|
17
|
+
if (value) {
|
|
18
|
+
const key = 'app.stellaswap.com';
|
|
19
|
+
const stellaSwap = value[key];
|
|
20
|
+
if (stellaSwap) {
|
|
21
|
+
stellaSwap.currentEvmNetworkKey = 'moonbeam';
|
|
22
|
+
value[key] = stellaSwap;
|
|
23
|
+
this.state.setAuthorize(value, () => {
|
|
24
|
+
resolve();
|
|
25
|
+
});
|
|
26
|
+
} else {
|
|
27
|
+
resolve();
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
resolve();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
} catch (e) {
|
|
35
|
+
console.error(e);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.default = MigrateSettings;
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.EVERYTIME = void 0;
|
|
8
8
|
var _AutoEnableChainsTokens = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/AutoEnableChainsTokens"));
|
|
9
|
+
var _MigrateAuthUrls = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateAuthUrls"));
|
|
9
10
|
var _MigrateImportedToken = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateImportedToken"));
|
|
10
11
|
var _MigrateNetworkSettings = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateNetworkSettings"));
|
|
11
12
|
var _MigrateSettings = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateSettings"));
|
|
@@ -20,7 +21,8 @@ var _default = {
|
|
|
20
21
|
'1.0.1-20': _MigrateImportedToken.default,
|
|
21
22
|
'1.0.1-30': _MigrateTransactionHistory.default,
|
|
22
23
|
'1.0.1-40': _AutoEnableChainsTokens.default,
|
|
23
|
-
'1.0.1-50': _MigrateSettings.default
|
|
24
|
+
'1.0.1-50': _MigrateSettings.default,
|
|
25
|
+
'1.0.1-60': _MigrateAuthUrls.default
|
|
24
26
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
25
27
|
};
|
|
26
28
|
exports.default = _default;
|
|
@@ -69,7 +69,6 @@ class PriceService {
|
|
|
69
69
|
await this.eventService.waitAssetReady;
|
|
70
70
|
this.status = _types.ServiceStatus.INITIALIZED;
|
|
71
71
|
this.eventService.on('asset.updateState', eventHandler);
|
|
72
|
-
this.eventService.on('asset.updateState', eventHandler);
|
|
73
72
|
}
|
|
74
73
|
async loadData() {
|
|
75
74
|
const data = await this.dbService.getPriceStore();
|
|
@@ -298,5 +298,12 @@ class AuthRequestHandler {
|
|
|
298
298
|
});
|
|
299
299
|
});
|
|
300
300
|
}
|
|
301
|
+
resetWallet() {
|
|
302
|
+
for (const request of Object.values(this.#authRequestsV2)) {
|
|
303
|
+
request.reject(new Error('Reset wallet'));
|
|
304
|
+
}
|
|
305
|
+
this.authSubjectV2.next([]);
|
|
306
|
+
this.setAuthorize({});
|
|
307
|
+
}
|
|
301
308
|
}
|
|
302
309
|
exports.default = AuthRequestHandler;
|
|
@@ -209,5 +209,26 @@ class EvmRequestHandler {
|
|
|
209
209
|
}
|
|
210
210
|
return true;
|
|
211
211
|
}
|
|
212
|
+
resetWallet() {
|
|
213
|
+
const confirmations = this.confirmationsQueueSubject.getValue();
|
|
214
|
+
for (const [type, requests] of Object.entries(confirmations)) {
|
|
215
|
+
for (const confirmation of Object.values(requests)) {
|
|
216
|
+
const {
|
|
217
|
+
id
|
|
218
|
+
} = confirmation;
|
|
219
|
+
const {
|
|
220
|
+
resolver
|
|
221
|
+
} = this.confirmationsPromiseMap[id];
|
|
222
|
+
if (!resolver || !confirmation) {
|
|
223
|
+
console.error('Not found confirmation', type, id);
|
|
224
|
+
} else {
|
|
225
|
+
resolver.reject(new Error('Reset wallet'));
|
|
226
|
+
}
|
|
227
|
+
delete this.confirmationsPromiseMap[id];
|
|
228
|
+
delete confirmations[type][id];
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
this.confirmationsQueueSubject.next(confirmations);
|
|
232
|
+
}
|
|
212
233
|
}
|
|
213
234
|
exports.default = EvmRequestHandler;
|
|
@@ -81,5 +81,11 @@ class MetadataRequestHandler {
|
|
|
81
81
|
this.#requestService.popupOpen();
|
|
82
82
|
});
|
|
83
83
|
}
|
|
84
|
+
resetWallet() {
|
|
85
|
+
for (const request of Object.values(this.#metaRequests)) {
|
|
86
|
+
request.reject(new Error('Reset wallet'));
|
|
87
|
+
}
|
|
88
|
+
this.metaSubject.next([]);
|
|
89
|
+
}
|
|
84
90
|
}
|
|
85
91
|
exports.default = MetadataRequestHandler;
|
|
@@ -101,5 +101,11 @@ class SubstrateRequestHandler {
|
|
|
101
101
|
}
|
|
102
102
|
});
|
|
103
103
|
}
|
|
104
|
+
resetWallet() {
|
|
105
|
+
for (const request of Object.values(this.#substrateRequests)) {
|
|
106
|
+
request.reject(new Error('Reset wallet'));
|
|
107
|
+
}
|
|
108
|
+
this.signSubject.next([]);
|
|
109
|
+
}
|
|
104
110
|
}
|
|
105
111
|
exports.default = SubstrateRequestHandler;
|
|
@@ -166,5 +166,11 @@ class RequestService {
|
|
|
166
166
|
get numRequests() {
|
|
167
167
|
return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests;
|
|
168
168
|
}
|
|
169
|
+
resetWallet() {
|
|
170
|
+
this.#authRequestHandler.resetWallet();
|
|
171
|
+
this.#substrateRequestHandler.resetWallet();
|
|
172
|
+
this.#evmRequestHandler.resetWallet();
|
|
173
|
+
this.#metadataRequestHandler.resetWallet();
|
|
174
|
+
}
|
|
169
175
|
}
|
|
170
176
|
exports.default = RequestService;
|
|
@@ -18,15 +18,7 @@ class SettingService {
|
|
|
18
18
|
getSettings(update) {
|
|
19
19
|
this.settingsStore.get('Settings', value => {
|
|
20
20
|
if (!value) {
|
|
21
|
-
update(
|
|
22
|
-
// language: 'en',
|
|
23
|
-
browserConfirmationType: _constants.DEFAULT_NOTIFICATION_TYPE,
|
|
24
|
-
// isShowZeroBalance: true,
|
|
25
|
-
isShowBalance: false,
|
|
26
|
-
accountAllLogo: '',
|
|
27
|
-
theme: _constants.DEFAULT_THEME,
|
|
28
|
-
camera: false
|
|
29
|
-
});
|
|
21
|
+
update(_constants.DEFAULT_SETTING);
|
|
30
22
|
} else {
|
|
31
23
|
update(value);
|
|
32
24
|
}
|
|
@@ -35,5 +27,8 @@ class SettingService {
|
|
|
35
27
|
setSettings(data, callback) {
|
|
36
28
|
this.settingsStore.set('Settings', data, callback);
|
|
37
29
|
}
|
|
30
|
+
resetWallet() {
|
|
31
|
+
this.settingsStore.set('Settings', _constants.DEFAULT_SETTING);
|
|
32
|
+
}
|
|
38
33
|
}
|
|
39
34
|
exports.default = SettingService;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.DEFAULT_THEME = exports.DEFAULT_NOTIFICATION_TYPE = void 0;
|
|
6
|
+
exports.DEFAULT_THEME = exports.DEFAULT_SETTING = exports.DEFAULT_NOTIFICATION_TYPE = void 0;
|
|
7
7
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
8
8
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
9
9
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -11,4 +11,14 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
|
11
11
|
const DEFAULT_THEME = _KoniTypes.ThemeNames.DARK;
|
|
12
12
|
exports.DEFAULT_THEME = DEFAULT_THEME;
|
|
13
13
|
const DEFAULT_NOTIFICATION_TYPE = 'popup';
|
|
14
|
-
exports.DEFAULT_NOTIFICATION_TYPE = DEFAULT_NOTIFICATION_TYPE;
|
|
14
|
+
exports.DEFAULT_NOTIFICATION_TYPE = DEFAULT_NOTIFICATION_TYPE;
|
|
15
|
+
const DEFAULT_SETTING = {
|
|
16
|
+
// language: 'en',
|
|
17
|
+
browserConfirmationType: DEFAULT_NOTIFICATION_TYPE,
|
|
18
|
+
// isShowZeroBalance: true,
|
|
19
|
+
isShowBalance: false,
|
|
20
|
+
accountAllLogo: '',
|
|
21
|
+
theme: DEFAULT_THEME,
|
|
22
|
+
camera: false
|
|
23
|
+
};
|
|
24
|
+
exports.DEFAULT_SETTING = DEFAULT_SETTING;
|
|
@@ -256,5 +256,19 @@ class DatabaseService {
|
|
|
256
256
|
async getNominatorMetadata() {
|
|
257
257
|
return this.stores.nominatorMetadata.getAll();
|
|
258
258
|
}
|
|
259
|
+
async resetWallet(resetAll) {
|
|
260
|
+
return new Promise((resolve, reject) => {
|
|
261
|
+
const stores = [this.stores.balance, this.stores.nft, this.stores.nftCollection, this.stores.crowdloan, this.stores.staking, this.stores.transaction, this.stores.nominatorMetadata];
|
|
262
|
+
if (resetAll) {
|
|
263
|
+
stores.push(this.stores.chain, this.stores.asset);
|
|
264
|
+
}
|
|
265
|
+
const promises = stores.map(store => store.clear());
|
|
266
|
+
Promise.all(promises).then(() => {
|
|
267
|
+
resolve();
|
|
268
|
+
}).catch(e => {
|
|
269
|
+
reject(e);
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
}
|
|
259
273
|
}
|
|
260
274
|
exports.default = DatabaseService;
|
|
@@ -13,7 +13,7 @@ const DEFAULT_DATABASE = 'SubWalletDB_v2';
|
|
|
13
13
|
class KoniDatabase extends _dexie.default {
|
|
14
14
|
constructor() {
|
|
15
15
|
let name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_DATABASE;
|
|
16
|
-
let schemaVersion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] :
|
|
16
|
+
let schemaVersion = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 11;
|
|
17
17
|
super(name);
|
|
18
18
|
this.schemaVersion = schemaVersion;
|
|
19
19
|
this.conditionalVersion(1, {
|
|
@@ -42,9 +42,16 @@ export async function getAmplitudeNominatorMetadata(chainInfo, address, substrat
|
|
|
42
42
|
const minDelegatorStake = chainApi.api.consts.parachainStaking.minDelegatorStake.toString();
|
|
43
43
|
const delegatorState = _delegatorState.toPrimitive();
|
|
44
44
|
const unstakingInfo = _unstakingInfo.toPrimitive();
|
|
45
|
-
console.log('unstakingInfo ampe', unstakingInfo, !!unstakingInfo);
|
|
46
45
|
if (!delegatorState && !unstakingInfo) {
|
|
47
|
-
return
|
|
46
|
+
return {
|
|
47
|
+
chain: chainInfo.slug,
|
|
48
|
+
type: StakingType.NOMINATED,
|
|
49
|
+
address,
|
|
50
|
+
status: StakingStatus.NOT_STAKING,
|
|
51
|
+
activeStake: '0',
|
|
52
|
+
nominations: [],
|
|
53
|
+
unstakings: []
|
|
54
|
+
};
|
|
48
55
|
}
|
|
49
56
|
let activeStake = '0';
|
|
50
57
|
if (delegatorState) {
|
|
@@ -109,7 +109,15 @@ export async function getAstarNominatorMetadata(chainInfo, address, substrateApi
|
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
111
|
if (nominationList.length === 0 && unstakingList.length === 0) {
|
|
112
|
-
return
|
|
112
|
+
return {
|
|
113
|
+
chain: chainInfo.slug,
|
|
114
|
+
type: StakingType.NOMINATED,
|
|
115
|
+
address,
|
|
116
|
+
status: StakingStatus.NOT_STAKING,
|
|
117
|
+
activeStake: '0',
|
|
118
|
+
nominations: [],
|
|
119
|
+
unstakings: []
|
|
120
|
+
};
|
|
113
121
|
}
|
|
114
122
|
const stakingStatus = getStakingStatusByNominations(bnTotalActiveStake, nominationList);
|
|
115
123
|
return {
|
|
@@ -42,7 +42,7 @@ export function validateParaChainBondingCondition(chainInfo, amount, selectedCol
|
|
|
42
42
|
const bnChainMinStake = new BN(chainStakingMetadata.minStake || '0');
|
|
43
43
|
const bnCollatorMinStake = new BN(selectedCollator.minBond || '0');
|
|
44
44
|
const bnMinStake = bnCollatorMinStake > bnChainMinStake ? bnCollatorMinStake : bnChainMinStake;
|
|
45
|
-
if (!nominatorMetadata) {
|
|
45
|
+
if (!nominatorMetadata || nominatorMetadata.status === StakingStatus.NOT_STAKING) {
|
|
46
46
|
if (!bnTotalStake.gte(bnMinStake)) {
|
|
47
47
|
errors.push(new TransactionError(StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
48
48
|
}
|
|
@@ -130,7 +130,15 @@ export async function getParaChainNominatorMetadata(chainInfo, address, substrat
|
|
|
130
130
|
const _delegatorState = await chainApi.api.query.parachainStaking.delegatorState(address);
|
|
131
131
|
const delegatorState = _delegatorState.toPrimitive();
|
|
132
132
|
if (!delegatorState) {
|
|
133
|
-
return
|
|
133
|
+
return {
|
|
134
|
+
chain: chainInfo.slug,
|
|
135
|
+
type: StakingType.NOMINATED,
|
|
136
|
+
address,
|
|
137
|
+
status: StakingStatus.NOT_STAKING,
|
|
138
|
+
activeStake: '0',
|
|
139
|
+
nominations: [],
|
|
140
|
+
unstakings: []
|
|
141
|
+
};
|
|
134
142
|
}
|
|
135
143
|
let bnTotalActiveStake = BN_ZERO;
|
|
136
144
|
await Promise.all(delegatorState.delegations.map(async delegation => {
|
|
@@ -34,7 +34,7 @@ export function validatePoolBondingCondition(chainInfo, amount, selectedPool, ad
|
|
|
34
34
|
if (nominatorMetadata) {
|
|
35
35
|
const bnCurrentActiveStake = new BN(nominatorMetadata.activeStake);
|
|
36
36
|
bnTotalStake = bnTotalStake.add(bnCurrentActiveStake);
|
|
37
|
-
if (
|
|
37
|
+
if (nominatorMetadata.unstakings.length > 0) {
|
|
38
38
|
errors.push(new TransactionError(StakingTxErrorType.EXIST_UNSTAKING_REQUEST));
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -47,7 +47,7 @@ export function validateRelayBondingCondition(chainInfo, amount, selectedValidat
|
|
|
47
47
|
const errors = [];
|
|
48
48
|
let bnTotalStake = new BN(amount);
|
|
49
49
|
const bnMinStake = new BN(chainStakingMetadata.minStake);
|
|
50
|
-
if (!nominatorMetadata) {
|
|
50
|
+
if (!nominatorMetadata || nominatorMetadata.status === StakingStatus.NOT_STAKING) {
|
|
51
51
|
if (!bnTotalStake.gte(bnMinStake)) {
|
|
52
52
|
errors.push(new TransactionError(StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
53
53
|
}
|
|
@@ -145,7 +145,15 @@ export async function getRelayChainNominatorMetadata(chainInfo, address, substra
|
|
|
145
145
|
const currentEra = _currentEra.toString();
|
|
146
146
|
const bonded = _bonded.toHuman();
|
|
147
147
|
if (!ledger) {
|
|
148
|
-
return
|
|
148
|
+
return {
|
|
149
|
+
chain,
|
|
150
|
+
type: StakingType.NOMINATED,
|
|
151
|
+
status: StakingStatus.NOT_STAKING,
|
|
152
|
+
address: address,
|
|
153
|
+
activeStake: '0',
|
|
154
|
+
nominations: [],
|
|
155
|
+
unstakings: []
|
|
156
|
+
};
|
|
149
157
|
}
|
|
150
158
|
const activeStake = ledger.active.toString();
|
|
151
159
|
const nominationList = [];
|
|
@@ -225,7 +233,16 @@ export async function getRelayChainPoolMemberMetadata(chainInfo, address, substr
|
|
|
225
233
|
const poolMemberInfo = _poolMemberInfo.toPrimitive();
|
|
226
234
|
const currentEra = _currentEra.toString();
|
|
227
235
|
if (!poolMemberInfo) {
|
|
228
|
-
return
|
|
236
|
+
return {
|
|
237
|
+
chain: chainInfo.slug,
|
|
238
|
+
type: StakingType.POOLED,
|
|
239
|
+
address,
|
|
240
|
+
status: StakingStatus.NOT_STAKING,
|
|
241
|
+
activeStake: '0',
|
|
242
|
+
nominations: [],
|
|
243
|
+
// can only join 1 pool at a time
|
|
244
|
+
unstakings: []
|
|
245
|
+
};
|
|
229
246
|
}
|
|
230
247
|
let stakingStatus = StakingStatus.NOT_EARNING;
|
|
231
248
|
const _poolMetadata = await chainApi.api.query.nominationPools.metadata(poolMemberInfo.poolId);
|
|
@@ -169,6 +169,7 @@ export default class KoniExtension {
|
|
|
169
169
|
private keyringUnlock;
|
|
170
170
|
private keyringLock;
|
|
171
171
|
private keyringExportMnemonic;
|
|
172
|
+
private resetWallet;
|
|
172
173
|
private signingApprovePasswordV2;
|
|
173
174
|
private derivationCreateMultiple;
|
|
174
175
|
private derivationCreateV3;
|