Skip to content

Commit 7399ee3

Browse files
committed
refactor: use event selector
1 parent 18a6358 commit 7399ee3

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

packages/multichain-account-service/src/MultichainAccountService.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ import {
88
type MultichainAccount,
99
} from '@metamask/account-api';
1010
import type { EntropySourceId } from '@metamask/keyring-api';
11-
import type { KeyringObject } from '@metamask/keyring-controller';
11+
import type {
12+
KeyringControllerState,
13+
KeyringObject,
14+
} from '@metamask/keyring-controller';
1215
import { KeyringTypes } from '@metamask/keyring-controller';
1316
import type { InternalAccount } from '@metamask/keyring-internal-api';
1417

@@ -23,6 +26,16 @@ type MultichainAccountServiceOptions = {
2326
messenger: MultichainAccountServiceMessenger;
2427
};
2528

29+
/**
30+
* Select keyrings from keyring controller state.
31+
*
32+
* @param state - The keyring controller state.
33+
* @returns The keyrings.
34+
*/
35+
function selectKeyringControllerKeyrings(state: KeyringControllerState) {
36+
return state.keyrings;
37+
}
38+
2639
/**
2740
* Service to expose multichain accounts capabilities.
2841
*/
@@ -59,15 +72,16 @@ export class MultichainAccountService {
5972
*/
6073
init(): void {
6174
// Gather all entropy sources first.
62-
const { keyrings } = this.#messenger.call('KeyringController:getState');
63-
this.#setMultichainAccountWallets(keyrings);
64-
65-
// TODO: For now, we to every `KeyringController` state change to detect when
66-
// new entropy sources/SRPs are being added. Having a dedicated event when
67-
// new keyrings are added would make this more efficient.
68-
this.#messenger.subscribe('KeyringController:stateChange', (state) => {
69-
this.#setMultichainAccountWallets(state.keyrings);
70-
});
75+
const state = this.#messenger.call('KeyringController:getState');
76+
this.#setMultichainAccountWallets(state.keyrings);
77+
78+
this.#messenger.subscribe(
79+
'KeyringController:stateChange',
80+
(keyrings) => {
81+
this.#setMultichainAccountWallets(keyrings);
82+
},
83+
selectKeyringControllerKeyrings,
84+
);
7185
}
7286

7387
#setMultichainAccountWallets(keyrings: KeyringObject[]) {

0 commit comments

Comments
 (0)