diff options
Diffstat (limited to 'src/state/models')
-rw-r--r-- | src/state/models/root-store.ts | 4 | ||||
-rw-r--r-- | src/state/models/shell-ui.ts | 22 |
2 files changed, 25 insertions, 1 deletions
diff --git a/src/state/models/root-store.ts b/src/state/models/root-store.ts index 26f947c56..54578b4a5 100644 --- a/src/state/models/root-store.ts +++ b/src/state/models/root-store.ts @@ -67,6 +67,7 @@ export class RootStoreModel { me: this.me.serialize(), nav: this.nav.serialize(), onboard: this.onboard.serialize(), + shell: this.shell.serialize(), } } @@ -84,6 +85,9 @@ export class RootStoreModel { if (hasProp(v, 'onboard')) { this.onboard.hydrate(v.onboard) } + if (hasProp(v, 'shell')) { + this.shell.hydrate(v.shell) + } } } diff --git a/src/state/models/shell-ui.ts b/src/state/models/shell-ui.ts index 6b3134ff2..52d081680 100644 --- a/src/state/models/shell-ui.ts +++ b/src/state/models/shell-ui.ts @@ -1,5 +1,6 @@ import {makeAutoObservable} from 'mobx' import {ProfileViewModel} from './profile-view' +import {isObj, hasProp} from '../lib/type-guards' export class ConfirmModal { name = 'confirm' @@ -135,6 +136,7 @@ export interface ComposerOpts { } export class ShellUiModel { + darkMode = false minimalShellMode = false isMainMenuOpen = false isModalActive = false @@ -156,7 +158,25 @@ export class ShellUiModel { composerOpts: ComposerOpts | undefined constructor() { - makeAutoObservable(this) + makeAutoObservable(this, {serialize: false, hydrate: false}) + } + + serialize(): unknown { + return { + darkMode: this.darkMode, + } + } + + hydrate(v: unknown) { + if (isObj(v)) { + if (hasProp(v, 'darkMode') && typeof v.darkMode === 'boolean') { + this.darkMode = v.darkMode + } + } + } + + setDarkMode(v: boolean) { + this.darkMode = v } setMinimalShellMode(v: boolean) { |