diff options
author | 2022-01-23 17:12:47 +0100 | |
---|---|---|
committer | 2022-02-08 21:43:17 +0100 | |
commit | 044b2de8c7861504704468ba441d4a6a37eed8f7 (patch) | |
tree | 940d2b7946d07a0c69b5e3ad46c25c599cf2aca7 /packages/renderer/src/stores/RendererStore.ts | |
parent | feat: Add selected service field to SharedStore (diff) | |
download | sophie-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.ts | 24 |
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 | ||
21 | import { BrowserViewBounds, SophieRenderer, ThemeSource } from '@sophie/shared'; | 21 | import { |
22 | BrowserViewBounds, | ||
23 | sharedStore, | ||
24 | Service, | ||
25 | SophieRenderer, | ||
26 | ThemeSource, | ||
27 | } from '@sophie/shared'; | ||
22 | import { applySnapshot, applyPatch, Instance, types } from 'mobx-state-tree'; | 28 | import { applySnapshot, applyPatch, Instance, types } from 'mobx-state-tree'; |
23 | 29 | ||
30 | import RendererEnv from '../env/RendererEnv'; | ||
24 | import getEnv from '../env/getEnv'; | 31 | import getEnv from '../env/getEnv'; |
25 | import RendererEnvImpl from '../env/impl/RendererEnvImpl'; | ||
26 | import { getLogger } from '../utils/log'; | 32 | import { getLogger } from '../utils/log'; |
27 | 33 | ||
28 | import type { Config } from './Config'; | ||
29 | import type { Service } from './Service'; | ||
30 | import { sharedStore } from './SharedStore'; | ||
31 | |||
32 | const log = getLogger('RendererStore'); | 34 | const log = getLogger('RendererStore'); |
33 | 35 | ||
34 | export const rendererStore = types | 36 | export 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> {} | |||
87 | export function createAndConnectRendererStore( | 86 | export 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({ |