diff options
author | 2022-02-27 00:57:44 +0100 | |
---|---|---|
committer | 2022-03-06 18:56:46 +0100 | |
commit | f05d54406c9bc4b69609a4935132ff17b8e28824 (patch) | |
tree | e7ffde8f8b3433e004932a6e068dedbb4f2196da /packages/main/src/stores/Service.ts | |
parent | design: Simpler message count indicators (diff) | |
download | sophie-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/main/src/stores/Service.ts')
-rw-r--r-- | packages/main/src/stores/Service.ts | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/packages/main/src/stores/Service.ts b/packages/main/src/stores/Service.ts index 5302dd4..abef7c2 100644 --- a/packages/main/src/stores/Service.ts +++ b/packages/main/src/stores/Service.ts | |||
@@ -19,18 +19,15 @@ | |||
19 | */ | 19 | */ |
20 | 20 | ||
21 | import type { UnreadCount } from '@sophie/service-shared'; | 21 | import type { UnreadCount } from '@sophie/service-shared'; |
22 | import { Service as ServiceBase } from '@sophie/shared'; | 22 | import { defineServiceModel } from '@sophie/shared'; |
23 | import { Instance, getSnapshot } from 'mobx-state-tree'; | 23 | import { Instance, getSnapshot } from 'mobx-state-tree'; |
24 | 24 | ||
25 | import type { ServiceView } from '../infrastructure/electron/types'; | 25 | import type { ServiceView } from '../infrastructure/electron/types'; |
26 | import overrideProps from '../utils/overrideProps'; | ||
27 | 26 | ||
28 | import ServiceSettings from './ServiceSettings'; | 27 | import ServiceSettings from './ServiceSettings'; |
29 | import type ServiceConfig from './config/ServiceConfig'; | 28 | import type ServiceConfig from './config/ServiceConfig'; |
30 | 29 | ||
31 | const Service = overrideProps(ServiceBase, { | 30 | const Service = defineServiceModel(ServiceSettings) |
32 | settings: ServiceSettings, | ||
33 | }) | ||
34 | .views((self) => ({ | 31 | .views((self) => ({ |
35 | get config(): ServiceConfig { | 32 | get config(): ServiceConfig { |
36 | const { id, settings } = self; | 33 | const { id, settings } = self; |