diff options
Diffstat (limited to 'packages/renderer/src/stores/RendererStore.ts')
-rw-r--r-- | packages/renderer/src/stores/RendererStore.ts | 60 |
1 files changed, 15 insertions, 45 deletions
diff --git a/packages/renderer/src/stores/RendererStore.ts b/packages/renderer/src/stores/RendererStore.ts index 4d85929..c4110bd 100644 --- a/packages/renderer/src/stores/RendererStore.ts +++ b/packages/renderer/src/stores/RendererStore.ts | |||
@@ -18,19 +18,15 @@ | |||
18 | * SPDX-License-Identifier: AGPL-3.0-only | 18 | * SPDX-License-Identifier: AGPL-3.0-only |
19 | */ | 19 | */ |
20 | 20 | ||
21 | import { | 21 | import type { SophieRenderer } from '@sophie/shared'; |
22 | BrowserViewBounds, | ||
23 | SharedStore, | ||
24 | Service, | ||
25 | SophieRenderer, | ||
26 | ThemeSource, | ||
27 | GlobalSettings, | ||
28 | } from '@sophie/shared'; | ||
29 | import { applySnapshot, applyPatch, Instance, types } from 'mobx-state-tree'; | 22 | import { applySnapshot, applyPatch, Instance, types } from 'mobx-state-tree'; |
30 | 23 | ||
31 | import RendererEnv from '../env/RendererEnv'; | 24 | import { getLogger } from '../utils/log.js'; |
32 | import getEnv from '../env/getEnv'; | 25 | |
33 | import { getLogger } from '../utils/log'; | 26 | import type GlobalSettings from './GlobalSettings.js'; |
27 | import type RendererEnv from './RendererEnv.js'; | ||
28 | import type Service from './Service.js'; | ||
29 | import SharedStore from './SharedStore.js'; | ||
34 | 30 | ||
35 | const log = getLogger('RendererStore'); | 31 | const log = getLogger('RendererStore'); |
36 | 32 | ||
@@ -45,33 +41,6 @@ const RendererStore = types | |||
45 | get services(): Service[] { | 41 | get services(): Service[] { |
46 | return self.shared.services; | 42 | return self.shared.services; |
47 | }, | 43 | }, |
48 | })) | ||
49 | .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 { | ||
57 | getEnv(self).dispatchMainAction({ | ||
58 | action: 'set-browser-view-bounds', | ||
59 | browserViewBounds, | ||
60 | }); | ||
61 | }, | ||
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 | })); | 44 | })); |
76 | 45 | ||
77 | /* | 46 | /* |
@@ -89,27 +58,28 @@ export default RendererStore; | |||
89 | * the newly created store via `ipc`. | 58 | * the newly created store via `ipc`. |
90 | * | 59 | * |
91 | * @param ipc The `sophieRenderer` context bridge. | 60 | * @param ipc The `sophieRenderer` context bridge. |
61 | * @returns A promise that resolves to the store once it was initialized. | ||
92 | */ | 62 | */ |
93 | export function createAndConnectRendererStore( | 63 | export async function createAndConnectRendererStore( |
94 | ipc: SophieRenderer, | 64 | ipc: SophieRenderer, |
95 | ): RendererStore { | 65 | ): Promise<RendererStore> { |
96 | const env: RendererEnv = { | 66 | const env: RendererEnv = { |
97 | dispatchMainAction: ipc.dispatchAction, | 67 | dispatchMainAction: ipc.dispatchAction, |
98 | }; | 68 | }; |
99 | const store = RendererStore.create({}, env); | 69 | const store = RendererStore.create({}, env); |
100 | 70 | ||
101 | ipc | 71 | try { |
102 | .onSharedStoreChange({ | 72 | await ipc.onSharedStoreChange({ |
103 | onSnapshot(snapshot) { | 73 | onSnapshot(snapshot) { |
104 | applySnapshot(store.shared, snapshot); | 74 | applySnapshot(store.shared, snapshot); |
105 | }, | 75 | }, |
106 | onPatch(patch) { | 76 | onPatch(patch) { |
107 | applyPatch(store.shared, patch); | 77 | applyPatch(store.shared, patch); |
108 | }, | 78 | }, |
109 | }) | ||
110 | .catch((error) => { | ||
111 | log.error('Failed to connect to shared store', error); | ||
112 | }); | 79 | }); |
80 | } catch (error) { | ||
81 | log.error('Failed to connect to shared store', error); | ||
82 | } | ||
113 | 83 | ||
114 | return store; | 84 | return store; |
115 | } | 85 | } |