From c5f213df7b0d207667692395738c92c01f7e0837 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Tue, 25 Jan 2022 17:56:28 +0100 Subject: refactor: Apply shared store patches in batches MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Makes sure that the renderer always sees a consistent state. Signed-off-by: Kristóf Marussy --- .../contextBridge/__tests__/createSophieRenderer.spec.ts | 16 +++++++++------- .../preload/src/contextBridge/createSophieRenderer.ts | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'packages/preload/src') diff --git a/packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts b/packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts index 2652c4e..4411789 100644 --- a/packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts +++ b/packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts @@ -51,11 +51,13 @@ const snapshot: SharedStoreSnapshotIn = { shouldUseDarkColors: true, }; -const patch: IJsonPatch = { - op: 'replace', - path: 'foo', - value: 'bar', -}; +const patch: IJsonPatch[] = [ + { + op: 'replace', + path: 'foo', + value: 'bar', + }, +]; const action: Action = { action: 'set-theme-source', @@ -90,7 +92,7 @@ describe('SharedStoreConnector', () => { // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars onSnapshot: jest.fn((_snapshot: SharedStoreSnapshotIn) => {}), // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars - onPatch: jest.fn((_patch: IJsonPatch) => {}), + onPatch: jest.fn((_patch: IJsonPatch[]) => {}), }; beforeEach(() => { @@ -234,7 +236,7 @@ describe('SharedStoreConnector', () => { // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars onSnapshot: jest.fn((_snapshot: SharedStoreSnapshotIn) => {}), // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-unused-vars - onPatch: jest.fn((_patch: IJsonPatch) => {}), + onPatch: jest.fn((_patch: IJsonPatch[]) => {}), }; it('should fetch a second snapshot', async () => { diff --git a/packages/preload/src/contextBridge/createSophieRenderer.ts b/packages/preload/src/contextBridge/createSophieRenderer.ts index 41accfd..6003c8b 100644 --- a/packages/preload/src/contextBridge/createSophieRenderer.ts +++ b/packages/preload/src/contextBridge/createSophieRenderer.ts @@ -42,7 +42,7 @@ class SharedStoreConnector { (_event, patch) => { try { // `mobx-state-tree` will validate the patch, so we can safely cast here. - this.listener?.onPatch(patch as IJsonPatch); + this.listener?.onPatch(patch as IJsonPatch[]); } catch (error) { log.error('Shared store listener onPatch failed', error); this.listener = undefined; -- cgit v1.2.3-54-g00ecf