From 1eb148d121dbcbe1e54085a9fb897fe7ac1529b7 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Mon, 23 Sep 2019 20:15:23 +0200 Subject: Add darkreader for universal darkmode --- src/webview/recipe.js | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) (limited to 'src/webview') diff --git a/src/webview/recipe.js b/src/webview/recipe.js index e00566283..e97013b3c 100644 --- a/src/webview/recipe.js +++ b/src/webview/recipe.js @@ -1,8 +1,13 @@ import { ipcRenderer } from 'electron'; import path from 'path'; import { autorun, computed, observable } from 'mobx'; +import fs from 'fs-extra'; import { loadModule } from 'cld3-asm'; import { debounce } from 'lodash'; +import { + enable as enableDarkMode, + disable as disableDarkMode, +} from 'darkreader'; import RecipeWebview from './lib/RecipeWebview'; @@ -109,12 +114,27 @@ class RecipeController { } } - if (this.settings.service.isDarkModeEnabled) { + if (this.settings.service.isDarkModeEnabled || this.settings.app.darkMode) { debug('Enable dark mode'); - injectDarkModeStyle(this.settings.service.recipe.path); - } else if (isDarkModeStyleInjected()) { + + // Check if recipe has a darkmode.css + const darkModeStyle = path.join(this.settings.service.recipe.path, 'darkmode.css'); + const darkModeExists = fs.pathExistsSync(darkModeStyle); + + if (darkModeExists) { + injectDarkModeStyle(this.settings.service.recipe.path); + } else { + // Use darkreader instead + enableDarkMode(); + } + } else { debug('Remove dark mode'); - removeDarkModeStyle(); + + if (isDarkModeStyleInjected()) { + removeDarkModeStyle(); + } else { + disableDarkMode(); + } } } -- cgit v1.2.3-54-g00ecf