diff options
Diffstat (limited to 'packages/main/src/stores/GlobalSettings.ts')
-rw-r--r-- | packages/main/src/stores/GlobalSettings.ts | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/packages/main/src/stores/GlobalSettings.ts b/packages/main/src/stores/GlobalSettings.ts index 7bbc089..9ebc1b1 100644 --- a/packages/main/src/stores/GlobalSettings.ts +++ b/packages/main/src/stores/GlobalSettings.ts | |||
@@ -18,35 +18,41 @@ | |||
18 | * SPDX-License-Identifier: AGPL-3.0-only | 18 | * SPDX-License-Identifier: AGPL-3.0-only |
19 | */ | 19 | */ |
20 | 20 | ||
21 | import { | 21 | import { defineGlobalSettingsModel, ThemeSource } from '@sophie/shared'; |
22 | GlobalSettings as GlobalSettingsBase, | 22 | import { Instance, resolveIdentifier } from 'mobx-state-tree'; |
23 | ThemeSource, | ||
24 | } from '@sophie/shared'; | ||
25 | import { Instance, resolveIdentifier, types } from 'mobx-state-tree'; | ||
26 | 23 | ||
27 | import { getLogger } from '../utils/log'; | 24 | import getLogger from '../utils/getLogger.js'; |
28 | import overrideProps from '../utils/overrideProps'; | ||
29 | 25 | ||
30 | import Service from './Service'; | 26 | import Service from './Service.js'; |
31 | 27 | ||
32 | const log = getLogger('sharedStore'); | 28 | const log = getLogger('sharedStore'); |
33 | 29 | ||
34 | const GlobalSettings = overrideProps(GlobalSettingsBase, { | 30 | const GlobalSettings = defineGlobalSettingsModel(Service) |
35 | selectedService: types.safeReference(Service), | 31 | .actions((self) => ({ |
36 | }).actions((self) => ({ | 32 | setThemeSource(mode: ThemeSource): void { |
37 | setThemeSource(mode: ThemeSource): void { | 33 | self.themeSource = mode; |
38 | self.themeSource = mode; | 34 | }, |
39 | }, | 35 | setShowLocationBar(showLocationBar: boolean): void { |
40 | setSelectedServiceId(serviceId: string): void { | 36 | self.showLocationBar = showLocationBar; |
41 | const serviceInstance = resolveIdentifier(Service, self, serviceId); | 37 | }, |
42 | if (serviceInstance === undefined) { | 38 | setSelectedService(service: Service): void { |
43 | log.warn('Trying to select unknown service', serviceId); | 39 | self.selectedService = service; |
44 | return; | 40 | }, |
45 | } | 41 | })) |
46 | self.selectedService = serviceInstance; | 42 | .actions((self) => ({ |
47 | log.debug('Selected service', serviceId); | 43 | toggleLocationBar(): void { |
48 | }, | 44 | self.setShowLocationBar(!self.showLocationBar); |
49 | })); | 45 | }, |
46 | setSelectedServiceId(serviceId: string): void { | ||
47 | const serviceInstance = resolveIdentifier(Service, self, serviceId); | ||
48 | if (serviceInstance === undefined) { | ||
49 | log.warn('Trying to select unknown service', serviceId); | ||
50 | return; | ||
51 | } | ||
52 | self.setSelectedService(serviceInstance); | ||
53 | log.debug('Selected service', serviceId); | ||
54 | }, | ||
55 | })); | ||
50 | 56 | ||
51 | /* | 57 | /* |
52 | eslint-disable-next-line @typescript-eslint/no-redeclare -- | 58 | eslint-disable-next-line @typescript-eslint/no-redeclare -- |