aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer/src/stores/RendererStore.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/renderer/src/stores/RendererStore.ts')
-rw-r--r--packages/renderer/src/stores/RendererStore.ts81
1 files changed, 41 insertions, 40 deletions
diff --git a/packages/renderer/src/stores/RendererStore.ts b/packages/renderer/src/stores/RendererStore.ts
index e684759..0b78ce1 100644
--- a/packages/renderer/src/stores/RendererStore.ts
+++ b/packages/renderer/src/stores/RendererStore.ts
@@ -24,12 +24,7 @@ import {
24 SophieRenderer, 24 SophieRenderer,
25 ThemeSource, 25 ThemeSource,
26} from '@sophie/shared'; 26} from '@sophie/shared';
27import { 27import { applySnapshot, applyPatch, Instance, types } from 'mobx-state-tree';
28 applySnapshot,
29 applyPatch,
30 Instance,
31 types,
32} from 'mobx-state-tree';
33 28
34import { getLogger } from '../utils/log'; 29import { getLogger } from '../utils/log';
35 30
@@ -38,29 +33,31 @@ import { getEnv } from './RendererEnv';
38 33
39const log = getLogger('RendererStore'); 34const log = getLogger('RendererStore');
40 35
41export const rendererStore = types.model('RendererStore', { 36export const rendererStore = types
42 shared: types.optional(sharedStore, {}), 37 .model('RendererStore', {
43}).actions((self) => ({ 38 shared: types.optional(sharedStore, {}),
44 setBrowserViewBounds(browserViewBounds: BrowserViewBounds): void { 39 })
45 getEnv(self).dispatchMainAction({ 40 .actions((self) => ({
46 action: 'set-browser-view-bounds', 41 setBrowserViewBounds(browserViewBounds: BrowserViewBounds): void {
47 browserViewBounds, 42 getEnv(self).dispatchMainAction({
48 }); 43 action: 'set-browser-view-bounds',
49 }, 44 browserViewBounds,
50 setThemeSource(themeSource: ThemeSource): void { 45 });
51 getEnv(self).dispatchMainAction({ 46 },
52 action: 'set-theme-source', 47 setThemeSource(themeSource: ThemeSource): void {
53 themeSource, 48 getEnv(self).dispatchMainAction({
54 }); 49 action: 'set-theme-source',
55 }, 50 themeSource,
56 toggleDarkMode(): void { 51 });
57 if (self.shared.shouldUseDarkColors) { 52 },
58 this.setThemeSource('light'); 53 toggleDarkMode(): void {
59 } else { 54 if (self.shared.shouldUseDarkColors) {
60 this.setThemeSource('dark'); 55 this.setThemeSource('light');
61 } 56 } else {
62 }, 57 this.setThemeSource('dark');
63})); 58 }
59 },
60 }));
64 61
65export interface RendererStore extends Instance<typeof rendererStore> {} 62export interface RendererStore extends Instance<typeof rendererStore> {}
66 63
@@ -72,22 +69,26 @@ export interface RendererStore extends Instance<typeof rendererStore> {}
72 * 69 *
73 * @param ipc The `sophieRenderer` context bridge. 70 * @param ipc The `sophieRenderer` context bridge.
74 */ 71 */
75export function createAndConnectRendererStore(ipc: SophieRenderer): RendererStore { 72export function createAndConnectRendererStore(
73 ipc: SophieRenderer,
74): RendererStore {
76 const env: RendererEnv = { 75 const env: RendererEnv = {
77 dispatchMainAction: ipc.dispatchAction, 76 dispatchMainAction: ipc.dispatchAction,
78 }; 77 };
79 const store = rendererStore.create({}, env); 78 const store = rendererStore.create({}, env);
80 79
81 ipc.onSharedStoreChange({ 80 ipc
82 onSnapshot(snapshot) { 81 .onSharedStoreChange({
83 applySnapshot(store.shared, snapshot); 82 onSnapshot(snapshot) {
84 }, 83 applySnapshot(store.shared, snapshot);
85 onPatch(patch) { 84 },
86 applyPatch(store.shared, patch); 85 onPatch(patch) {
87 }, 86 applyPatch(store.shared, patch);
88 }).catch((err) => { 87 },
89 log.error('Failed to connect to shared store', err); 88 })
90 }); 89 .catch((err) => {
90 log.error('Failed to connect to shared store', err);
91 });
91 92
92 return store; 93 return store;
93} 94}