diff options
author | Kristóf Marussy <kristof@marussy.com> | 2021-12-26 21:12:08 +0100 |
---|---|---|
committer | Kristóf Marussy <kristof@marussy.com> | 2021-12-26 21:15:53 +0100 |
commit | a2651dff66faf98dc1a6f924227af454eaa2311d (patch) | |
tree | 7f15c402d449b934d5a2b7858aa16523e9fc121e /packages/main/src/index.ts | |
parent | refactor: Rename RootStore to RendererStore (diff) | |
download | sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.tar.gz sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.tar.zst sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.zip |
refactor: Less boilerplate around SophieRenderer
Diffstat (limited to 'packages/main/src/index.ts')
-rw-r--r-- | packages/main/src/index.ts | 48 |
1 files changed, 32 insertions, 16 deletions
diff --git a/packages/main/src/index.ts b/packages/main/src/index.ts index 67f5546..7aa3ee9 100644 --- a/packages/main/src/index.ts +++ b/packages/main/src/index.ts | |||
@@ -35,9 +35,8 @@ import { | |||
35 | WebSource, | 35 | WebSource, |
36 | } from '@sophie/service-shared'; | 36 | } from '@sophie/service-shared'; |
37 | import { | 37 | import { |
38 | browserViewBounds, | 38 | action, |
39 | MainToRendererIpcMessage, | 39 | MainToRendererIpcMessage, |
40 | themeSource, | ||
41 | RendererToMainIpcMessage, | 40 | RendererToMainIpcMessage, |
42 | } from '@sophie/shared'; | 41 | } from '@sophie/shared'; |
43 | import { URL } from 'url'; | 42 | import { URL } from 'url'; |
@@ -194,19 +193,39 @@ function createWindow(): Promise<unknown> { | |||
194 | }); | 193 | }); |
195 | mainWindow.setBrowserView(browserView); | 194 | mainWindow.setBrowserView(browserView); |
196 | 195 | ||
197 | webContents.on('ipc-message', (_event, channel, ...args) => { | 196 | ipcMain.handle(RendererToMainIpcMessage.GetSharedStoreSnapshot, (event) => { |
197 | if (event.sender.id !== webContents.id) { | ||
198 | console.warn( | ||
199 | 'Unexpected', | ||
200 | RendererToMainIpcMessage.GetSharedStoreSnapshot, | ||
201 | 'from webContents', | ||
202 | event.sender.id, | ||
203 | ); | ||
204 | return null; | ||
205 | } | ||
206 | return getSnapshot(store.shared); | ||
207 | }); | ||
208 | |||
209 | ipcMain.on(RendererToMainIpcMessage.DispatchAction, (event, rawAction) => { | ||
210 | if (event.sender.id !== webContents.id) { | ||
211 | console.warn( | ||
212 | 'Unexpected', | ||
213 | RendererToMainIpcMessage.DispatchAction, | ||
214 | 'from webContents', | ||
215 | event.sender.id, | ||
216 | ); | ||
217 | return; | ||
218 | } | ||
198 | try { | 219 | try { |
199 | switch (channel) { | 220 | const actionToDispatch = action.parse(rawAction); |
200 | case RendererToMainIpcMessage.SharedStoreSnapshotRequest: | 221 | switch (actionToDispatch.action) { |
201 | webContents.send(MainToRendererIpcMessage.SharedStoreSnapshot, getSnapshot(store.shared)); | 222 | case 'set-browser-view-bounds': |
223 | store.setBrowserViewBounds(actionToDispatch.browserViewBounds); | ||
202 | break; | 224 | break; |
203 | case RendererToMainIpcMessage.SetBrowserViewBounds: | 225 | case 'set-theme-source': |
204 | store.setBrowserViewBounds(browserViewBounds.parse(args[0])); | 226 | store.config.setThemeSource(actionToDispatch.themeSource) |
205 | break; | 227 | break; |
206 | case RendererToMainIpcMessage.SetThemeSource: | 228 | case 'reload-all-services': |
207 | store.config.setThemeSource(themeSource.parse(args[0])) | ||
208 | break; | ||
209 | case RendererToMainIpcMessage.ReloadAllServices: | ||
210 | readFile(serviceInjectPath, 'utf8').then((data) => { | 229 | readFile(serviceInjectPath, 'utf8').then((data) => { |
211 | serviceInject.code = data; | 230 | serviceInject.code = data; |
212 | }).catch((err) => { | 231 | }).catch((err) => { |
@@ -215,12 +234,9 @@ function createWindow(): Promise<unknown> { | |||
215 | browserView.webContents.reload(); | 234 | browserView.webContents.reload(); |
216 | }); | 235 | }); |
217 | break; | 236 | break; |
218 | default: | ||
219 | console.error('Unknown IPC message:', channel, args); | ||
220 | break; | ||
221 | } | 237 | } |
222 | } catch (err) { | 238 | } catch (err) { |
223 | console.error('Error while processing IPC message:', channel, args, err); | 239 | console.error('Error while dispatching renderer action', rawAction, err); |
224 | } | 240 | } |
225 | }); | 241 | }); |
226 | 242 | ||