aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared/src/stores
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-26 19:59:04 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-26 20:02:08 +0100
commit4ef4306cf401829905f764845ed78ac072fb94b6 (patch)
tree980a91a11cb1ac5f730d72c385e542edd0617d82 /packages/shared/src/stores
parentrefactor: Clarify main process architecture (diff)
downloadsophie-4ef4306cf401829905f764845ed78ac072fb94b6.tar.gz
sophie-4ef4306cf401829905f764845ed78ac072fb94b6.tar.zst
sophie-4ef4306cf401829905f764845ed78ac072fb94b6.zip
refactor: Make all stores optional
This reduces boilerplate and helps with config file robustness: if a field is missing from the config file, it will be replaced with its default value.
Diffstat (limited to 'packages/shared/src/stores')
-rw-r--r--packages/shared/src/stores/Config.ts8
-rw-r--r--packages/shared/src/stores/SharedStore.ts10
2 files changed, 5 insertions, 13 deletions
diff --git a/packages/shared/src/stores/Config.ts b/packages/shared/src/stores/Config.ts
index 1a9f924..432945c 100644
--- a/packages/shared/src/stores/Config.ts
+++ b/packages/shared/src/stores/Config.ts
@@ -27,14 +27,10 @@ import {
27 27
28import { themeSource } from '../schemas'; 28import { themeSource } from '../schemas';
29 29
30export const config = types.model("Config", { 30export const config = types.model('Config', {
31 themeSource: types.enumeration(themeSource.options), 31 themeSource: types.optional(types.enumeration(themeSource.options), 'system'),
32}); 32});
33 33
34export const defaultConfig: ConfigSnapshotIn = {
35 themeSource: 'system',
36};
37
38export interface Config extends Instance<typeof config> {} 34export interface Config extends Instance<typeof config> {}
39 35
40export interface ConfigSnapshotIn extends SnapshotIn<typeof config> {} 36export interface ConfigSnapshotIn extends SnapshotIn<typeof config> {}
diff --git a/packages/shared/src/stores/SharedStore.ts b/packages/shared/src/stores/SharedStore.ts
index 9f0afb1..cfff6d5 100644
--- a/packages/shared/src/stores/SharedStore.ts
+++ b/packages/shared/src/stores/SharedStore.ts
@@ -26,17 +26,13 @@ import {
26 SnapshotOut, 26 SnapshotOut,
27} from 'mobx-state-tree'; 27} from 'mobx-state-tree';
28 28
29import { config, defaultConfig } from './Config'; 29import { config } from './Config';
30 30
31export const sharedStore = types.model("SharedStore", { 31export const sharedStore = types.model('SharedStore', {
32 config, 32 config: types.optional(config, {}),
33 shouldUseDarkColors: true, 33 shouldUseDarkColors: true,
34}); 34});
35 35
36export const emptySharedStore: SharedStoreSnapshotIn = {
37 config: defaultConfig,
38};
39
40export interface SharedStore extends Instance<typeof sharedStore> {} 36export interface SharedStore extends Instance<typeof sharedStore> {}
41 37
42export interface SharedStoreSnapshotIn extends SnapshotIn<typeof sharedStore> {} 38export interface SharedStoreSnapshotIn extends SnapshotIn<typeof sharedStore> {}