@subwallet/extension-base 1.0.4-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 +1 -1
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +1 -1
- package/cjs/services/chain-service/index.js +75 -26
- 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 +16 -11
- package/packageInfo.js +1 -1
- package/services/chain-service/constants.js +1 -1
- package/services/chain-service/handler/SubstrateChainHandler.js +1 -1
- package/services/chain-service/index.d.ts +2 -1
- package/services/chain-service/index.js +75 -26
- 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
|
@@ -1111,7 +1111,8 @@ export declare enum StakingStatus {
|
|
|
1111
1111
|
EARNING_REWARD = "EARNING_REWARD",
|
|
1112
1112
|
PARTIALLY_EARNING = "PARTIALLY_EARNING",
|
|
1113
1113
|
NOT_EARNING = "NOT_EARNING",
|
|
1114
|
-
WAITING = "WAITING"
|
|
1114
|
+
WAITING = "WAITING",
|
|
1115
|
+
NOT_STAKING = "NOT_STAKING"
|
|
1115
1116
|
}
|
|
1116
1117
|
export interface NominatorMetadata {
|
|
1117
1118
|
chain: string;
|
|
@@ -1245,20 +1246,6 @@ export declare type RequestWithdrawStakeExternal = InternalRequestSign<StakeWith
|
|
|
1245
1246
|
export declare type RequestClaimRewardExternal = InternalRequestSign<StakeClaimRewardParams>;
|
|
1246
1247
|
export declare type RequestCreateCompoundStakeExternal = InternalRequestSign<TuringStakeCompoundParams>;
|
|
1247
1248
|
export declare type RequestCancelCompoundStakeExternal = InternalRequestSign<TuringCancelStakeCompoundParams>;
|
|
1248
|
-
export interface KeyringState {
|
|
1249
|
-
isReady: boolean;
|
|
1250
|
-
hasMasterPassword: boolean;
|
|
1251
|
-
isLocked: boolean;
|
|
1252
|
-
}
|
|
1253
|
-
export interface AddressBookState {
|
|
1254
|
-
contacts: AddressJson[];
|
|
1255
|
-
recent: AddressJson[];
|
|
1256
|
-
}
|
|
1257
|
-
export interface RequestChangeMasterPassword {
|
|
1258
|
-
oldPassword?: string;
|
|
1259
|
-
newPassword: string;
|
|
1260
|
-
createNew: boolean;
|
|
1261
|
-
}
|
|
1262
1249
|
export declare enum ChainEditStandard {
|
|
1263
1250
|
EVM = "EVM",
|
|
1264
1251
|
SUBSTRATE = "SUBSTRATE",
|
|
@@ -1284,6 +1271,20 @@ export interface ChainSpecInfo {
|
|
|
1284
1271
|
existentialDeposit: string;
|
|
1285
1272
|
decimals: number;
|
|
1286
1273
|
}
|
|
1274
|
+
export interface KeyringState {
|
|
1275
|
+
isReady: boolean;
|
|
1276
|
+
hasMasterPassword: boolean;
|
|
1277
|
+
isLocked: boolean;
|
|
1278
|
+
}
|
|
1279
|
+
export interface AddressBookState {
|
|
1280
|
+
contacts: AddressJson[];
|
|
1281
|
+
recent: AddressJson[];
|
|
1282
|
+
}
|
|
1283
|
+
export interface RequestChangeMasterPassword {
|
|
1284
|
+
oldPassword?: string;
|
|
1285
|
+
newPassword: string;
|
|
1286
|
+
createNew: boolean;
|
|
1287
|
+
}
|
|
1287
1288
|
export interface ResponseChangeMasterPassword {
|
|
1288
1289
|
status: boolean;
|
|
1289
1290
|
errors: string[];
|
|
@@ -1310,12 +1311,20 @@ export interface RequestKeyringExportMnemonic {
|
|
|
1310
1311
|
export interface ResponseKeyringExportMnemonic {
|
|
1311
1312
|
result: string;
|
|
1312
1313
|
}
|
|
1314
|
+
export interface RequestResetWallet {
|
|
1315
|
+
resetAll: boolean;
|
|
1316
|
+
}
|
|
1317
|
+
export interface ResponseResetWallet {
|
|
1318
|
+
status: boolean;
|
|
1319
|
+
errors: string[];
|
|
1320
|
+
}
|
|
1313
1321
|
export interface RequestSigningApprovePasswordV2 {
|
|
1314
1322
|
id: string;
|
|
1315
1323
|
}
|
|
1316
1324
|
export interface AssetSettingUpdateReq {
|
|
1317
1325
|
tokenSlug: string;
|
|
1318
1326
|
assetSetting: AssetSetting;
|
|
1327
|
+
autoEnableNativeToken?: boolean;
|
|
1319
1328
|
}
|
|
1320
1329
|
export interface RequestGetTransaction {
|
|
1321
1330
|
id: string;
|
|
@@ -1493,6 +1502,7 @@ export interface KoniRequestSignatures {
|
|
|
1493
1502
|
'pri(keyring.unlock)': [RequestUnlockKeyring, ResponseUnlockKeyring];
|
|
1494
1503
|
'pri(keyring.lock)': [null, void];
|
|
1495
1504
|
'pri(keyring.export.mnemonic)': [RequestKeyringExportMnemonic, ResponseKeyringExportMnemonic];
|
|
1505
|
+
'pri(keyring.reset)': [RequestResetWallet, ResponseResetWallet];
|
|
1496
1506
|
'pri(signing.approve.passwordV2)': [RequestSigningApprovePasswordV2, boolean];
|
|
1497
1507
|
'pri(derivation.validateV2)': [RequestDeriveValidateV2, ResponseDeriveValidateV2];
|
|
1498
1508
|
'pri(derivation.getList)': [RequestGetDeriveAccounts, ResponseGetDeriveAccounts];
|
package/background/KoniTypes.js
CHANGED
|
@@ -211,6 +211,7 @@ export let StakingStatus;
|
|
|
211
211
|
StakingStatus["PARTIALLY_EARNING"] = "PARTIALLY_EARNING";
|
|
212
212
|
StakingStatus["NOT_EARNING"] = "NOT_EARNING";
|
|
213
213
|
StakingStatus["WAITING"] = "WAITING";
|
|
214
|
+
StakingStatus["NOT_STAKING"] = "NOT_STAKING";
|
|
214
215
|
})(StakingStatus || (StakingStatus = {}));
|
|
215
216
|
export let ChainEditStandard;
|
|
216
217
|
|
|
@@ -219,6 +219,7 @@ exports.StakingStatus = StakingStatus;
|
|
|
219
219
|
StakingStatus["PARTIALLY_EARNING"] = "PARTIALLY_EARNING";
|
|
220
220
|
StakingStatus["NOT_EARNING"] = "NOT_EARNING";
|
|
221
221
|
StakingStatus["WAITING"] = "WAITING";
|
|
222
|
+
StakingStatus["NOT_STAKING"] = "NOT_STAKING";
|
|
222
223
|
})(StakingStatus || (exports.StakingStatus = StakingStatus = {}));
|
|
223
224
|
let ChainEditStandard; // ChainService
|
|
224
225
|
// for custom network
|
|
@@ -54,9 +54,16 @@ async function getAmplitudeNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
54
54
|
const minDelegatorStake = chainApi.api.consts.parachainStaking.minDelegatorStake.toString();
|
|
55
55
|
const delegatorState = _delegatorState.toPrimitive();
|
|
56
56
|
const unstakingInfo = _unstakingInfo.toPrimitive();
|
|
57
|
-
console.log('unstakingInfo ampe', unstakingInfo, !!unstakingInfo);
|
|
58
57
|
if (!delegatorState && !unstakingInfo) {
|
|
59
|
-
return
|
|
58
|
+
return {
|
|
59
|
+
chain: chainInfo.slug,
|
|
60
|
+
type: _KoniTypes.StakingType.NOMINATED,
|
|
61
|
+
address,
|
|
62
|
+
status: _KoniTypes.StakingStatus.NOT_STAKING,
|
|
63
|
+
activeStake: '0',
|
|
64
|
+
nominations: [],
|
|
65
|
+
unstakings: []
|
|
66
|
+
};
|
|
60
67
|
}
|
|
61
68
|
let activeStake = '0';
|
|
62
69
|
if (delegatorState) {
|
|
@@ -122,7 +122,15 @@ async function getAstarNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
124
|
if (nominationList.length === 0 && unstakingList.length === 0) {
|
|
125
|
-
return
|
|
125
|
+
return {
|
|
126
|
+
chain: chainInfo.slug,
|
|
127
|
+
type: _KoniTypes.StakingType.NOMINATED,
|
|
128
|
+
address,
|
|
129
|
+
status: _KoniTypes.StakingStatus.NOT_STAKING,
|
|
130
|
+
activeStake: '0',
|
|
131
|
+
nominations: [],
|
|
132
|
+
unstakings: []
|
|
133
|
+
};
|
|
126
134
|
}
|
|
127
135
|
const stakingStatus = (0, _utils.getStakingStatusByNominations)(bnTotalActiveStake, nominationList);
|
|
128
136
|
return {
|
|
@@ -58,7 +58,7 @@ function validateParaChainBondingCondition(chainInfo, amount, selectedCollators,
|
|
|
58
58
|
const bnChainMinStake = new _util.BN(chainStakingMetadata.minStake || '0');
|
|
59
59
|
const bnCollatorMinStake = new _util.BN(selectedCollator.minBond || '0');
|
|
60
60
|
const bnMinStake = bnCollatorMinStake > bnChainMinStake ? bnCollatorMinStake : bnChainMinStake;
|
|
61
|
-
if (!nominatorMetadata) {
|
|
61
|
+
if (!nominatorMetadata || nominatorMetadata.status === _KoniTypes.StakingStatus.NOT_STAKING) {
|
|
62
62
|
if (!bnTotalStake.gte(bnMinStake)) {
|
|
63
63
|
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
64
64
|
}
|
|
@@ -146,7 +146,15 @@ async function getParaChainNominatorMetadata(chainInfo, address, substrateApi) {
|
|
|
146
146
|
const _delegatorState = await chainApi.api.query.parachainStaking.delegatorState(address);
|
|
147
147
|
const delegatorState = _delegatorState.toPrimitive();
|
|
148
148
|
if (!delegatorState) {
|
|
149
|
-
return
|
|
149
|
+
return {
|
|
150
|
+
chain: chainInfo.slug,
|
|
151
|
+
type: _KoniTypes.StakingType.NOMINATED,
|
|
152
|
+
address,
|
|
153
|
+
status: _KoniTypes.StakingStatus.NOT_STAKING,
|
|
154
|
+
activeStake: '0',
|
|
155
|
+
nominations: [],
|
|
156
|
+
unstakings: []
|
|
157
|
+
};
|
|
150
158
|
}
|
|
151
159
|
let bnTotalActiveStake = _util.BN_ZERO;
|
|
152
160
|
await Promise.all(delegatorState.delegations.map(async delegation => {
|
|
@@ -55,7 +55,7 @@ function validatePoolBondingCondition(chainInfo, amount, selectedPool, address,
|
|
|
55
55
|
if (nominatorMetadata) {
|
|
56
56
|
const bnCurrentActiveStake = new _util.BN(nominatorMetadata.activeStake);
|
|
57
57
|
bnTotalStake = bnTotalStake.add(bnCurrentActiveStake);
|
|
58
|
-
if (
|
|
58
|
+
if (nominatorMetadata.unstakings.length > 0) {
|
|
59
59
|
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.EXIST_UNSTAKING_REQUEST));
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -68,7 +68,7 @@ function validateRelayBondingCondition(chainInfo, amount, selectedValidators, ad
|
|
|
68
68
|
const errors = [];
|
|
69
69
|
let bnTotalStake = new _util.BN(amount);
|
|
70
70
|
const bnMinStake = new _util.BN(chainStakingMetadata.minStake);
|
|
71
|
-
if (!nominatorMetadata) {
|
|
71
|
+
if (!nominatorMetadata || nominatorMetadata.status === _KoniTypes.StakingStatus.NOT_STAKING) {
|
|
72
72
|
if (!bnTotalStake.gte(bnMinStake)) {
|
|
73
73
|
errors.push(new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.NOT_ENOUGH_MIN_STAKE));
|
|
74
74
|
}
|
|
@@ -166,7 +166,15 @@ async function getRelayChainNominatorMetadata(chainInfo, address, substrateApi)
|
|
|
166
166
|
const currentEra = _currentEra.toString();
|
|
167
167
|
const bonded = _bonded.toHuman();
|
|
168
168
|
if (!ledger) {
|
|
169
|
-
return
|
|
169
|
+
return {
|
|
170
|
+
chain,
|
|
171
|
+
type: _KoniTypes.StakingType.NOMINATED,
|
|
172
|
+
status: _KoniTypes.StakingStatus.NOT_STAKING,
|
|
173
|
+
address: address,
|
|
174
|
+
activeStake: '0',
|
|
175
|
+
nominations: [],
|
|
176
|
+
unstakings: []
|
|
177
|
+
};
|
|
170
178
|
}
|
|
171
179
|
const activeStake = ledger.active.toString();
|
|
172
180
|
const nominationList = [];
|
|
@@ -246,7 +254,16 @@ async function getRelayChainPoolMemberMetadata(chainInfo, address, substrateApi)
|
|
|
246
254
|
const poolMemberInfo = _poolMemberInfo.toPrimitive();
|
|
247
255
|
const currentEra = _currentEra.toString();
|
|
248
256
|
if (!poolMemberInfo) {
|
|
249
|
-
return
|
|
257
|
+
return {
|
|
258
|
+
chain: chainInfo.slug,
|
|
259
|
+
type: _KoniTypes.StakingType.POOLED,
|
|
260
|
+
address,
|
|
261
|
+
status: _KoniTypes.StakingStatus.NOT_STAKING,
|
|
262
|
+
activeStake: '0',
|
|
263
|
+
nominations: [],
|
|
264
|
+
// can only join 1 pool at a time
|
|
265
|
+
unstakings: []
|
|
266
|
+
};
|
|
250
267
|
}
|
|
251
268
|
let stakingStatus = _KoniTypes.StakingStatus.NOT_EARNING;
|
|
252
269
|
const _poolMetadata = await chainApi.api.query.nominationPools.metadata(poolMemberInfo.poolId);
|
|
@@ -930,7 +930,7 @@ class KoniExtension {
|
|
|
930
930
|
}
|
|
931
931
|
async updateAssetSetting(params) {
|
|
932
932
|
try {
|
|
933
|
-
await this.#koniState.chainService.updateAssetSetting(params.tokenSlug, params.assetSetting);
|
|
933
|
+
await this.#koniState.chainService.updateAssetSetting(params.tokenSlug, params.assetSetting, params.autoEnableNativeToken);
|
|
934
934
|
this.#koniState.eventService.emit('asset.updateState', params.tokenSlug);
|
|
935
935
|
return true;
|
|
936
936
|
} catch (e) {
|
|
@@ -2451,6 +2451,11 @@ class KoniExtension {
|
|
|
2451
2451
|
chainType: _KoniTypes.ChainType.SUBSTRATE
|
|
2452
2452
|
});
|
|
2453
2453
|
}
|
|
2454
|
+
|
|
2455
|
+
/// Keyring state
|
|
2456
|
+
|
|
2457
|
+
// Subscribe keyring state
|
|
2458
|
+
|
|
2454
2459
|
keyringStateSubscribe(id, port) {
|
|
2455
2460
|
const cb = (0, _subscriptions.createSubscription)(id, port);
|
|
2456
2461
|
const keyringStateSubject = this.#koniState.keyringService.keyringStateSubject;
|
|
@@ -2461,6 +2466,9 @@ class KoniExtension {
|
|
|
2461
2466
|
});
|
|
2462
2467
|
return this.#koniState.keyringService.keyringState;
|
|
2463
2468
|
}
|
|
2469
|
+
|
|
2470
|
+
// Change master password
|
|
2471
|
+
|
|
2464
2472
|
keyringChangeMasterPassword(_ref56) {
|
|
2465
2473
|
let {
|
|
2466
2474
|
createNew,
|
|
@@ -2497,6 +2505,9 @@ class KoniExtension {
|
|
|
2497
2505
|
errors: []
|
|
2498
2506
|
};
|
|
2499
2507
|
}
|
|
2508
|
+
|
|
2509
|
+
// Migrate password
|
|
2510
|
+
|
|
2500
2511
|
keyringMigrateMasterPassword(_ref57) {
|
|
2501
2512
|
let {
|
|
2502
2513
|
address,
|
|
@@ -2516,6 +2527,9 @@ class KoniExtension {
|
|
|
2516
2527
|
errors: []
|
|
2517
2528
|
};
|
|
2518
2529
|
}
|
|
2530
|
+
|
|
2531
|
+
// Unlock wallet
|
|
2532
|
+
|
|
2519
2533
|
keyringUnlock(_ref58) {
|
|
2520
2534
|
let {
|
|
2521
2535
|
password
|
|
@@ -2534,11 +2548,17 @@ class KoniExtension {
|
|
|
2534
2548
|
errors: []
|
|
2535
2549
|
};
|
|
2536
2550
|
}
|
|
2551
|
+
|
|
2552
|
+
// Lock wallet
|
|
2553
|
+
|
|
2537
2554
|
keyringLock() {
|
|
2538
2555
|
_uiKeyring.keyring.lockAll();
|
|
2539
2556
|
this.#koniState.updateKeyringState();
|
|
2540
2557
|
clearTimeout(this.#lockTimeOut);
|
|
2541
2558
|
}
|
|
2559
|
+
|
|
2560
|
+
// Export mnemonic
|
|
2561
|
+
|
|
2542
2562
|
keyringExportMnemonic(_ref59) {
|
|
2543
2563
|
let {
|
|
2544
2564
|
address,
|
|
@@ -2551,11 +2571,31 @@ class KoniExtension {
|
|
|
2551
2571
|
};
|
|
2552
2572
|
}
|
|
2553
2573
|
|
|
2574
|
+
// Reset wallet
|
|
2575
|
+
|
|
2576
|
+
async resetWallet(_ref60) {
|
|
2577
|
+
let {
|
|
2578
|
+
resetAll
|
|
2579
|
+
} = _ref60;
|
|
2580
|
+
try {
|
|
2581
|
+
await this.#koniState.resetWallet(resetAll);
|
|
2582
|
+
return {
|
|
2583
|
+
errors: [],
|
|
2584
|
+
status: true
|
|
2585
|
+
};
|
|
2586
|
+
} catch (e) {
|
|
2587
|
+
return {
|
|
2588
|
+
errors: [e.message],
|
|
2589
|
+
status: false
|
|
2590
|
+
};
|
|
2591
|
+
}
|
|
2592
|
+
}
|
|
2593
|
+
|
|
2554
2594
|
/// Signing external request
|
|
2555
|
-
signingApprovePasswordV2(
|
|
2595
|
+
signingApprovePasswordV2(_ref61) {
|
|
2556
2596
|
let {
|
|
2557
2597
|
id
|
|
2558
|
-
} =
|
|
2598
|
+
} = _ref61;
|
|
2559
2599
|
const queued = this.#koniState.getSignRequest(id);
|
|
2560
2600
|
(0, _util.assert)(queued, 'Unable to find request');
|
|
2561
2601
|
const {
|
|
@@ -2608,22 +2648,22 @@ class KoniExtension {
|
|
|
2608
2648
|
|
|
2609
2649
|
/// Derive account
|
|
2610
2650
|
|
|
2611
|
-
derivationCreateMultiple(
|
|
2651
|
+
derivationCreateMultiple(_ref62) {
|
|
2612
2652
|
let {
|
|
2613
2653
|
isAllowed,
|
|
2614
2654
|
items,
|
|
2615
2655
|
parentAddress
|
|
2616
|
-
} =
|
|
2656
|
+
} = _ref62;
|
|
2617
2657
|
const parentPair = _uiKeyring.keyring.getPair(parentAddress);
|
|
2618
2658
|
const isEvm = parentPair.type === 'ethereum';
|
|
2619
2659
|
if (parentPair.isLocked) {
|
|
2620
2660
|
_uiKeyring.keyring.unlockPair(parentPair.address);
|
|
2621
2661
|
}
|
|
2622
|
-
const createChild =
|
|
2662
|
+
const createChild = _ref63 => {
|
|
2623
2663
|
let {
|
|
2624
2664
|
name,
|
|
2625
2665
|
suri
|
|
2626
|
-
} =
|
|
2666
|
+
} = _ref63;
|
|
2627
2667
|
const meta = {
|
|
2628
2668
|
name: name,
|
|
2629
2669
|
parentAddress
|
|
@@ -2669,10 +2709,10 @@ class KoniExtension {
|
|
|
2669
2709
|
}
|
|
2670
2710
|
return true;
|
|
2671
2711
|
}
|
|
2672
|
-
derivationCreateV3(
|
|
2712
|
+
derivationCreateV3(_ref64) {
|
|
2673
2713
|
let {
|
|
2674
2714
|
address: parentAddress
|
|
2675
|
-
} =
|
|
2715
|
+
} = _ref64;
|
|
2676
2716
|
const parentPair = _uiKeyring.keyring.getPair(parentAddress);
|
|
2677
2717
|
const isEvm = parentPair.type === 'ethereum';
|
|
2678
2718
|
if (parentPair.isLocked) {
|
|
@@ -2704,11 +2744,11 @@ class KoniExtension {
|
|
|
2704
2744
|
});
|
|
2705
2745
|
return true;
|
|
2706
2746
|
}
|
|
2707
|
-
validateDerivePath(
|
|
2747
|
+
validateDerivePath(_ref65) {
|
|
2708
2748
|
let {
|
|
2709
2749
|
parentAddress,
|
|
2710
2750
|
suri
|
|
2711
|
-
} =
|
|
2751
|
+
} = _ref65;
|
|
2712
2752
|
const parentPair = _uiKeyring.keyring.getPair(parentAddress);
|
|
2713
2753
|
const isEvm = parentPair.type === 'ethereum';
|
|
2714
2754
|
if (parentPair.isLocked) {
|
|
@@ -2741,12 +2781,12 @@ class KoniExtension {
|
|
|
2741
2781
|
suri: meta.suri
|
|
2742
2782
|
};
|
|
2743
2783
|
}
|
|
2744
|
-
getListDeriveAccounts(
|
|
2784
|
+
getListDeriveAccounts(_ref66) {
|
|
2745
2785
|
let {
|
|
2746
2786
|
limit,
|
|
2747
2787
|
page,
|
|
2748
2788
|
parentAddress
|
|
2749
|
-
} =
|
|
2789
|
+
} = _ref66;
|
|
2750
2790
|
const parentPair = _uiKeyring.keyring.getPair(parentAddress);
|
|
2751
2791
|
const isEvm = parentPair.type === 'ethereum';
|
|
2752
2792
|
if (parentPair.isLocked) {
|
|
@@ -2837,10 +2877,10 @@ class KoniExtension {
|
|
|
2837
2877
|
getSupportedSmartContractTypes() {
|
|
2838
2878
|
return this.#koniState.getSupportedSmartContractTypes();
|
|
2839
2879
|
}
|
|
2840
|
-
getTransaction(
|
|
2880
|
+
getTransaction(_ref67) {
|
|
2841
2881
|
let {
|
|
2842
2882
|
id
|
|
2843
|
-
} =
|
|
2883
|
+
} = _ref67;
|
|
2844
2884
|
const {
|
|
2845
2885
|
transaction,
|
|
2846
2886
|
...transactionResult
|
|
@@ -2850,8 +2890,8 @@ class KoniExtension {
|
|
|
2850
2890
|
subscribeTransactions(id, port) {
|
|
2851
2891
|
const cb = (0, _subscriptions.createSubscription)(id, port);
|
|
2852
2892
|
function convertRs(rs) {
|
|
2853
|
-
return Object.fromEntries(Object.entries(rs).map(
|
|
2854
|
-
let [key, value] =
|
|
2893
|
+
return Object.fromEntries(Object.entries(rs).map(_ref68 => {
|
|
2894
|
+
let [key, value] = _ref68;
|
|
2855
2895
|
const {
|
|
2856
2896
|
transaction,
|
|
2857
2897
|
...transactionResult
|
|
@@ -2881,10 +2921,10 @@ class KoniExtension {
|
|
|
2881
2921
|
});
|
|
2882
2922
|
return notificationSubject.value;
|
|
2883
2923
|
}
|
|
2884
|
-
async reloadCron(
|
|
2924
|
+
async reloadCron(_ref69) {
|
|
2885
2925
|
let {
|
|
2886
2926
|
data
|
|
2887
|
-
} =
|
|
2927
|
+
} = _ref69;
|
|
2888
2928
|
if (data === 'nft') {
|
|
2889
2929
|
return await this.#koniState.reloadNft();
|
|
2890
2930
|
} else if (data === 'staking') {
|
|
@@ -3232,6 +3272,8 @@ class KoniExtension {
|
|
|
3232
3272
|
return this.keyringLock();
|
|
3233
3273
|
case 'pri(keyring.export.mnemonic)':
|
|
3234
3274
|
return this.keyringExportMnemonic(request);
|
|
3275
|
+
case 'pri(keyring.reset)':
|
|
3276
|
+
return await this.resetWallet(request);
|
|
3235
3277
|
|
|
3236
3278
|
/// Signing external
|
|
3237
3279
|
case 'pri(signing.approve.passwordV2)':
|
|
@@ -1454,5 +1454,17 @@ class KoniState {
|
|
|
1454
1454
|
async reloadStaking() {
|
|
1455
1455
|
return await this.cron.reloadStaking();
|
|
1456
1456
|
}
|
|
1457
|
+
async resetWallet(resetAll) {
|
|
1458
|
+
this.keyringService.resetWallet(resetAll);
|
|
1459
|
+
this.requestService.resetWallet();
|
|
1460
|
+
this.transactionService.resetWallet();
|
|
1461
|
+
await this.dbService.resetWallet(resetAll);
|
|
1462
|
+
this.accountRefStore.set('refList', []);
|
|
1463
|
+
if (resetAll) {
|
|
1464
|
+
this.settingService.resetWallet();
|
|
1465
|
+
}
|
|
1466
|
+
this.chainService.resetWallet(resetAll);
|
|
1467
|
+
await this.chainService.init();
|
|
1468
|
+
}
|
|
1457
1469
|
}
|
|
1458
1470
|
exports.default = KoniState;
|
package/cjs/packageInfo.js
CHANGED
|
@@ -228,7 +228,7 @@ const _CHAIN_ASSET_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-
|
|
|
228
228
|
exports._CHAIN_ASSET_SRC = _CHAIN_ASSET_SRC;
|
|
229
229
|
const _ASSET_REF_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-Chain/${TARGET_BRANCH}/packages/chain-list/src/data/AssetRef.json`;
|
|
230
230
|
exports._ASSET_REF_SRC = _ASSET_REF_SRC;
|
|
231
|
-
const _MULTI_CHAIN_ASSET_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-Chain/${TARGET_BRANCH}/packages/chain-list/src/data/
|
|
231
|
+
const _MULTI_CHAIN_ASSET_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-Chain/${TARGET_BRANCH}/packages/chain-list/src/data/MultiChainAsset.json`;
|
|
232
232
|
exports._MULTI_CHAIN_ASSET_SRC = _MULTI_CHAIN_ASSET_SRC;
|
|
233
233
|
const _CHAIN_LOGO_MAP_SRC = `https://raw.githubusercontent.com/Koniverse/SubWallet-Chain/${TARGET_BRANCH}/packages/chain-list/src/data/ChainLogoMap.json`;
|
|
234
234
|
exports._CHAIN_LOGO_MAP_SRC = _CHAIN_LOGO_MAP_SRC;
|
|
@@ -119,7 +119,7 @@ class SubstrateChainHandler {
|
|
|
119
119
|
name = nameResp.output ? nameObj.Ok || nameObj.ok : '';
|
|
120
120
|
decimals = decimalsResp.output ? new _util.BN(decimalsObj.Ok || decimalsObj.ok).toNumber() : 0;
|
|
121
121
|
symbol = decimalsResp.output ? symbolObj.Ok || symbolObj.ok : '';
|
|
122
|
-
if (name === '' || symbol === '') {
|
|
122
|
+
if (!name || !symbol || typeof name === 'object' || typeof symbol === 'object') {
|
|
123
123
|
contractError = true;
|
|
124
124
|
}
|
|
125
125
|
console.log('validate PSP22', name, symbol, decimals);
|
|
@@ -483,31 +483,43 @@ class ChainService {
|
|
|
483
483
|
return duplicatedSlug;
|
|
484
484
|
}
|
|
485
485
|
async fetchLatestData(src, defaultValue) {
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
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
|
+
// }
|
|
510
521
|
}
|
|
522
|
+
|
|
511
523
|
async initChains() {
|
|
512
524
|
const storedChainSettings = await this.dbService.getAllChainStore();
|
|
513
525
|
const latestChainInfoMap = await this.fetchLatestData(_constants._CHAIN_INFO_SRC, _chainList.ChainInfoMap);
|
|
@@ -1198,13 +1210,12 @@ class ChainService {
|
|
|
1198
1210
|
}
|
|
1199
1211
|
return this.assetSettingSubject.value;
|
|
1200
1212
|
}
|
|
1201
|
-
async updateAssetSetting(assetSlug, assetSetting) {
|
|
1213
|
+
async updateAssetSetting(assetSlug, assetSetting, autoEnableNativeToken) {
|
|
1202
1214
|
const currentAssetSettings = await this.getAssetSettings();
|
|
1203
1215
|
let needUpdateSubject;
|
|
1204
1216
|
|
|
1205
1217
|
// Update settings
|
|
1206
1218
|
currentAssetSettings[assetSlug] = assetSetting;
|
|
1207
|
-
this.setAssetSettings(currentAssetSettings);
|
|
1208
1219
|
if (assetSetting.visible) {
|
|
1209
1220
|
const assetInfo = this.getAssetBySlug(assetSlug);
|
|
1210
1221
|
const chainState = this.getChainStateByKey(assetInfo.originChain);
|
|
@@ -1213,8 +1224,15 @@ class ChainService {
|
|
|
1213
1224
|
if (chainState && !chainState.active) {
|
|
1214
1225
|
this.enableChain(chainState.slug);
|
|
1215
1226
|
needUpdateSubject = true;
|
|
1227
|
+
if (autoEnableNativeToken) {
|
|
1228
|
+
const nativeAsset = this.getNativeTokenInfo(assetInfo.originChain);
|
|
1229
|
+
currentAssetSettings[nativeAsset.slug] = {
|
|
1230
|
+
visible: true
|
|
1231
|
+
};
|
|
1232
|
+
}
|
|
1216
1233
|
}
|
|
1217
1234
|
}
|
|
1235
|
+
this.setAssetSettings(currentAssetSettings);
|
|
1218
1236
|
return needUpdateSubject;
|
|
1219
1237
|
}
|
|
1220
1238
|
async updateAssetSettingByChain(chainSlug, visible) {
|
|
@@ -1237,5 +1255,36 @@ class ChainService {
|
|
|
1237
1255
|
async getAssetLogoMap() {
|
|
1238
1256
|
return await this.fetchLatestData(_constants._ASSET_LOGO_MAP_SRC, _chainList.AssetLogoMap);
|
|
1239
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
|
+
}
|
|
1288
|
+
}
|
|
1240
1289
|
}
|
|
1241
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
|
}
|