aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer/src/stores/RendererStore.ts
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-02-27 00:57:44 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-03-06 18:56:46 +0100
commitf05d54406c9bc4b69609a4935132ff17b8e28824 (patch)
treee7ffde8f8b3433e004932a6e068dedbb4f2196da /packages/renderer/src/stores/RendererStore.ts
parentdesign: Simpler message count indicators (diff)
downloadsophie-f05d54406c9bc4b69609a4935132ff17b8e28824.tar.gz
sophie-f05d54406c9bc4b69609a4935132ff17b8e28824.tar.zst
sophie-f05d54406c9bc4b69609a4935132ff17b8e28824.zip
refactor: Shared model type factories
Allows customization of stores both in the renderer and in the main process. Instead of exposing a basic model type from the shared module (which was be overwritted with more specific props in the main package), we expose factory function that can create specific model types in both the renderer and the main process. Using these package-specific customization to stores, the renderer package can attach IPC calls directly to store objects, which the main package can attach the handlers for IPC calls and other internal actions. Signed-off-by: Kristóf Marussy <kristof@marussy.com>
Diffstat (limited to 'packages/renderer/src/stores/RendererStore.ts')
-rw-r--r--packages/renderer/src/stores/RendererStore.ts41
1 files changed, 5 insertions, 36 deletions
diff --git a/packages/renderer/src/stores/RendererStore.ts b/packages/renderer/src/stores/RendererStore.ts
index 1acc605..8f424f6 100644
--- a/packages/renderer/src/stores/RendererStore.ts
+++ b/packages/renderer/src/stores/RendererStore.ts
@@ -18,20 +18,17 @@
18 * SPDX-License-Identifier: AGPL-3.0-only 18 * SPDX-License-Identifier: AGPL-3.0-only
19 */ 19 */
20 20
21import { 21import { BrowserViewBounds, SophieRenderer } from '@sophie/shared';
22 BrowserViewBounds,
23 SharedStore,
24 Service,
25 SophieRenderer,
26 ThemeSource,
27 GlobalSettings,
28} from '@sophie/shared';
29import { applySnapshot, applyPatch, Instance, types } from 'mobx-state-tree'; 22import { applySnapshot, applyPatch, Instance, types } from 'mobx-state-tree';
30 23
31import RendererEnv from '../env/RendererEnv'; 24import RendererEnv from '../env/RendererEnv';
32import getEnv from '../env/getEnv'; 25import getEnv from '../env/getEnv';
33import { getLogger } from '../utils/log'; 26import { getLogger } from '../utils/log';
34 27
28import GlobalSettings from './GlobalSettings';
29import Service from './Service';
30import SharedStore from './SharedStore';
31
35const log = getLogger('RendererStore'); 32const log = getLogger('RendererStore');
36 33
37const RendererStore = types 34const RendererStore = types
@@ -47,40 +44,12 @@ const RendererStore = types
47 }, 44 },
48 })) 45 }))
49 .actions((self) => ({ 46 .actions((self) => ({
50 setSelectedServiceId(serviceId: string): void {
51 getEnv(self).dispatchMainAction({
52 action: 'set-selected-service-id',
53 serviceId,
54 });
55 },
56 setBrowserViewBounds(browserViewBounds: BrowserViewBounds): void { 47 setBrowserViewBounds(browserViewBounds: BrowserViewBounds): void {
57 getEnv(self).dispatchMainAction({ 48 getEnv(self).dispatchMainAction({
58 action: 'set-browser-view-bounds', 49 action: 'set-browser-view-bounds',
59 browserViewBounds, 50 browserViewBounds,
60 }); 51 });
61 }, 52 },
62 setThemeSource(themeSource: ThemeSource): void {
63 getEnv(self).dispatchMainAction({
64 action: 'set-theme-source',
65 themeSource,
66 });
67 },
68 toggleDarkMode(): void {
69 if (self.shared.shouldUseDarkColors) {
70 this.setThemeSource('light');
71 } else {
72 this.setThemeSource('dark');
73 }
74 },
75 setShowLocationBar(showLocationBar: boolean): void {
76 getEnv(self).dispatchMainAction({
77 action: 'set-show-location-bar',
78 showLocationBar,
79 });
80 },
81 toggleLocationBar(): void {
82 this.setShowLocationBar(!self.settings.showLocationBar);
83 },
84 })); 53 }));
85 54
86/* 55/*