From 94fd268ae1eb0cd982e55d62a71cf45b9be06e6b Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Tue, 23 May 2023 11:49:47 +0200 Subject: [PATCH 1/3] fix: update vault during fullUpdate --- packages/keyring-controller/src/KeyringController.test.ts | 7 +++++++ packages/keyring-controller/src/KeyringController.ts | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/keyring-controller/src/KeyringController.test.ts b/packages/keyring-controller/src/KeyringController.test.ts index 64f90e38f93..6814168f3b2 100644 --- a/packages/keyring-controller/src/KeyringController.test.ts +++ b/packages/keyring-controller/src/KeyringController.test.ts @@ -170,11 +170,14 @@ describe('KeyringController', () => { await withController( { cacheEncryptionKey }, async ({ controller, initialState }) => { + const initialVault = controller.state.vault; const currentState = await controller.createNewVaultAndRestore( password, uint8ArraySeed, ); expect(initialState).not.toBe(currentState); + expect(controller.state.vault).toBeDefined(); + expect(controller.state.vault).toStrictEqual(initialVault); }, ); }); @@ -267,6 +270,7 @@ describe('KeyringController', () => { expect( isValidHexAddress(currentState.keyrings[0].accounts[0]), ).toBe(true); + expect(controller.state.vault).toBeDefined(); }, ); }); @@ -278,6 +282,7 @@ describe('KeyringController', () => { expect(keyring.accounts).not.toStrictEqual([]); expect(keyring.index).toStrictEqual(0); expect(keyring.type).toStrictEqual('HD Key Tree'); + expect(controller.state.vault).toBeDefined(); }); }); }); @@ -290,6 +295,7 @@ describe('KeyringController', () => { const initialSeedWord = await controller.exportSeedPhrase( password, ); + const initialVault = controller.state.vault; const currentState = await controller.createNewVaultAndKeychain( password, ); @@ -300,6 +306,7 @@ describe('KeyringController', () => { expect(initialState).toBe(currentState); expect(currentSeedWord).toBeDefined(); expect(initialSeedWord).toBe(currentSeedWord); + expect(initialVault).toStrictEqual(controller.state.vault); }, ); }); diff --git a/packages/keyring-controller/src/KeyringController.ts b/packages/keyring-controller/src/KeyringController.ts index e84a63a63a5..8fdb09dc124 100644 --- a/packages/keyring-controller/src/KeyringController.ts +++ b/packages/keyring-controller/src/KeyringController.ts @@ -677,7 +677,8 @@ export class KeyringController extends BaseController< } /** - * Update keyrings in state and calls KeyringController fullUpdate method returning current state. + * Update keyrings and vault in state and calls KeyringController + * fullUpdate method returning current state. * * @returns The current state. */ @@ -697,7 +698,10 @@ export class KeyringController extends BaseController< }, ), ); - this.update({ keyrings: [...keyrings] }); + this.update({ + keyrings: [...keyrings], + vault: this.#keyring.store.getState().vault, + }); return this.#keyring.fullUpdate(); } From ea6c3645bff3be9a1d47d8710a5632fdc72a4e0a Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Tue, 23 May 2023 17:56:15 +0200 Subject: [PATCH 2/3] refactor: use event handler instead of fullUpdate --- packages/keyring-controller/src/KeyringController.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/keyring-controller/src/KeyringController.ts b/packages/keyring-controller/src/KeyringController.ts index 8fdb09dc124..2156e4a62fd 100644 --- a/packages/keyring-controller/src/KeyringController.ts +++ b/packages/keyring-controller/src/KeyringController.ts @@ -194,6 +194,9 @@ export class KeyringController extends BaseController< this.#keyring = new EthKeyringController( Object.assign({ initState: state }, config), ); + this.#keyring.store.subscribe(() => { + this.update({ vault: this.#keyring.store.getState().vault }); + }); this.defaultState = { ...this.#keyring.store.getState(), @@ -698,10 +701,7 @@ export class KeyringController extends BaseController< }, ), ); - this.update({ - keyrings: [...keyrings], - vault: this.#keyring.store.getState().vault, - }); + this.update({ keyrings: [...keyrings] }); return this.#keyring.fullUpdate(); } From 7970f4a89d0f6b274df058602c85e9fe703e453a Mon Sep 17 00:00:00 2001 From: Michele Esposito Date: Wed, 24 May 2023 11:13:32 +0200 Subject: [PATCH 3/3] docs: rollback fullUpdate description --- packages/keyring-controller/src/KeyringController.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/keyring-controller/src/KeyringController.ts b/packages/keyring-controller/src/KeyringController.ts index 2156e4a62fd..c5c0e254710 100644 --- a/packages/keyring-controller/src/KeyringController.ts +++ b/packages/keyring-controller/src/KeyringController.ts @@ -680,8 +680,7 @@ export class KeyringController extends BaseController< } /** - * Update keyrings and vault in state and calls KeyringController - * fullUpdate method returning current state. + * Update keyrings in state and calls KeyringController fullUpdate method returning current state. * * @returns The current state. */