aboutsummaryrefslogtreecommitdiffstats
path: root/packages/preload/src/contextBridge/createSophieRenderer.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/preload/src/contextBridge/createSophieRenderer.ts')
-rw-r--r--packages/preload/src/contextBridge/createSophieRenderer.ts29
1 files changed, 18 insertions, 11 deletions
diff --git a/packages/preload/src/contextBridge/createSophieRenderer.ts b/packages/preload/src/contextBridge/createSophieRenderer.ts
index 2055080..b97503d 100644
--- a/packages/preload/src/contextBridge/createSophieRenderer.ts
+++ b/packages/preload/src/contextBridge/createSophieRenderer.ts
@@ -37,15 +37,18 @@ class SharedStoreConnector {
37 private listener: SharedStoreListener | null = null; 37 private listener: SharedStoreListener | null = null;
38 38
39 constructor(private readonly allowReplaceListener: boolean) { 39 constructor(private readonly allowReplaceListener: boolean) {
40 ipcRenderer.on(MainToRendererIpcMessage.SharedStorePatch, (_event, patch) => { 40 ipcRenderer.on(
41 try { 41 MainToRendererIpcMessage.SharedStorePatch,
42 // `mobx-state-tree` will validate the patch, so we can safely cast here. 42 (_event, patch) => {
43 this.listener?.onPatch(patch as IJsonPatch); 43 try {
44 } catch (err) { 44 // `mobx-state-tree` will validate the patch, so we can safely cast here.
45 log.error('Shared store listener onPatch failed', err); 45 this.listener?.onPatch(patch as IJsonPatch);
46 this.listener = null; 46 } catch (err) {
47 } 47 log.error('Shared store listener onPatch failed', err);
48 }); 48 this.listener = null;
49 }
50 },
51 );
49 } 52 }
50 53
51 async onSharedStoreChange(listener: SharedStoreListener): Promise<void> { 54 async onSharedStoreChange(listener: SharedStoreListener): Promise<void> {
@@ -56,7 +59,9 @@ class SharedStoreConnector {
56 let success = false; 59 let success = false;
57 let snapshot: unknown | null = null; 60 let snapshot: unknown | null = null;
58 try { 61 try {
59 snapshot = await ipcRenderer.invoke(RendererToMainIpcMessage.GetSharedStoreSnapshot); 62 snapshot = await ipcRenderer.invoke(
63 RendererToMainIpcMessage.GetSharedStoreSnapshot,
64 );
60 success = true; 65 success = true;
61 } catch (err) { 66 } catch (err) {
62 log.error('Failed to get initial shared store snapshot', err); 67 log.error('Failed to get initial shared store snapshot', err);
@@ -87,7 +92,9 @@ function dispatchAction(actionToDispatch: Action): void {
87 } 92 }
88} 93}
89 94
90export default function createSophieRenderer(allowReplaceListener: boolean): SophieRenderer { 95export default function createSophieRenderer(
96 allowReplaceListener: boolean,
97): SophieRenderer {
91 const connector = new SharedStoreConnector(allowReplaceListener); 98 const connector = new SharedStoreConnector(allowReplaceListener);
92 return { 99 return {
93 onSharedStoreChange: connector.onSharedStoreChange.bind(connector), 100 onSharedStoreChange: connector.onSharedStoreChange.bind(connector),