aboutsummaryrefslogtreecommitdiffstats
path: root/packages/main/src
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-26 21:12:08 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-26 21:15:53 +0100
commita2651dff66faf98dc1a6f924227af454eaa2311d (patch)
tree7f15c402d449b934d5a2b7858aa16523e9fc121e /packages/main/src
parentrefactor: Rename RootStore to RendererStore (diff)
downloadsophie-a2651dff66faf98dc1a6f924227af454eaa2311d.tar.gz
sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.tar.zst
sophie-a2651dff66faf98dc1a6f924227af454eaa2311d.zip
refactor: Less boilerplate around SophieRenderer
Diffstat (limited to 'packages/main/src')
-rw-r--r--packages/main/src/index.ts48
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';
37import { 37import {
38 browserViewBounds, 38 action,
39 MainToRendererIpcMessage, 39 MainToRendererIpcMessage,
40 themeSource,
41 RendererToMainIpcMessage, 40 RendererToMainIpcMessage,
42} from '@sophie/shared'; 41} from '@sophie/shared';
43import { URL } from 'url'; 42import { 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