aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer/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/renderer/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/renderer/src')
-rw-r--r--packages/renderer/src/devTools.ts4
-rw-r--r--packages/renderer/src/stores/RendererEnv.ts4
-rw-r--r--packages/renderer/src/stores/RendererStore.ts25
3 files changed, 21 insertions, 12 deletions
diff --git a/packages/renderer/src/devTools.ts b/packages/renderer/src/devTools.ts
index 44c87ae..7c44559 100644
--- a/packages/renderer/src/devTools.ts
+++ b/packages/renderer/src/devTools.ts
@@ -64,7 +64,9 @@ export function hotReloadServices(): void {
64 import.meta.hot?.on( 64 import.meta.hot?.on(
65 'sophie:reload-services', 65 'sophie:reload-services',
66 () => { 66 () => {
67 window.sophieRenderer.reloadAllServices(); 67 window.sophieRenderer.dispatchAction({
68 action: 'reload-all-services',
69 });
68 }, 70 },
69 ); 71 );
70} 72}
diff --git a/packages/renderer/src/stores/RendererEnv.ts b/packages/renderer/src/stores/RendererEnv.ts
index f2ec519..d687738 100644
--- a/packages/renderer/src/stores/RendererEnv.ts
+++ b/packages/renderer/src/stores/RendererEnv.ts
@@ -19,10 +19,10 @@
19 */ 19 */
20 20
21import { getEnv as getAnyEnv, IAnyStateTreeNode } from 'mobx-state-tree'; 21import { getEnv as getAnyEnv, IAnyStateTreeNode } from 'mobx-state-tree';
22import type { SophieRenderer } from '@sophie/shared'; 22import type { Action } from '@sophie/shared';
23 23
24export interface RendererEnv { 24export interface RendererEnv {
25 ipc: Omit<SophieRenderer, 'setSharedStoreListener'>; 25 dispatchMainAction(action: Action): void;
26} 26}
27 27
28/** 28/**
diff --git a/packages/renderer/src/stores/RendererStore.ts b/packages/renderer/src/stores/RendererStore.ts
index 001f23a..3de82ac 100644
--- a/packages/renderer/src/stores/RendererStore.ts
+++ b/packages/renderer/src/stores/RendererStore.ts
@@ -31,16 +31,22 @@ import {
31 ThemeSource, 31 ThemeSource,
32} from '@sophie/shared'; 32} from '@sophie/shared';
33 33
34import { getEnv } from './RendererEnv'; 34import { getEnv, RendererEnv } from './RendererEnv';
35 35
36export const rendererStore = types.model('RendererStore', { 36export const rendererStore = types.model('RendererStore', {
37 shared: types.optional(sharedStore, {}), 37 shared: types.optional(sharedStore, {}),
38}).actions((self) => ({ 38}).actions((self) => ({
39 setBrowserViewBounds(bounds: BrowserViewBounds) { 39 setBrowserViewBounds(browserViewBounds: BrowserViewBounds) {
40 getEnv(self).ipc.setBrowserViewBounds(bounds); 40 getEnv(self).dispatchMainAction({
41 action: 'set-browser-view-bounds',
42 browserViewBounds,
43 });
41 }, 44 },
42 setThemeSource(mode: ThemeSource) { 45 setThemeSource(themeSource: ThemeSource) {
43 getEnv(self).ipc.setThemeSource(mode); 46 getEnv(self).dispatchMainAction({
47 action: 'set-theme-source',
48 themeSource,
49 });
44 }, 50 },
45 toggleDarkMode() { 51 toggleDarkMode() {
46 if (self.shared.shouldUseDarkColors) { 52 if (self.shared.shouldUseDarkColors) {
@@ -62,11 +68,12 @@ export interface RendererStore extends Instance<typeof rendererStore> {}
62 * @param ipc The `sophieRenderer` context bridge. 68 * @param ipc The `sophieRenderer` context bridge.
63 */ 69 */
64export function createAndConnectRendererStore(ipc: SophieRenderer): RendererStore { 70export function createAndConnectRendererStore(ipc: SophieRenderer): RendererStore {
65 const store = rendererStore.create({}, { 71 const env: RendererEnv = {
66 ipc, 72 dispatchMainAction: ipc.dispatchAction,
67 }); 73 }
74 const store = rendererStore.create({}, env);
68 75
69 ipc.setSharedStoreListener({ 76 ipc.onSharedStoreChange({
70 onSnapshot(snapshot) { 77 onSnapshot(snapshot) {
71 applySnapshot(store.shared, snapshot); 78 applySnapshot(store.shared, snapshot);
72 }, 79 },