diff options
Diffstat (limited to 'packages/preload/src/contextBridge')
-rw-r--r-- | packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts | 12 | ||||
-rw-r--r-- | packages/preload/src/contextBridge/createSophieRenderer.ts | 18 |
2 files changed, 16 insertions, 14 deletions
diff --git a/packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts b/packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts index b0af280..88b0077 100644 --- a/packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts +++ b/packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts | |||
@@ -45,7 +45,7 @@ const { default: createSophieRenderer } = await import( | |||
45 | ); | 45 | ); |
46 | 46 | ||
47 | const event: Electron.IpcRendererEvent = | 47 | const event: Electron.IpcRendererEvent = |
48 | null as unknown as Electron.IpcRendererEvent; | 48 | undefined as unknown as Electron.IpcRendererEvent; |
49 | 49 | ||
50 | const snapshot: SharedStoreSnapshotIn = { | 50 | const snapshot: SharedStoreSnapshotIn = { |
51 | shouldUseDarkColors: true, | 51 | shouldUseDarkColors: true, |
@@ -183,7 +183,7 @@ describe('SharedStoreConnector', () => { | |||
183 | 183 | ||
184 | it('should catch listener errors', () => { | 184 | it('should catch listener errors', () => { |
185 | mocked(listener.onPatch).mockImplementation(() => { | 185 | mocked(listener.onPatch).mockImplementation(() => { |
186 | throw new Error(); | 186 | throw new Error('listener error'); |
187 | }); | 187 | }); |
188 | expect(() => onSharedStorePatch(event, patch)).not.toThrow(); | 188 | expect(() => onSharedStorePatch(event, patch)).not.toThrow(); |
189 | }); | 189 | }); |
@@ -193,7 +193,7 @@ describe('SharedStoreConnector', () => { | |||
193 | describe('after the listener threw in onPatch', () => { | 193 | describe('after the listener threw in onPatch', () => { |
194 | beforeEach(() => { | 194 | beforeEach(() => { |
195 | mocked(listener.onPatch).mockImplementation(() => { | 195 | mocked(listener.onPatch).mockImplementation(() => { |
196 | throw new Error(); | 196 | throw new Error('listener error'); |
197 | }); | 197 | }); |
198 | onSharedStorePatch(event, patch); | 198 | onSharedStorePatch(event, patch); |
199 | listener.onPatch.mockRestore(); | 199 | listener.onPatch.mockRestore(); |
@@ -205,7 +205,9 @@ describe('SharedStoreConnector', () => { | |||
205 | 205 | ||
206 | describe('when a listener failed to register due to IPC error', () => { | 206 | describe('when a listener failed to register due to IPC error', () => { |
207 | beforeEach(async () => { | 207 | beforeEach(async () => { |
208 | mocked(ipcRenderer.invoke).mockRejectedValue(new Error()); | 208 | mocked(ipcRenderer.invoke).mockRejectedValue( |
209 | new Error('ipcRenderer error'), | ||
210 | ); | ||
209 | try { | 211 | try { |
210 | await sut.onSharedStoreChange(listener); | 212 | await sut.onSharedStoreChange(listener); |
211 | } catch { | 213 | } catch { |
@@ -237,7 +239,7 @@ describe('SharedStoreConnector', () => { | |||
237 | beforeEach(async () => { | 239 | beforeEach(async () => { |
238 | mocked(ipcRenderer.invoke).mockResolvedValueOnce(snapshot); | 240 | mocked(ipcRenderer.invoke).mockResolvedValueOnce(snapshot); |
239 | mocked(listener.onSnapshot).mockImplementation(() => { | 241 | mocked(listener.onSnapshot).mockImplementation(() => { |
240 | throw new Error(); | 242 | throw new Error('listener error'); |
241 | }); | 243 | }); |
242 | try { | 244 | try { |
243 | await sut.onSharedStoreChange(listener); | 245 | await sut.onSharedStoreChange(listener); |
diff --git a/packages/preload/src/contextBridge/createSophieRenderer.ts b/packages/preload/src/contextBridge/createSophieRenderer.ts index b97503d..3174fed 100644 --- a/packages/preload/src/contextBridge/createSophieRenderer.ts +++ b/packages/preload/src/contextBridge/createSophieRenderer.ts | |||
@@ -34,7 +34,7 @@ import type { IJsonPatch } from 'mobx-state-tree'; | |||
34 | class SharedStoreConnector { | 34 | class SharedStoreConnector { |
35 | private onSharedStoreChangeCalled = false; | 35 | private onSharedStoreChangeCalled = false; |
36 | 36 | ||
37 | private listener: SharedStoreListener | null = null; | 37 | private listener: SharedStoreListener | undefined; |
38 | 38 | ||
39 | constructor(private readonly allowReplaceListener: boolean) { | 39 | constructor(private readonly allowReplaceListener: boolean) { |
40 | ipcRenderer.on( | 40 | ipcRenderer.on( |
@@ -43,9 +43,9 @@ class SharedStoreConnector { | |||
43 | try { | 43 | try { |
44 | // `mobx-state-tree` will validate the patch, so we can safely cast here. | 44 | // `mobx-state-tree` will validate the patch, so we can safely cast here. |
45 | this.listener?.onPatch(patch as IJsonPatch); | 45 | this.listener?.onPatch(patch as IJsonPatch); |
46 | } catch (err) { | 46 | } catch (error) { |
47 | log.error('Shared store listener onPatch failed', err); | 47 | log.error('Shared store listener onPatch failed', error); |
48 | this.listener = null; | 48 | this.listener = undefined; |
49 | } | 49 | } |
50 | }, | 50 | }, |
51 | ); | 51 | ); |
@@ -57,14 +57,14 @@ class SharedStoreConnector { | |||
57 | } | 57 | } |
58 | this.onSharedStoreChangeCalled = true; | 58 | this.onSharedStoreChangeCalled = true; |
59 | let success = false; | 59 | let success = false; |
60 | let snapshot: unknown | null = null; | 60 | let snapshot: unknown; |
61 | try { | 61 | try { |
62 | snapshot = await ipcRenderer.invoke( | 62 | snapshot = await ipcRenderer.invoke( |
63 | RendererToMainIpcMessage.GetSharedStoreSnapshot, | 63 | RendererToMainIpcMessage.GetSharedStoreSnapshot, |
64 | ); | 64 | ); |
65 | success = true; | 65 | success = true; |
66 | } catch (err) { | 66 | } catch (error) { |
67 | log.error('Failed to get initial shared store snapshot', err); | 67 | log.error('Failed to get initial shared store snapshot', error); |
68 | } | 68 | } |
69 | if (success) { | 69 | if (success) { |
70 | if (sharedStore.is(snapshot)) { | 70 | if (sharedStore.is(snapshot)) { |
@@ -84,10 +84,10 @@ function dispatchAction(actionToDispatch: Action): void { | |||
84 | const parsedAction = action.parse(actionToDispatch); | 84 | const parsedAction = action.parse(actionToDispatch); |
85 | try { | 85 | try { |
86 | ipcRenderer.send(RendererToMainIpcMessage.DispatchAction, parsedAction); | 86 | ipcRenderer.send(RendererToMainIpcMessage.DispatchAction, parsedAction); |
87 | } catch (err) { | 87 | } catch (error) { |
88 | // Do not leak IPC failure details into the main world. | 88 | // Do not leak IPC failure details into the main world. |
89 | const message = 'Failed to dispatch action'; | 89 | const message = 'Failed to dispatch action'; |
90 | log.error(message, actionToDispatch, err); | 90 | log.error(message, actionToDispatch, error); |
91 | throw new Error(message); | 91 | throw new Error(message); |
92 | } | 92 | } |
93 | } | 93 | } |