@metamask-previews/accounts-controller 31.0.0-preview-1d5c2cf9 → 31.0.0-preview-d05158e7
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/CHANGELOG.md +1 -1
- package/dist/AccountsController.cjs +136 -128
- package/dist/AccountsController.cjs.map +1 -1
- package/dist/AccountsController.d.cts.map +1 -1
- package/dist/AccountsController.d.mts.map +1 -1
- package/dist/AccountsController.mjs +138 -131
- package/dist/AccountsController.mjs.map +1 -1
- package/dist/tests/mocks.cjs +2 -11
- package/dist/tests/mocks.cjs.map +1 -1
- package/dist/tests/mocks.d.cts +2 -2
- package/dist/tests/mocks.d.cts.map +1 -1
- package/dist/tests/mocks.d.mts +2 -2
- package/dist/tests/mocks.d.mts.map +1 -1
- package/dist/tests/mocks.mjs +3 -12
- package/dist/tests/mocks.mjs.map +1 -1
- package/dist/utils.cjs +5 -80
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +4 -56
- package/dist/utils.d.cts.map +1 -1
- package/dist/utils.d.mts +4 -56
- package/dist/utils.d.mts.map +1 -1
- package/dist/utils.mjs +3 -74
- package/dist/utils.mjs.map +1 -1
- package/package.json +2 -5
package/CHANGELOG.md
CHANGED
|
@@ -9,7 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
|
-
-
|
|
12
|
+
- Add `groupIndex` to EVM HD account options ([#6122](https://github.com/MetaMask/core/pull/6122))
|
|
13
13
|
|
|
14
14
|
### Changed
|
|
15
15
|
|
|
@@ -4,7 +4,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
4
4
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
5
5
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
6
6
|
};
|
|
7
|
-
var _AccountsController_instances, _AccountsController_assertAccountCanBeRenamed,
|
|
7
|
+
var _AccountsController_instances, _AccountsController_assertAccountCanBeRenamed, _AccountsController_generateInternalAccountForNonSnapAccount, _AccountsController_getSnapKeyring, _AccountsController_listSnapAccounts, _AccountsController_listNormalAccounts, _AccountsController_handleOnSnapKeyringAccountEvent, _AccountsController_handleOnKeyringStateChange, _AccountsController_update, _AccountsController_handleOnSnapStateChange, _AccountsController_getAccountsByKeyringType, _AccountsController_getLastSelectedAccount, _AccountsController_getLastSelectedIndex, _AccountsController_getInternalAccountFromAddressAndType, _AccountsController_handleOnMultichainNetworkDidChange, _AccountsController_populateExistingMetadata, _AccountsController_subscribeToMessageEvents, _AccountsController_registerMessageHandlers;
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.AccountsController = exports.EMPTY_ACCOUNT = void 0;
|
|
10
10
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -13,7 +13,6 @@ const keyring_api_1 = require("@metamask/keyring-api");
|
|
|
13
13
|
const keyring_controller_1 = require("@metamask/keyring-controller");
|
|
14
14
|
const keyring_utils_1 = require("@metamask/keyring-utils");
|
|
15
15
|
const utils_1 = require("@metamask/utils");
|
|
16
|
-
const lodash_1 = require("lodash");
|
|
17
16
|
const utils_2 = require("./utils.cjs");
|
|
18
17
|
const controllerName = 'AccountsController';
|
|
19
18
|
const accountsControllerMetadata = {
|
|
@@ -270,44 +269,38 @@ class AccountsController extends base_controller_1.BaseController {
|
|
|
270
269
|
* @returns A Promise that resolves when the accounts have been updated.
|
|
271
270
|
*/
|
|
272
271
|
async updateAccounts() {
|
|
273
|
-
const
|
|
274
|
-
const
|
|
275
|
-
|
|
276
|
-
const
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
continue;
|
|
287
|
-
}
|
|
288
|
-
const keyringAccountIndex = keyringAccountIndexes.get(keyringTypeName) ?? 0;
|
|
289
|
-
if (keyringAccountIndex) {
|
|
290
|
-
keyringAccountIndexes.set(keyringTypeName, keyringAccountIndex + 1);
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
keyringAccountIndexes.set(keyringTypeName, 1);
|
|
294
|
-
}
|
|
295
|
-
const existingAccount = existingInternalAccounts[internalAccount.id];
|
|
296
|
-
internalAccounts[internalAccount.id] = {
|
|
297
|
-
...internalAccount,
|
|
298
|
-
metadata: {
|
|
299
|
-
...internalAccount.metadata,
|
|
300
|
-
// Re-use existing metadata if any.
|
|
301
|
-
name: existingAccount?.metadata.name ??
|
|
302
|
-
`${keyringTypeName} ${keyringAccountIndex + 1}`,
|
|
303
|
-
importTime: existingAccount?.metadata.importTime ?? Date.now(),
|
|
304
|
-
lastSelected: existingAccount?.metadata.lastSelected ?? 0,
|
|
305
|
-
},
|
|
306
|
-
};
|
|
272
|
+
const snapAccounts = await __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_listSnapAccounts).call(this);
|
|
273
|
+
const normalAccounts = await __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_listNormalAccounts).call(this);
|
|
274
|
+
// keyring type map.
|
|
275
|
+
const keyringTypes = new Map();
|
|
276
|
+
const previousAccounts = this.state.internalAccounts.accounts;
|
|
277
|
+
const accounts = [
|
|
278
|
+
...normalAccounts,
|
|
279
|
+
...snapAccounts,
|
|
280
|
+
].reduce((internalAccountMap, internalAccount) => {
|
|
281
|
+
const keyringTypeName = (0, utils_2.keyringTypeToName)(internalAccount.metadata.keyring.type);
|
|
282
|
+
const keyringAccountIndex = keyringTypes.get(keyringTypeName) ?? 0;
|
|
283
|
+
if (keyringAccountIndex) {
|
|
284
|
+
keyringTypes.set(keyringTypeName, keyringAccountIndex + 1);
|
|
307
285
|
}
|
|
308
|
-
|
|
286
|
+
else {
|
|
287
|
+
keyringTypes.set(keyringTypeName, 1);
|
|
288
|
+
}
|
|
289
|
+
const existingAccount = previousAccounts[internalAccount.id];
|
|
290
|
+
internalAccountMap[internalAccount.id] = {
|
|
291
|
+
...internalAccount,
|
|
292
|
+
metadata: {
|
|
293
|
+
...internalAccount.metadata,
|
|
294
|
+
name: __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_populateExistingMetadata).call(this, existingAccount?.id, 'name') ??
|
|
295
|
+
`${keyringTypeName} ${keyringAccountIndex + 1}`,
|
|
296
|
+
importTime: __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_populateExistingMetadata).call(this, existingAccount?.id, 'importTime') ?? Date.now(),
|
|
297
|
+
lastSelected: __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_populateExistingMetadata).call(this, existingAccount?.id, 'lastSelected') ?? 0,
|
|
298
|
+
},
|
|
299
|
+
};
|
|
300
|
+
return internalAccountMap;
|
|
301
|
+
}, {});
|
|
309
302
|
__classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_update).call(this, (state) => {
|
|
310
|
-
state.internalAccounts.accounts =
|
|
303
|
+
state.internalAccounts.accounts = accounts;
|
|
311
304
|
});
|
|
312
305
|
}
|
|
313
306
|
/**
|
|
@@ -356,63 +349,11 @@ _AccountsController_instances = new WeakSet(), _AccountsController_assertAccount
|
|
|
356
349
|
internalAccount.id !== account.id)) {
|
|
357
350
|
throw new Error('Account name already exists');
|
|
358
351
|
}
|
|
359
|
-
},
|
|
360
|
-
const id = (0, utils_2.getUUIDFromAddressOfNormalAccount)(address);
|
|
361
|
-
// We might have an account for this ID already, so we'll just re-use
|
|
362
|
-
// the same metadata
|
|
363
|
-
const account = this.getAccount(id);
|
|
364
|
-
const metadata = {
|
|
365
|
-
name: account?.metadata.name ?? '',
|
|
366
|
-
...(account?.metadata.nameLastUpdatedAt
|
|
367
|
-
? {
|
|
368
|
-
nameLastUpdatedAt: account?.metadata.nameLastUpdatedAt,
|
|
369
|
-
}
|
|
370
|
-
: {}),
|
|
371
|
-
importTime: account?.metadata.importTime ?? Date.now(),
|
|
372
|
-
lastSelected: account?.metadata.lastSelected ?? 0,
|
|
373
|
-
keyring: {
|
|
374
|
-
type: keyring.type,
|
|
375
|
-
},
|
|
376
|
-
};
|
|
377
|
-
let options = {};
|
|
378
|
-
if ((0, utils_2.isHdKeyringType)(keyring.type)) {
|
|
379
|
-
// We need to find the account index from its HD keyring.
|
|
380
|
-
const groupIndex = (0, utils_2.getEvmGroupIndexFromAddressIndex)(keyring, address);
|
|
381
|
-
// If for some reason, we cannot find this address, then the caller made a mistake
|
|
382
|
-
// and it did not use the proper keyring object. For now, we do not fail and just
|
|
383
|
-
// consider this account as "simple account".
|
|
384
|
-
if (groupIndex !== undefined) {
|
|
385
|
-
// NOTE: We are not using the `hdPath` from the associated keyring here and
|
|
386
|
-
// getting the keyring instance here feels a bit overkill.
|
|
387
|
-
// This will be naturally fixed once every keyring start using `KeyringAccount` and implement the keyring API.
|
|
388
|
-
const derivationPath = (0, utils_2.getEvmDerivationPathForIndex)(groupIndex);
|
|
389
|
-
// Those are "legacy options" and they were used before `KeyringAccount` added
|
|
390
|
-
// support for type options. We keep those temporarily until we update everything
|
|
391
|
-
// to use the new typed options.
|
|
392
|
-
const legacyOptions = {
|
|
393
|
-
entropySource: keyring.metadata.id,
|
|
394
|
-
derivationPath,
|
|
395
|
-
groupIndex,
|
|
396
|
-
};
|
|
397
|
-
// New typed entropy options. This is required for multichain accounts.
|
|
398
|
-
const entropyOptions = {
|
|
399
|
-
entropy: {
|
|
400
|
-
type: keyring_api_1.KeyringAccountEntropyTypeOption.Mnemonic,
|
|
401
|
-
id: keyring.metadata.id,
|
|
402
|
-
derivationPath,
|
|
403
|
-
groupIndex,
|
|
404
|
-
},
|
|
405
|
-
};
|
|
406
|
-
options = {
|
|
407
|
-
...legacyOptions,
|
|
408
|
-
...entropyOptions,
|
|
409
|
-
};
|
|
410
|
-
}
|
|
411
|
-
}
|
|
352
|
+
}, _AccountsController_generateInternalAccountForNonSnapAccount = function _AccountsController_generateInternalAccountForNonSnapAccount(address, type) {
|
|
412
353
|
return {
|
|
413
|
-
id,
|
|
354
|
+
id: (0, utils_2.getUUIDFromAddressOfNormalAccount)(address),
|
|
414
355
|
address,
|
|
415
|
-
options,
|
|
356
|
+
options: {},
|
|
416
357
|
methods: [
|
|
417
358
|
keyring_api_1.EthMethod.PersonalSign,
|
|
418
359
|
keyring_api_1.EthMethod.Sign,
|
|
@@ -423,13 +364,90 @@ _AccountsController_instances = new WeakSet(), _AccountsController_assertAccount
|
|
|
423
364
|
],
|
|
424
365
|
scopes: [keyring_api_1.EthScope.Eoa],
|
|
425
366
|
type: keyring_api_1.EthAccountType.Eoa,
|
|
426
|
-
metadata
|
|
367
|
+
metadata: {
|
|
368
|
+
name: '',
|
|
369
|
+
importTime: Date.now(),
|
|
370
|
+
keyring: {
|
|
371
|
+
type,
|
|
372
|
+
},
|
|
373
|
+
},
|
|
427
374
|
};
|
|
428
375
|
}, _AccountsController_getSnapKeyring = function _AccountsController_getSnapKeyring() {
|
|
429
376
|
const [snapKeyring] = this.messagingSystem.call('KeyringController:getKeyringsByType', eth_snap_keyring_1.SnapKeyring.type);
|
|
430
377
|
// Snap keyring is not available until the first account is created in the keyring
|
|
431
378
|
// controller, so this might be undefined.
|
|
432
379
|
return snapKeyring;
|
|
380
|
+
}, _AccountsController_listSnapAccounts =
|
|
381
|
+
/**
|
|
382
|
+
* Returns a list of internal accounts created using the SnapKeyring.
|
|
383
|
+
*
|
|
384
|
+
* @returns A promise that resolves to an array of InternalAccount objects.
|
|
385
|
+
*/
|
|
386
|
+
async function _AccountsController_listSnapAccounts() {
|
|
387
|
+
const keyring = __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_getSnapKeyring).call(this);
|
|
388
|
+
if (!keyring) {
|
|
389
|
+
return [];
|
|
390
|
+
}
|
|
391
|
+
return keyring.listAccounts();
|
|
392
|
+
}, _AccountsController_listNormalAccounts =
|
|
393
|
+
/**
|
|
394
|
+
* Returns a list of normal accounts.
|
|
395
|
+
* Note: listNormalAccounts is a temporary method until the keyrings all implement the InternalAccount interface.
|
|
396
|
+
* Once all keyrings implement the InternalAccount interface, this method can be removed and getAccounts can be used instead.
|
|
397
|
+
*
|
|
398
|
+
* @returns A Promise that resolves to an array of InternalAccount objects.
|
|
399
|
+
*/
|
|
400
|
+
async function _AccountsController_listNormalAccounts() {
|
|
401
|
+
const internalAccounts = [];
|
|
402
|
+
const { keyrings } = this.messagingSystem.call('KeyringController:getState');
|
|
403
|
+
for (const keyring of keyrings) {
|
|
404
|
+
const keyringType = keyring.type;
|
|
405
|
+
if (!(0, utils_2.isNormalKeyringType)(keyringType)) {
|
|
406
|
+
// We only consider "normal accounts" here, so keep looping
|
|
407
|
+
continue;
|
|
408
|
+
}
|
|
409
|
+
for (const [accountIndex, address] of keyring.accounts.entries()) {
|
|
410
|
+
const id = (0, utils_2.getUUIDFromAddressOfNormalAccount)(address);
|
|
411
|
+
let options = {};
|
|
412
|
+
if ((0, utils_2.isHdKeyringType)(keyring.type)) {
|
|
413
|
+
options = {
|
|
414
|
+
entropySource: keyring.metadata.id,
|
|
415
|
+
// NOTE: We are not using the `hdPath` from the associated keyring here and
|
|
416
|
+
// getting the keyring instance here feels a bit overkill.
|
|
417
|
+
// This will be naturally fixed once every keyring start using `KeyringAccount` and implement the keyring API.
|
|
418
|
+
derivationPath: (0, utils_2.getDerivationPathForIndex)(accountIndex),
|
|
419
|
+
// Required now for multichain accounts.
|
|
420
|
+
groupIndex: accountIndex,
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
const nameLastUpdatedAt = __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_populateExistingMetadata).call(this, id, 'nameLastUpdatedAt');
|
|
424
|
+
internalAccounts.push({
|
|
425
|
+
id,
|
|
426
|
+
address,
|
|
427
|
+
options,
|
|
428
|
+
methods: [
|
|
429
|
+
keyring_api_1.EthMethod.PersonalSign,
|
|
430
|
+
keyring_api_1.EthMethod.Sign,
|
|
431
|
+
keyring_api_1.EthMethod.SignTransaction,
|
|
432
|
+
keyring_api_1.EthMethod.SignTypedDataV1,
|
|
433
|
+
keyring_api_1.EthMethod.SignTypedDataV3,
|
|
434
|
+
keyring_api_1.EthMethod.SignTypedDataV4,
|
|
435
|
+
],
|
|
436
|
+
scopes: [keyring_api_1.EthScope.Eoa],
|
|
437
|
+
type: keyring_api_1.EthAccountType.Eoa,
|
|
438
|
+
metadata: {
|
|
439
|
+
name: __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_populateExistingMetadata).call(this, id, 'name') ?? '',
|
|
440
|
+
...(nameLastUpdatedAt && { nameLastUpdatedAt }),
|
|
441
|
+
importTime: __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_populateExistingMetadata).call(this, id, 'importTime') ?? Date.now(),
|
|
442
|
+
lastSelected: __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_populateExistingMetadata).call(this, id, 'lastSelected') ?? 0,
|
|
443
|
+
keyring: {
|
|
444
|
+
type: keyringType,
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
return internalAccounts;
|
|
433
451
|
}, _AccountsController_handleOnSnapKeyringAccountEvent = function _AccountsController_handleOnSnapKeyringAccountEvent(event, ...payload) {
|
|
434
452
|
this.messagingSystem.publish(event, ...payload);
|
|
435
453
|
}, _AccountsController_handleOnKeyringStateChange = function _AccountsController_handleOnKeyringStateChange({ isUnlocked, keyrings, }) {
|
|
@@ -456,7 +474,7 @@ _AccountsController_instances = new WeakSet(), _AccountsController_assertAccount
|
|
|
456
474
|
// Gets the patch object based on the keyring type (since Snap accounts and other accounts
|
|
457
475
|
// are handled differently).
|
|
458
476
|
const patchOf = (type) => {
|
|
459
|
-
if (
|
|
477
|
+
if (type === keyring_controller_1.KeyringTypes.snap) {
|
|
460
478
|
return patches.snap;
|
|
461
479
|
}
|
|
462
480
|
return patches.normal;
|
|
@@ -483,7 +501,11 @@ _AccountsController_instances = new WeakSet(), _AccountsController_assertAccount
|
|
|
483
501
|
// Otherwise, that's a new account.
|
|
484
502
|
patch.added.push({
|
|
485
503
|
address,
|
|
486
|
-
keyring,
|
|
504
|
+
type: keyring.type,
|
|
505
|
+
// Automatically injects `entropySource` for HD accounts only.
|
|
506
|
+
options: keyring.type === keyring_controller_1.KeyringTypes.hd
|
|
507
|
+
? { entropySource: keyring.metadata.id }
|
|
508
|
+
: {},
|
|
487
509
|
});
|
|
488
510
|
}
|
|
489
511
|
// Keep track of those address to check for removed accounts later.
|
|
@@ -513,7 +535,7 @@ _AccountsController_instances = new WeakSet(), _AccountsController_assertAccount
|
|
|
513
535
|
diff.removed.push(account.id);
|
|
514
536
|
}
|
|
515
537
|
for (const added of patch.added) {
|
|
516
|
-
const account = __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_getInternalAccountFromAddressAndType).call(this, added.address, added.
|
|
538
|
+
const account = __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_getInternalAccountFromAddressAndType).call(this, added.address, added.type);
|
|
517
539
|
if (account) {
|
|
518
540
|
// Re-compute the list of accounts everytime, so we can make sure new names
|
|
519
541
|
// are also considered.
|
|
@@ -530,6 +552,10 @@ _AccountsController_instances = new WeakSet(), _AccountsController_assertAccount
|
|
|
530
552
|
importTime: Date.now(),
|
|
531
553
|
lastSelected,
|
|
532
554
|
},
|
|
555
|
+
options: {
|
|
556
|
+
...account.options,
|
|
557
|
+
...added.options,
|
|
558
|
+
},
|
|
533
559
|
};
|
|
534
560
|
diff.added.push(internalAccounts.accounts[account.id]);
|
|
535
561
|
}
|
|
@@ -614,9 +640,10 @@ _AccountsController_instances = new WeakSet(), _AccountsController_assertAccount
|
|
|
614
640
|
return (accounts ?? this.listMultichainAccounts()).filter((internalAccount) => {
|
|
615
641
|
// We do consider `hd` and `simple` keyrings to be of same type. So we check those 2 types
|
|
616
642
|
// to group those accounts together!
|
|
617
|
-
if (
|
|
618
|
-
|
|
619
|
-
|
|
643
|
+
if (keyringType === keyring_controller_1.KeyringTypes.hd ||
|
|
644
|
+
keyringType === keyring_controller_1.KeyringTypes.simple) {
|
|
645
|
+
return (internalAccount.metadata.keyring.type === keyring_controller_1.KeyringTypes.hd ||
|
|
646
|
+
internalAccount.metadata.keyring.type === keyring_controller_1.KeyringTypes.simple);
|
|
620
647
|
}
|
|
621
648
|
return internalAccount.metadata.keyring.type === keyringType;
|
|
622
649
|
});
|
|
@@ -631,40 +658,18 @@ _AccountsController_instances = new WeakSet(), _AccountsController_assertAccount
|
|
|
631
658
|
// NOTE: For now we use the current date, since we know this value
|
|
632
659
|
// will always be higher than any already selected account index.
|
|
633
660
|
return Date.now();
|
|
634
|
-
}, _AccountsController_getInternalAccountFromAddressAndType = function _AccountsController_getInternalAccountFromAddressAndType(address,
|
|
635
|
-
if (
|
|
636
|
-
const
|
|
661
|
+
}, _AccountsController_getInternalAccountFromAddressAndType = function _AccountsController_getInternalAccountFromAddressAndType(address, type) {
|
|
662
|
+
if (type === keyring_controller_1.KeyringTypes.snap) {
|
|
663
|
+
const keyring = __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_getSnapKeyring).call(this);
|
|
637
664
|
// We need the Snap keyring to retrieve the account from its address.
|
|
638
|
-
if (!
|
|
665
|
+
if (!keyring) {
|
|
639
666
|
return undefined;
|
|
640
667
|
}
|
|
641
668
|
// This might be undefined if the Snap deleted the account before
|
|
642
669
|
// reaching that point.
|
|
643
|
-
|
|
644
|
-
if (account) {
|
|
645
|
-
// We force the copy here, to avoid mutating the reference returned by the Snap keyring.
|
|
646
|
-
account = (0, lodash_1.cloneDeep)(account);
|
|
647
|
-
// MIGRATION: To avoid any existing Snap account migration, we are
|
|
648
|
-
// just "adding" the new typed options that we need for multichain
|
|
649
|
-
// accounts. Ultimately, we would need a real Snap account migrations
|
|
650
|
-
// (being handled by each Snaps).
|
|
651
|
-
if ((0, utils_2.isHdSnapKeyringAccount)(account)) {
|
|
652
|
-
const options = {
|
|
653
|
-
...account.options,
|
|
654
|
-
entropy: {
|
|
655
|
-
type: keyring_api_1.KeyringAccountEntropyTypeOption.Mnemonic,
|
|
656
|
-
id: account.options.entropySource,
|
|
657
|
-
groupIndex: account.options.index,
|
|
658
|
-
derivationPath: account.options.derivationPath,
|
|
659
|
-
},
|
|
660
|
-
};
|
|
661
|
-
// Inject the new typed options to the internal account copy.
|
|
662
|
-
account.options = options;
|
|
663
|
-
}
|
|
664
|
-
}
|
|
665
|
-
return account;
|
|
670
|
+
return keyring.getAccountByAddress(address);
|
|
666
671
|
}
|
|
667
|
-
return __classPrivateFieldGet(this, _AccountsController_instances, "m",
|
|
672
|
+
return __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_generateInternalAccountForNonSnapAccount).call(this, address, type);
|
|
668
673
|
}, _AccountsController_handleOnMultichainNetworkDidChange = function _AccountsController_handleOnMultichainNetworkDidChange(id) {
|
|
669
674
|
let accountId;
|
|
670
675
|
// We only support non-EVM Caip chain IDs at the moment. Ex Solana and Bitcoin
|
|
@@ -686,6 +691,9 @@ _AccountsController_instances = new WeakSet(), _AccountsController_assertAccount
|
|
|
686
691
|
currentState.internalAccounts.selectedAccount = accountId;
|
|
687
692
|
});
|
|
688
693
|
// DO NOT publish AccountsController:setSelectedAccount to prevent circular listener loops
|
|
694
|
+
}, _AccountsController_populateExistingMetadata = function _AccountsController_populateExistingMetadata(accountId, metadataKey, account) {
|
|
695
|
+
const internalAccount = account ?? this.getAccount(accountId);
|
|
696
|
+
return internalAccount ? internalAccount.metadata[metadataKey] : undefined;
|
|
689
697
|
}, _AccountsController_subscribeToMessageEvents = function _AccountsController_subscribeToMessageEvents() {
|
|
690
698
|
this.messagingSystem.subscribe('SnapController:stateChange', (snapStateState) => __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_handleOnSnapStateChange).call(this, snapStateState));
|
|
691
699
|
this.messagingSystem.subscribe('KeyringController:stateChange', (keyringState) => __classPrivateFieldGet(this, _AccountsController_instances, "m", _AccountsController_handleOnKeyringStateChange).call(this, keyringState));
|