@subwallet/extension-base 1.0.1 → 1.0.2-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 +10 -3
- package/background/KoniTypes.js +6 -0
- package/cjs/background/KoniTypes.js +8 -1
- package/cjs/constants/index.js +6 -3
- package/cjs/koni/api/dotsama/balance.js +11 -0
- package/cjs/koni/api/staking/bonding/amplitude.js +6 -2
- package/cjs/koni/api/staking/bonding/astar.js +40 -243
- package/cjs/koni/api/staking/bonding/index.js +4 -4
- package/cjs/koni/api/staking/bonding/paraChain.js +16 -10
- package/cjs/koni/api/staking/bonding/relayChain.js +62 -7
- package/cjs/koni/api/staking/bonding/utils.js +29 -3
- package/cjs/koni/api/xcm/index.js +0 -111
- package/cjs/koni/api/xcm/polkadotXcm.js +1 -1
- package/cjs/koni/api/xcm/xTokens.js +2 -4
- package/cjs/koni/background/cron.js +61 -62
- package/cjs/koni/background/handlers/Extension.js +143 -149
- package/cjs/koni/background/handlers/State.js +129 -91
- package/cjs/koni/background/handlers/Tabs.js +40 -38
- package/cjs/koni/background/subscription.js +48 -43
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/index.js +5 -0
- package/cjs/services/chain-service/constants.js +1 -11
- package/cjs/services/chain-service/index.js +39 -5
- package/cjs/services/chain-service/utils.js +4 -0
- package/cjs/services/event-service/index.js +71 -0
- package/cjs/services/event-service/types.js +1 -0
- package/cjs/services/history-service/index.js +36 -17
- package/cjs/services/history-service/subsquid-multi-chain-history.js +7 -2
- package/cjs/services/keyring-service/index.js +101 -0
- package/cjs/services/migration-service/index.js +13 -10
- package/cjs/{koni/migration/scripts/RemoveWrongCrowdloan.js → services/migration-service/scripts/AutoEnableChainsTokens.js} +11 -6
- package/cjs/services/migration-service/scripts/MigrateNetworkSettings.js +39 -19
- package/cjs/services/migration-service/scripts/MigrateSettings.js +31 -0
- package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +72 -0
- package/cjs/services/migration-service/scripts/index.js +13 -4
- package/cjs/services/price-service/coingecko.js +16 -3
- package/cjs/services/price-service/index.js +15 -17
- package/cjs/services/request-service/constants.js +8 -2
- package/cjs/services/request-service/handler/AuthRequestHandler.js +39 -12
- package/cjs/services/request-service/index.js +3 -0
- package/cjs/services/storage-service/DatabaseService.js +1 -1
- package/cjs/services/storage-service/databases/index.js +1 -1
- package/cjs/services/storage-service/db-stores/BaseStoreWithAddressAndChain.js +2 -8
- package/cjs/services/storage-service/db-stores/Nft.js +4 -1
- package/cjs/services/storage-service/db-stores/Transaction.js +10 -7
- package/cjs/services/subscan-service/index.js +107 -0
- package/cjs/services/subscan-service/subscan-chain-map.js +74 -0
- package/cjs/services/subscan-service/types.js +1 -0
- package/cjs/services/transaction-service/index.js +45 -10
- package/cjs/services/transaction-service/utils.js +4 -6
- package/cjs/utils/address.js +9 -1
- package/cjs/utils/index.js +24 -13
- package/constants/index.d.ts +1 -0
- package/constants/index.js +1 -0
- package/koni/api/dotsama/balance.js +11 -0
- package/koni/api/staking/bonding/amplitude.d.ts +1 -1
- package/koni/api/staking/bonding/amplitude.js +8 -4
- package/koni/api/staking/bonding/astar.d.ts +2 -11
- package/koni/api/staking/bonding/astar.js +35 -229
- package/koni/api/staking/bonding/index.d.ts +1 -1
- package/koni/api/staking/bonding/index.js +4 -4
- package/koni/api/staking/bonding/paraChain.d.ts +1 -1
- package/koni/api/staking/bonding/paraChain.js +17 -11
- package/koni/api/staking/bonding/relayChain.d.ts +1 -1
- package/koni/api/staking/bonding/relayChain.js +63 -8
- package/koni/api/staking/bonding/utils.d.ts +13 -1
- package/koni/api/staking/bonding/utils.js +27 -3
- package/koni/api/xcm/index.js +1 -112
- package/koni/api/xcm/polkadotXcm.js +1 -1
- package/koni/api/xcm/xTokens.js +3 -5
- package/koni/background/cron.js +60 -60
- package/koni/background/handlers/Extension.js +71 -76
- package/koni/background/handlers/State.d.ts +16 -14
- package/koni/background/handlers/State.js +126 -91
- package/koni/background/handlers/Tabs.js +22 -19
- package/koni/background/subscription.d.ts +1 -1
- package/koni/background/subscription.js +49 -44
- package/package.json +56 -16
- package/packageInfo.js +1 -1
- package/page/index.d.ts +2 -0
- package/page/index.js +4 -0
- package/services/chain-service/constants.d.ts +0 -1
- package/services/chain-service/constants.js +0 -9
- package/services/chain-service/index.d.ts +6 -4
- package/services/chain-service/index.js +39 -7
- package/services/chain-service/utils.d.ts +1 -0
- package/services/chain-service/utils.js +3 -0
- package/services/event-service/index.d.ts +22 -0
- package/services/event-service/index.js +59 -0
- package/services/event-service/types.d.ts +32 -0
- package/services/event-service/types.js +1 -0
- package/services/history-service/index.d.ts +5 -3
- package/services/history-service/index.js +36 -17
- package/services/history-service/subsquid-multi-chain-history.js +7 -2
- package/services/keyring-service/index.d.ts +19 -0
- package/services/keyring-service/index.js +93 -0
- package/services/migration-service/index.js +11 -9
- package/services/migration-service/scripts/AutoEnableChainsTokens.d.ts +4 -0
- package/services/migration-service/scripts/AutoEnableChainsTokens.js +13 -0
- package/services/migration-service/scripts/MigrateNetworkSettings.js +37 -18
- package/services/migration-service/scripts/MigrateSettings.d.ts +4 -0
- package/services/migration-service/scripts/MigrateSettings.js +23 -0
- package/services/migration-service/scripts/MigrateTransactionHistory.d.ts +4 -0
- package/services/migration-service/scripts/MigrateTransactionHistory.js +64 -0
- package/services/migration-service/scripts/index.d.ts +1 -0
- package/services/migration-service/scripts/index.js +10 -3
- package/services/price-service/coingecko.js +16 -3
- package/services/price-service/index.d.ts +5 -3
- package/services/price-service/index.js +15 -17
- package/services/request-service/constants.d.ts +1 -0
- package/services/request-service/constants.js +6 -1
- package/services/request-service/handler/AuthRequestHandler.d.ts +8 -1
- package/services/request-service/handler/AuthRequestHandler.js +40 -13
- package/services/request-service/index.d.ts +7 -1
- package/services/request-service/index.js +3 -0
- package/services/storage-service/DatabaseService.js +1 -1
- package/services/storage-service/databases/index.js +1 -1
- package/services/storage-service/db-stores/BaseStoreWithAddressAndChain.d.ts +1 -1
- package/services/storage-service/db-stores/BaseStoreWithAddressAndChain.js +2 -8
- package/services/storage-service/db-stores/Nft.d.ts +2 -1
- package/services/storage-service/db-stores/Nft.js +4 -1
- package/services/storage-service/db-stores/Transaction.js +10 -7
- package/services/subscan-service/index.d.ts +20 -0
- package/services/subscan-service/index.js +99 -0
- package/services/subscan-service/subscan-chain-map.d.ts +5 -0
- package/services/subscan-service/subscan-chain-map.js +63 -0
- package/services/subscan-service/types.d.ts +27 -0
- package/services/subscan-service/types.js +1 -0
- package/services/transaction-service/event-parser/index.d.ts +2 -2
- package/services/transaction-service/index.d.ts +4 -2
- package/services/transaction-service/index.js +45 -10
- package/services/transaction-service/utils.js +5 -6
- package/utils/address.d.ts +1 -0
- package/utils/address.js +9 -2
- package/utils/index.d.ts +1 -0
- package/utils/index.js +21 -12
- package/cjs/background/errors/EvmRpcError.js +0 -21
- package/cjs/background/errors/SubWalletProviderError.js +0 -17
- package/cjs/constants/ethereum.js +0 -19
- package/cjs/errors/SubWalletProviderError.js +0 -17
- package/cjs/koni/api/xcm/astar.js +0 -160
- package/cjs/koni/api/xcm/moonbeamXcm.js +0 -80
- package/cjs/koni/api/xcm/statemintXcm.js +0 -197
- package/cjs/koni/api/xcm/substrateXcm.js +0 -213
- package/cjs/koni/migration/Base.js +0 -20
- package/cjs/koni/migration/index.js +0 -45
- package/cjs/koni/migration/scripts/ChangeRouteToHome.js +0 -22
- package/cjs/koni/migration/scripts/ClearOldStorage.js +0 -24
- package/cjs/koni/migration/scripts/RemoveWrongTransactionHistoriesFromStore.js +0 -36
- package/cjs/koni/migration/scripts/ResetTransactionHistoryEventIdx.js +0 -21
- package/cjs/koni/migration/scripts/index.js +0 -22
- package/cjs/koni/page/index.js +0 -16
- package/cjs/services/asset-service/index.js +0 -91
- package/cjs/services/storage-service/db-stores/ExtraDelegationInfo.js +0 -17
- package/cjs/stores/Balance.js +0 -18
- package/cjs/stores/Crowdloan.js +0 -18
- package/cjs/stores/CustomEvmToken.js +0 -18
- package/cjs/stores/NetworkMap.js +0 -18
- package/cjs/stores/Nft.js +0 -18
- package/cjs/stores/NftCollection.js +0 -18
- package/cjs/stores/Price.js +0 -18
- package/cjs/stores/Staking.js +0 -18
- package/cjs/stores/StakingReward.js +0 -18
- package/cjs/utils/eth/parseTransactionData.js +0 -284
- package/koni/page/index.d.ts +0 -2
- package/koni/page/index.js +0 -9
- /package/cjs/{koni/page → page}/SubWalleEvmProvider.js +0 -0
- /package/{koni/page → page}/SubWalleEvmProvider.d.ts +0 -0
- /package/{koni/page → page}/SubWalleEvmProvider.js +0 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.KeyringService = void 0;
|
|
7
|
+
var _stores = require("@subwallet/extension-base/stores");
|
|
8
|
+
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
9
|
+
var _rxjs = require("rxjs");
|
|
10
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
11
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
|
|
13
|
+
class KeyringService {
|
|
14
|
+
currentAccountStore = new _stores.CurrentAccountStore();
|
|
15
|
+
currentAccountSubject = new _rxjs.BehaviorSubject({
|
|
16
|
+
address: '',
|
|
17
|
+
currentGenesisHash: null
|
|
18
|
+
});
|
|
19
|
+
accountsSubject = _uiKeyring.keyring.accounts.subject;
|
|
20
|
+
beforeAccount = _uiKeyring.keyring.accounts.subject.value;
|
|
21
|
+
keyringStateSubject = new _rxjs.BehaviorSubject({
|
|
22
|
+
isReady: false,
|
|
23
|
+
hasMasterPassword: false,
|
|
24
|
+
isLocked: false
|
|
25
|
+
});
|
|
26
|
+
constructor(eventService) {
|
|
27
|
+
this.eventService = eventService;
|
|
28
|
+
this.currentAccountStore.get('CurrentAccountInfo', rs => {
|
|
29
|
+
this.currentAccountSubject.next(rs);
|
|
30
|
+
});
|
|
31
|
+
this.subscribeAccounts().catch(console.error);
|
|
32
|
+
}
|
|
33
|
+
async subscribeAccounts() {
|
|
34
|
+
// Wait until account ready
|
|
35
|
+
await new Promise(resolve => {
|
|
36
|
+
const onReady = () => {
|
|
37
|
+
this.eventService.off('account.ready', onReady);
|
|
38
|
+
resolve(true);
|
|
39
|
+
};
|
|
40
|
+
this.eventService.on('account.ready', onReady);
|
|
41
|
+
});
|
|
42
|
+
this.beforeAccount = {
|
|
43
|
+
...this.accountsSubject.value
|
|
44
|
+
};
|
|
45
|
+
this.accountsSubject.subscribe(subjectInfo => {
|
|
46
|
+
// Check if accounts changed
|
|
47
|
+
const beforeAddresses = Object.keys(this.beforeAccount);
|
|
48
|
+
const afterAddresses = Object.keys(subjectInfo);
|
|
49
|
+
if (beforeAddresses.length > afterAddresses.length) {
|
|
50
|
+
const removedAddresses = beforeAddresses.filter(address => !afterAddresses.includes(address));
|
|
51
|
+
|
|
52
|
+
// Remove account
|
|
53
|
+
removedAddresses.forEach(address => {
|
|
54
|
+
console.log('account.remove', address);
|
|
55
|
+
this.eventService.emit('account.remove', address);
|
|
56
|
+
});
|
|
57
|
+
} else if (beforeAddresses.length < afterAddresses.length) {
|
|
58
|
+
const addedAddresses = afterAddresses.filter(address => !beforeAddresses.includes(address));
|
|
59
|
+
|
|
60
|
+
// Add account
|
|
61
|
+
addedAddresses.forEach(address => {
|
|
62
|
+
console.log('account.add', address);
|
|
63
|
+
this.eventService.emit('account.add', address);
|
|
64
|
+
});
|
|
65
|
+
} else {
|
|
66
|
+
// Handle case update later
|
|
67
|
+
}
|
|
68
|
+
this.beforeAccount = {
|
|
69
|
+
...subjectInfo
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
get keyringState() {
|
|
74
|
+
return this.keyringStateSubject.value;
|
|
75
|
+
}
|
|
76
|
+
updateKeyringState() {
|
|
77
|
+
var _keyring$keyring, _keyring$keyring2;
|
|
78
|
+
let isReady = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
79
|
+
if (!this.keyringState.isReady && isReady) {
|
|
80
|
+
this.eventService.emit('keyring.ready', true);
|
|
81
|
+
this.eventService.emit('account.ready', true);
|
|
82
|
+
}
|
|
83
|
+
this.keyringStateSubject.next({
|
|
84
|
+
hasMasterPassword: !!((_keyring$keyring = _uiKeyring.keyring.keyring) !== null && _keyring$keyring !== void 0 && _keyring$keyring.hasMasterPassword),
|
|
85
|
+
isLocked: !!((_keyring$keyring2 = _uiKeyring.keyring.keyring) !== null && _keyring$keyring2 !== void 0 && _keyring$keyring2.isLocked),
|
|
86
|
+
isReady: isReady
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
get accounts() {
|
|
90
|
+
return this.accountsSubject.value;
|
|
91
|
+
}
|
|
92
|
+
get currentAccount() {
|
|
93
|
+
return this.currentAccountSubject.value;
|
|
94
|
+
}
|
|
95
|
+
setCurrentAccount(currentAccountData) {
|
|
96
|
+
this.currentAccountSubject.next(currentAccountData);
|
|
97
|
+
this.eventService.emit('account.updateCurrent', currentAccountData);
|
|
98
|
+
this.currentAccountStore.set('CurrentAccountInfo', currentAccountData);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.KeyringService = KeyringService;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
6
|
exports.default = void 0;
|
|
8
7
|
var _util = require("@polkadot/util");
|
|
9
|
-
var _scripts =
|
|
8
|
+
var _scripts = _interopRequireWildcard(require("./scripts"));
|
|
9
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
10
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
10
11
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
11
12
|
// SPDX-License-Identifier: Apache-2.0
|
|
12
13
|
|
|
@@ -21,23 +22,25 @@ class MigrationService {
|
|
|
21
22
|
try {
|
|
22
23
|
for (let i = 0; i < keys.length; i++) {
|
|
23
24
|
const JobClass = _scripts.default[keys[i]];
|
|
25
|
+
const key = keys[i];
|
|
26
|
+
const name = JobClass.name;
|
|
24
27
|
const check = await this.state.dbService.stores.migration.table.where({
|
|
25
|
-
name
|
|
26
|
-
key
|
|
28
|
+
name,
|
|
29
|
+
key
|
|
27
30
|
}).first();
|
|
28
|
-
if (!check) {
|
|
29
|
-
const job = new JobClass(this.state);
|
|
31
|
+
if (!check || key.startsWith(_scripts.EVERYTIME)) {
|
|
30
32
|
this.logger.log('Running script: ', JobClass.name);
|
|
33
|
+
const job = new JobClass(this.state);
|
|
31
34
|
await job.run();
|
|
32
35
|
await this.state.dbService.stores.migration.table.put({
|
|
33
|
-
key
|
|
34
|
-
name
|
|
35
|
-
timestamp:
|
|
36
|
+
key,
|
|
37
|
+
name,
|
|
38
|
+
timestamp: new Date().getTime()
|
|
36
39
|
});
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
} catch (error) {
|
|
40
|
-
this.logger.
|
|
43
|
+
this.logger.error('Migration error: ', error);
|
|
41
44
|
}
|
|
42
45
|
this.logger.log('Migration done.');
|
|
43
46
|
}
|
|
@@ -5,15 +5,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
var _Base = _interopRequireDefault(require("@subwallet/extension-base/
|
|
9
|
-
var
|
|
8
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
|
+
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
10
10
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
11
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
12
12
|
|
|
13
|
-
class
|
|
13
|
+
class AutoEnableChainsTokens extends _Base.default {
|
|
14
14
|
async run() {
|
|
15
|
-
const
|
|
16
|
-
await
|
|
15
|
+
const accounts = _uiKeyring.keyring.getAccounts();
|
|
16
|
+
await this.state.autoEnableChains(accounts.map(_ref => {
|
|
17
|
+
let {
|
|
18
|
+
address
|
|
19
|
+
} = _ref;
|
|
20
|
+
return address;
|
|
21
|
+
}));
|
|
17
22
|
}
|
|
18
23
|
}
|
|
19
|
-
exports.default =
|
|
24
|
+
exports.default = AutoEnableChainsTokens;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _types = require("@subwallet/chain-list/types");
|
|
8
9
|
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
10
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -12,28 +13,47 @@ var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/m
|
|
|
12
13
|
class MigrateNetworkSettings extends _Base.default {
|
|
13
14
|
async run() {
|
|
14
15
|
const state = this.state;
|
|
15
|
-
|
|
16
|
-
chrome.storage.local.get('NetworkMap',
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
const items = await new Promise(resolve => {
|
|
17
|
+
chrome.storage.local.get('NetworkMap', items => {
|
|
18
|
+
resolve(items);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
const oldNetworkMap = items.NetworkMap;
|
|
22
|
+
const enableList = [];
|
|
23
|
+
const stateMap = state.getChainStateMap();
|
|
24
|
+
if (!oldNetworkMap) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
Object.entries(oldNetworkMap).forEach(_ref => {
|
|
28
|
+
let [slug, chain] = _ref;
|
|
29
|
+
if (chain.active) {
|
|
30
|
+
const currentState = stateMap[slug];
|
|
31
|
+
|
|
32
|
+
// Ensure chain in the list and is not active
|
|
33
|
+
currentState && enableList.push(slug);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
if (enableList.length > 0) {
|
|
37
|
+
state.chainService.enableChains(enableList);
|
|
25
38
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
39
|
+
// Enable native token of these chains
|
|
40
|
+
const currentAssetSettings = await state.chainService.getAssetSettings();
|
|
41
|
+
const assetInfoMap = state.chainService.getAssetRegistry();
|
|
42
|
+
Object.entries(assetInfoMap).forEach(_ref2 => {
|
|
43
|
+
let [slug, assetInfo] = _ref2;
|
|
44
|
+
const assetSetting = currentAssetSettings[slug] || {};
|
|
45
|
+
|
|
46
|
+
// Enable native token of these chains
|
|
47
|
+
if (assetInfo.name && assetInfo.assetType === _types._AssetType.NATIVE && enableList.includes(assetInfo.originChain) && !assetSetting.visible) {
|
|
48
|
+
currentAssetSettings[slug] = {
|
|
49
|
+
visible: true
|
|
50
|
+
};
|
|
33
51
|
}
|
|
34
|
-
resolve();
|
|
35
52
|
});
|
|
36
|
-
|
|
53
|
+
state.chainService.setAssetSettings({
|
|
54
|
+
...currentAssetSettings
|
|
55
|
+
});
|
|
56
|
+
}
|
|
37
57
|
}
|
|
38
58
|
}
|
|
39
59
|
exports.default = MigrateNetworkSettings;
|
|
@@ -0,0 +1,31 @@
|
|
|
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
|
+
var _uiSettings = _interopRequireDefault(require("@polkadot/ui-settings"));
|
|
10
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
11
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
12
|
+
|
|
13
|
+
class MigrateSettings extends _Base.default {
|
|
14
|
+
async run() {
|
|
15
|
+
try {
|
|
16
|
+
return new Promise(resolve => {
|
|
17
|
+
this.state.settingService.getSettings(currentSettings => {
|
|
18
|
+
const isAccessCamera = _uiSettings.default.camera === 'on';
|
|
19
|
+
this.state.settingService.setSettings({
|
|
20
|
+
...currentSettings,
|
|
21
|
+
camera: isAccessCamera
|
|
22
|
+
});
|
|
23
|
+
resolve();
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
} catch (e) {
|
|
27
|
+
console.error(e);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.default = MigrateSettings;
|
|
@@ -0,0 +1,72 @@
|
|
|
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 _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
9
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
10
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
11
|
+
var _dexie = _interopRequireDefault(require("dexie"));
|
|
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 MigrateTransactionHistory extends _Base.default {
|
|
17
|
+
async run() {
|
|
18
|
+
const state = this.state;
|
|
19
|
+
const chainInfoMap = state.getChainInfoMap();
|
|
20
|
+
const assetList = Object.values(state.getAssetRegistry());
|
|
21
|
+
try {
|
|
22
|
+
const db = new _dexie.default('SubWalletDB');
|
|
23
|
+
const dexieDB = await db.open();
|
|
24
|
+
const transactionTable = dexieDB.table('transactions');
|
|
25
|
+
const oldTransactionData = await transactionTable.toArray();
|
|
26
|
+
const newTransactionItems = [];
|
|
27
|
+
oldTransactionData.forEach(item => {
|
|
28
|
+
const chainInfo = chainInfoMap[item.networkKey];
|
|
29
|
+
if (!chainInfo) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const direction = item.action === 'send' ? _KoniTypes.TransactionDirection.SEND : _KoniTypes.TransactionDirection.RECEIVED;
|
|
33
|
+
const extrinsicType = item.changeSymbol === item.feeSymbol ? _KoniTypes.ExtrinsicType.TRANSFER_BALANCE : _KoniTypes.ExtrinsicType.TRANSFER_TOKEN;
|
|
34
|
+
const nativeAsset = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
|
|
35
|
+
const transferAsset = assetList.find(a => a.originChain === item.networkKey && a.symbol === item.changeSymbol) || nativeAsset;
|
|
36
|
+
const newItem = {
|
|
37
|
+
chain: item.networkKey,
|
|
38
|
+
origin: 'migration',
|
|
39
|
+
type: extrinsicType,
|
|
40
|
+
address: item.address,
|
|
41
|
+
extrinsicHash: item.extrinsicHash,
|
|
42
|
+
time: item.time,
|
|
43
|
+
status: item.isSuccess ? _KoniTypes.ExtrinsicStatus.SUCCESS : _KoniTypes.ExtrinsicStatus.FAIL,
|
|
44
|
+
from: direction === _KoniTypes.TransactionDirection.SEND ? item.address : '',
|
|
45
|
+
to: direction === _KoniTypes.TransactionDirection.RECEIVED ? item.address : '',
|
|
46
|
+
amount: {
|
|
47
|
+
value: item.change,
|
|
48
|
+
decimals: transferAsset.decimals || 18,
|
|
49
|
+
symbol: transferAsset.symbol
|
|
50
|
+
},
|
|
51
|
+
fee: {
|
|
52
|
+
value: item.fee,
|
|
53
|
+
decimals: nativeAsset.decimals,
|
|
54
|
+
symbol: nativeAsset.symbol
|
|
55
|
+
},
|
|
56
|
+
direction: direction,
|
|
57
|
+
chainType: (0, _utilCrypto.isEthereumAddress)(item.address) ? _KoniTypes.ChainType.EVM : _KoniTypes.ChainType.SUBSTRATE,
|
|
58
|
+
chainName: chainInfo.name,
|
|
59
|
+
blockNumber: 0,
|
|
60
|
+
blockHash: '',
|
|
61
|
+
data: '',
|
|
62
|
+
signature: ''
|
|
63
|
+
};
|
|
64
|
+
newTransactionItems.push(newItem);
|
|
65
|
+
});
|
|
66
|
+
await state.historyService.addHistoryItems(newTransactionItems);
|
|
67
|
+
} catch (e) {
|
|
68
|
+
this.logger.error(e);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.default = MigrateTransactionHistory;
|
|
@@ -4,14 +4,23 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default = void 0;
|
|
7
|
+
exports.default = exports.EVERYTIME = void 0;
|
|
8
|
+
var _AutoEnableChainsTokens = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/AutoEnableChainsTokens"));
|
|
8
9
|
var _MigrateImportedToken = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateImportedToken"));
|
|
9
10
|
var _MigrateNetworkSettings = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateNetworkSettings"));
|
|
11
|
+
var _MigrateSettings = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateSettings"));
|
|
12
|
+
var _MigrateTransactionHistory = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/MigrateTransactionHistory"));
|
|
10
13
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
11
14
|
// SPDX-License-Identifier: Apache-2.0
|
|
15
|
+
|
|
16
|
+
const EVERYTIME = '__everytime__';
|
|
17
|
+
exports.EVERYTIME = EVERYTIME;
|
|
12
18
|
var _default = {
|
|
13
|
-
'1.0.1-
|
|
14
|
-
'1.0.1-
|
|
15
|
-
|
|
19
|
+
'1.0.1-11': _MigrateNetworkSettings.default,
|
|
20
|
+
'1.0.1-20': _MigrateImportedToken.default,
|
|
21
|
+
'1.0.1-30': _MigrateTransactionHistory.default,
|
|
22
|
+
'1.0.1-40': _AutoEnableChainsTokens.default,
|
|
23
|
+
'1.0.1-50': _MigrateSettings.default
|
|
24
|
+
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
16
25
|
};
|
|
17
26
|
exports.default = _default;
|
|
@@ -9,16 +9,29 @@ var _axios = _interopRequireDefault(require("axios"));
|
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
10
|
// SPDX-License-Identifier: Apache-2.0
|
|
11
11
|
|
|
12
|
+
let useBackupApi = false;
|
|
12
13
|
const getTokenPrice = async function (priceIds) {
|
|
13
14
|
let currency = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'usd';
|
|
14
15
|
try {
|
|
16
|
+
var _res;
|
|
15
17
|
const idStr = Array.from(priceIds).join(',');
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
let res;
|
|
19
|
+
if (!useBackupApi) {
|
|
20
|
+
try {
|
|
21
|
+
res = await _axios.default.get(`https://api.coingecko.com/api/v3/coins/markets?vs_currency=${currency}&per_page=250&ids=${idStr}`);
|
|
22
|
+
} catch (err) {
|
|
23
|
+
useBackupApi = true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (useBackupApi || ((_res = res) === null || _res === void 0 ? void 0 : _res.status) !== 200) {
|
|
27
|
+
console.log('Use backup api for price');
|
|
28
|
+
useBackupApi = true;
|
|
29
|
+
res = await _axios.default.get(`https://chain-data.subwallet.app/api/price/get?ids=${idStr}`);
|
|
30
|
+
}
|
|
18
31
|
if (res.status !== 200) {
|
|
19
32
|
console.warn('Failed to get token price');
|
|
20
33
|
}
|
|
21
|
-
const responseData = res.data;
|
|
34
|
+
const responseData = res.data || [];
|
|
22
35
|
const priceMap = {};
|
|
23
36
|
const price24hMap = {};
|
|
24
37
|
responseData.forEach(val => {
|
|
@@ -19,27 +19,27 @@ const DEFAULT_PRICE_SUBJECT = {
|
|
|
19
19
|
class PriceService {
|
|
20
20
|
priceSubject = new _rxjs.BehaviorSubject(DEFAULT_PRICE_SUBJECT);
|
|
21
21
|
priceIds = new Set();
|
|
22
|
-
constructor(
|
|
22
|
+
constructor(dbService, eventService, chainService) {
|
|
23
23
|
this.dbService = dbService;
|
|
24
|
+
this.eventService = eventService;
|
|
24
25
|
this.chainService = chainService;
|
|
25
26
|
|
|
26
27
|
// Fetch data from storage
|
|
27
28
|
this.getPrice().catch(console.error);
|
|
29
|
+
const eventHandler = () => {
|
|
30
|
+
const newPriceIds = this.getPriceIds();
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
// Compare two set newPriceIds and this.priceIds
|
|
33
|
+
if (newPriceIds.size !== this.priceIds.size || !Array.from(newPriceIds).every(v => this.priceIds.has(v))) {
|
|
34
|
+
this.priceIds = newPriceIds;
|
|
35
|
+
this.refreshPriceData(this.priceIds);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
this.eventService.waitAssetReady.then(() => {
|
|
32
39
|
this.refreshPriceData();
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
// Compare two set newPriceIds and this.priceIds
|
|
37
|
-
if (newPriceIds.size !== this.priceIds.size || !Array.from(newPriceIds).every(v => this.priceIds.has(v))) {
|
|
38
|
-
this.priceIds = newPriceIds;
|
|
39
|
-
this.refreshPriceData(this.priceIds);
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
}, 3000);
|
|
40
|
+
this.eventService.on('asset.enable', eventHandler);
|
|
41
|
+
this.eventService.on('asset.update', eventHandler);
|
|
42
|
+
}).catch(console.error);
|
|
43
43
|
}
|
|
44
44
|
async getPrice() {
|
|
45
45
|
const isReady = this.priceSubject.value.ready;
|
|
@@ -69,9 +69,7 @@ class PriceService {
|
|
|
69
69
|
});
|
|
70
70
|
this.dbService.updatePriceStore(rs).catch(console.error);
|
|
71
71
|
console.log('Get Token Price From CoinGecko');
|
|
72
|
-
}).catch(
|
|
73
|
-
// Pass
|
|
74
|
-
});
|
|
72
|
+
}).catch(console.error);
|
|
75
73
|
this.refreshTimeout = setTimeout(this.refreshPriceData.bind(this), _constants.CRON_REFRESH_PRICE_INTERVAL);
|
|
76
74
|
}
|
|
77
75
|
}
|
|
@@ -3,9 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.EXTENSION_REQUEST_URL = void 0;
|
|
6
|
+
exports.PREDEFINED_CHAIN_DAPP_CHAIN_MAP = exports.EXTENSION_REQUEST_URL = void 0;
|
|
7
7
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
|
|
10
10
|
const EXTENSION_REQUEST_URL = 'extension';
|
|
11
|
-
exports.EXTENSION_REQUEST_URL = EXTENSION_REQUEST_URL;
|
|
11
|
+
exports.EXTENSION_REQUEST_URL = EXTENSION_REQUEST_URL;
|
|
12
|
+
const PREDEFINED_CHAIN_DAPP_CHAIN_MAP = {
|
|
13
|
+
'portal.astar.network': ['astar', 'astarEvm'],
|
|
14
|
+
'apps.moonbeam.network': ['moonbeam', 'moonriver'],
|
|
15
|
+
'app.stellaswap.com': ['moonbeam']
|
|
16
|
+
};
|
|
17
|
+
exports.PREDEFINED_CHAIN_DAPP_CHAIN_MAP = PREDEFINED_CHAIN_DAPP_CHAIN_MAP;
|
|
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
9
|
+
var _constants = require("@subwallet/extension-base/services/request-service/constants");
|
|
9
10
|
var _Authorize = _interopRequireDefault(require("@subwallet/extension-base/stores/Authorize"));
|
|
11
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
10
12
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
11
13
|
var _accounts = require("@subwallet/ui-keyring/observable/accounts");
|
|
12
14
|
var _rxjs = require("rxjs");
|
|
@@ -89,9 +91,39 @@ class AuthRequestHandler {
|
|
|
89
91
|
});
|
|
90
92
|
});
|
|
91
93
|
}
|
|
92
|
-
|
|
94
|
+
getDAppChainInfo(options) {
|
|
95
|
+
const chainInfoMaps = this.#chainService.getChainInfoMap();
|
|
96
|
+
const chainStateMap = this.#chainService.getChainStateMap();
|
|
97
|
+
let defaultChain = options.defaultChain;
|
|
98
|
+
const needEnableChains = [];
|
|
99
|
+
if (options.url) {
|
|
100
|
+
const domain = (0, _utils2.getDomainFromUrl)(options.url);
|
|
101
|
+
const predefinedSupportChains = _constants.PREDEFINED_CHAIN_DAPP_CHAIN_MAP[domain];
|
|
102
|
+
if (predefinedSupportChains) {
|
|
103
|
+
defaultChain = predefinedSupportChains[0];
|
|
104
|
+
options.autoActive && needEnableChains.push(...predefinedSupportChains);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
let chainInfo;
|
|
108
|
+
if (['both', 'evm'].includes(options.accessType)) {
|
|
109
|
+
const evmChains = Object.values(chainInfoMaps).filter(_utils._isChainEvmCompatible);
|
|
110
|
+
chainInfo = (defaultChain ? chainInfoMaps[defaultChain] : evmChains.find(chain => {
|
|
111
|
+
var _chainStateMap$chain$;
|
|
112
|
+
return (_chainStateMap$chain$ = chainStateMap[chain.slug]) === null || _chainStateMap$chain$ === void 0 ? void 0 : _chainStateMap$chain$.active;
|
|
113
|
+
})) || evmChains[0];
|
|
114
|
+
if (options.autoActive) {
|
|
115
|
+
if (!needEnableChains.includes(chainInfo.slug)) {
|
|
116
|
+
needEnableChains.push(chainInfo.slug);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
needEnableChains.length > 0 && this.#chainService.enableChains(needEnableChains);
|
|
121
|
+
return chainInfo;
|
|
122
|
+
}
|
|
123
|
+
authCompleteV2 = (id, url, resolve, reject) => {
|
|
93
124
|
const isAllowedMap = this.getAddressList();
|
|
94
125
|
const complete = (result, cb, accounts) => {
|
|
126
|
+
var _this$getDAppChainInf;
|
|
95
127
|
const isAllowed = result === true;
|
|
96
128
|
let isCancelled = false;
|
|
97
129
|
if (!isAllowed && typeof result === 'object' && result.message === 'Cancelled') {
|
|
@@ -124,16 +156,11 @@ class AuthRequestHandler {
|
|
|
124
156
|
isAllowedMap[acc] = true;
|
|
125
157
|
});
|
|
126
158
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
});
|
|
133
|
-
if (defaultChain) {
|
|
134
|
-
defaultEvmNetworkKey = defaultChain.slug;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
159
|
+
const defaultEvmNetworkKey = (_this$getDAppChainInf = this.getDAppChainInfo({
|
|
160
|
+
accessType: accountAuthType,
|
|
161
|
+
url,
|
|
162
|
+
autoActive: !isCancelled && isAllowed
|
|
163
|
+
})) === null || _this$getDAppChainInf === void 0 ? void 0 : _this$getDAppChainInf.slug;
|
|
137
164
|
this.getAuthorize(value => {
|
|
138
165
|
let authorizeList = {};
|
|
139
166
|
if (value) {
|
|
@@ -224,7 +251,7 @@ class AuthRequestHandler {
|
|
|
224
251
|
return new Promise((resolve, reject) => {
|
|
225
252
|
const id = (0, _getId.getId)();
|
|
226
253
|
this.#authRequestsV2[id] = {
|
|
227
|
-
...this.authCompleteV2(id, resolve, reject),
|
|
254
|
+
...this.authCompleteV2(id, url, resolve, reject),
|
|
228
255
|
id,
|
|
229
256
|
idStr,
|
|
230
257
|
request,
|
|
@@ -104,6 +104,9 @@ class RequestService {
|
|
|
104
104
|
getAuthRequestV2(id) {
|
|
105
105
|
return this.#authRequestHandler.getAuthRequestV2(id);
|
|
106
106
|
}
|
|
107
|
+
getDAppChainInfo(options) {
|
|
108
|
+
return this.#authRequestHandler.getDAppChainInfo(options);
|
|
109
|
+
}
|
|
107
110
|
get subscribeEvmChainChange() {
|
|
108
111
|
return this.#authRequestHandler.subscribeEvmChainChange;
|
|
109
112
|
}
|
|
@@ -164,7 +164,7 @@ class DatabaseService {
|
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
handleNftTransfer(chain, addresses, nftItem) {
|
|
167
|
-
return this.stores.nft.
|
|
167
|
+
return this.stores.nft.deleteNftItem(chain, addresses, nftItem);
|
|
168
168
|
}
|
|
169
169
|
removeNfts(chain, address, collectionId, nftIds) {
|
|
170
170
|
this.logger.log(`Remove NFTs [${nftIds.join(', ')}]`);
|
|
@@ -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] : 10;
|
|
17
17
|
super(name);
|
|
18
18
|
this.schemaVersion = schemaVersion;
|
|
19
19
|
this.conditionalVersion(1, {
|
|
@@ -16,14 +16,8 @@ class BaseStoreWithAddressAndChain extends _BaseStore.default {
|
|
|
16
16
|
[v.chain]: v
|
|
17
17
|
}), {});
|
|
18
18
|
}
|
|
19
|
-
removeAllByAddress(address
|
|
20
|
-
|
|
21
|
-
address
|
|
22
|
-
};
|
|
23
|
-
if (chain) {
|
|
24
|
-
conditions.chain = chain;
|
|
25
|
-
}
|
|
26
|
-
return this.table.where(conditions).delete();
|
|
19
|
+
removeAllByAddress(address) {
|
|
20
|
+
return this.table.where('address').equalsIgnoreCase(address).delete();
|
|
27
21
|
}
|
|
28
22
|
async getDataByAddressAsObject(address) {
|
|
29
23
|
const data = await this.table.where('address').equals(address).toArray();
|
|
@@ -44,7 +44,10 @@ class NftStore extends _BaseStoreWithAddressAndChain.default {
|
|
|
44
44
|
chain
|
|
45
45
|
}).and(nft => !collectionIds.some(item => item === nft.collectionId));
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
deleteNftByAddress(addresses) {
|
|
48
|
+
return this.table.where('address').anyOfIgnoreCase(addresses).delete();
|
|
49
|
+
}
|
|
50
|
+
deleteNftItem(chain, addresses, nftItem) {
|
|
48
51
|
return this.table.where('address').anyOfIgnoreCase(addresses).filter(storedItem => storedItem.chain === chain && storedItem.collectionId === nftItem.collectionId && storedItem.id === nftItem.id).delete();
|
|
49
52
|
}
|
|
50
53
|
deleteNftsByCollection(chain, collectionId) {
|