aboutsummaryrefslogtreecommitdiffstats
path: root/packages/preload/src/contextBridge
diff options
context:
space:
mode:
Diffstat (limited to 'packages/preload/src/contextBridge')
-rw-r--r--packages/preload/src/contextBridge/__tests__/createSophieRenderer.spec.ts12
-rw-r--r--packages/preload/src/contextBridge/createSophieRenderer.ts18
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
47const event: Electron.IpcRendererEvent = 47const event: Electron.IpcRendererEvent =
48 null as unknown as Electron.IpcRendererEvent; 48 undefined as unknown as Electron.IpcRendererEvent;
49 49
50const snapshot: SharedStoreSnapshotIn = { 50const 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';
34class SharedStoreConnector { 34class 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}