From b3d2bad9c5a481132d3d4c81b876b6754d684592 Mon Sep 17 00:00:00 2001 From: Steliyan Stoyanov Date: Tue, 29 Oct 2019 22:53:10 +0200 Subject: Respect MacOS current theme --- src/stores/UIStore.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/stores/UIStore.js b/src/stores/UIStore.js index 9680c5bcc..44bc7c974 100644 --- a/src/stores/UIStore.js +++ b/src/stores/UIStore.js @@ -5,12 +5,18 @@ import { reaction, } from 'mobx'; import { theme } from '@meetfranz/theme'; +import { remote } from 'electron'; import Store from './lib/Store'; +import { isMac } from '../environment'; + +const { systemPreferences } = remote; export default class UIStore extends Store { @observable showServicesUpdatedInfoBar = false; + @observable isOsDarkThemeActive = isMac ? systemPreferences.isDarkMode() : false; + constructor(...args) { super(...args); @@ -18,6 +24,13 @@ export default class UIStore extends Store { this.actions.ui.openSettings.listen(this._openSettings.bind(this)); this.actions.ui.closeSettings.listen(this._closeSettings.bind(this)); this.actions.ui.toggleServiceUpdatedInfoBar.listen(this._toggleServiceUpdatedInfoBar.bind(this)); + + // Listen for theme change on MacOS + if (isMac) { + systemPreferences.subscribeNotification('AppleInterfaceThemeChangedNotification', () => { + this.isOsDarkThemeActive = systemPreferences.isDarkMode(); + }); + } } setup() { @@ -35,7 +48,7 @@ export default class UIStore extends Store { } @computed get isDarkThemeActive() { - return this.stores.settings.all.app.darkMode; + return this.stores.settings.all.app.darkMode || (this.stores.settings.all.app.adaptableDarkMode && this.isOsDarkThemeActive); } @computed get theme() { -- cgit v1.2.3-70-g09d2