From a90fd5d26f1a8aa5149627a68a8dd6b13b26fec5 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Fri, 30 Dec 2022 15:48:34 -0600 Subject: Add dark mode toggle --- src/state/models/shell-ui.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/state/models/shell-ui.ts') 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) { -- cgit 1.4.1