aboutsummaryrefslogtreecommitdiffstats
path: root/packages/renderer/src/stores/RendererStore.ts
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-01-23 17:12:47 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-02-08 21:43:17 +0100
commit044b2de8c7861504704468ba441d4a6a37eed8f7 (patch)
tree940d2b7946d07a0c69b5e3ad46c25c599cf2aca7 /packages/renderer/src/stores/RendererStore.ts
parentfeat: Add selected service field to SharedStore (diff)
downloadsophie-044b2de8c7861504704468ba441d4a6a37eed8f7.tar.gz
sophie-044b2de8c7861504704468ba441d4a6a37eed8f7.tar.zst
sophie-044b2de8c7861504704468ba441d4a6a37eed8f7.zip
refactor: Move runtime state into shared models
Now the runtime state lives inside the model (instead of being associated to the static settings via a map), which simplifies state management. Static settings are now located inside the runtime models, so we must create tests to make sure that the settings are being persisted correctly. The contents of the config file are now generated as a view of store (instead of a snapshot), which adds flexibility. 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.ts24
1 files changed, 12 insertions, 12 deletions
diff --git a/packages/renderer/src/stores/RendererStore.ts b/packages/renderer/src/stores/RendererStore.ts
index 731ca28..a4e6197 100644
--- a/packages/renderer/src/stores/RendererStore.ts
+++ b/packages/renderer/src/stores/RendererStore.ts
@@ -18,17 +18,19 @@
18 * SPDX-License-Identifier: AGPL-3.0-only 18 * SPDX-License-Identifier: AGPL-3.0-only
19 */ 19 */
20 20
21import { BrowserViewBounds, SophieRenderer, ThemeSource } from '@sophie/shared'; 21import {
22 BrowserViewBounds,
23 sharedStore,
24 Service,
25 SophieRenderer,
26 ThemeSource,
27} from '@sophie/shared';
22import { applySnapshot, applyPatch, Instance, types } from 'mobx-state-tree'; 28import { applySnapshot, applyPatch, Instance, types } from 'mobx-state-tree';
23 29
30import RendererEnv from '../env/RendererEnv';
24import getEnv from '../env/getEnv'; 31import getEnv from '../env/getEnv';
25import RendererEnvImpl from '../env/impl/RendererEnvImpl';
26import { getLogger } from '../utils/log'; 32import { getLogger } from '../utils/log';
27 33
28import type { Config } from './Config';
29import type { Service } from './Service';
30import { sharedStore } from './SharedStore';
31
32const log = getLogger('RendererStore'); 34const log = getLogger('RendererStore');
33 35
34export const rendererStore = types 36export const rendererStore = types
@@ -36,11 +38,8 @@ export const rendererStore = types
36 shared: types.optional(sharedStore, {}), 38 shared: types.optional(sharedStore, {}),
37 }) 39 })
38 .views((self) => ({ 40 .views((self) => ({
39 get config(): Config {
40 return self.shared.config;
41 },
42 get services(): Service[] { 41 get services(): Service[] {
43 return this.config.services; 42 return self.shared.services;
44 }, 43 },
45 get selectedService(): Service | undefined { 44 get selectedService(): Service | undefined {
46 return self.shared.selectedService; 45 return self.shared.selectedService;
@@ -87,9 +86,10 @@ export interface RendererStore extends Instance<typeof rendererStore> {}
87export function createAndConnectRendererStore( 86export function createAndConnectRendererStore(
88 ipc: SophieRenderer, 87 ipc: SophieRenderer,
89): RendererStore { 88): RendererStore {
90 const env = new RendererEnvImpl(ipc); 89 const env: RendererEnv = {
90 dispatchMainAction: ipc.dispatchAction,
91 };
91 const store = rendererStore.create({}, env); 92 const store = rendererStore.create({}, env);
92 env.setStore(store);
93 93
94 ipc 94 ipc
95 .onSharedStoreChange({ 95 .onSharedStoreChange({