aboutsummaryrefslogtreecommitdiffstats
path: root/src/webview/recipe.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/webview/recipe.js')
-rw-r--r--src/webview/recipe.js43
1 files changed, 39 insertions, 4 deletions
diff --git a/src/webview/recipe.js b/src/webview/recipe.js
index 027d22c0a..2bf8f757a 100644
--- a/src/webview/recipe.js
+++ b/src/webview/recipe.js
@@ -1,8 +1,16 @@
1import { ipcRenderer } from 'electron'; 1import { ipcRenderer } from 'electron';
2import path from 'path'; 2import path from 'path';
3import { autorun, computed, observable } from 'mobx'; 3import { autorun, computed, observable } from 'mobx';
4import fs from 'fs-extra';
4import { loadModule } from 'cld3-asm'; 5import { loadModule } from 'cld3-asm';
5import { debounce } from 'lodash'; 6import { debounce } from 'lodash';
7import {
8 enable as enableDarkMode,
9 disable as disableDarkMode,
10} from 'darkreader';
11
12import ignoreList from './darkmode/ignore';
13import customDarkModeCss from './darkmode/custom';
6 14
7import RecipeWebview from './lib/RecipeWebview'; 15import RecipeWebview from './lib/RecipeWebview';
8 16
@@ -14,7 +22,7 @@ import './notifications';
14import { DEFAULT_APP_SETTINGS } from '../config'; 22import { DEFAULT_APP_SETTINGS } from '../config';
15import { isDevMode } from '../environment'; 23import { isDevMode } from '../environment';
16 24
17const debug = require('debug')('Franz:Plugin'); 25const debug = require('debug')('Ferdi:Plugin');
18 26
19class RecipeController { 27class RecipeController {
20 @observable settings = { 28 @observable settings = {
@@ -35,6 +43,8 @@ class RecipeController {
35 'get-service-id': 'serviceIdEcho', 43 'get-service-id': 'serviceIdEcho',
36 }; 44 };
37 45
46 universalDarkModeInjected = false;
47
38 constructor() { 48 constructor() {
39 this.initialize(); 49 this.initialize();
40 } 50 }
@@ -112,10 +122,35 @@ class RecipeController {
112 122
113 if (this.settings.service.isDarkModeEnabled) { 123 if (this.settings.service.isDarkModeEnabled) {
114 debug('Enable dark mode'); 124 debug('Enable dark mode');
115 injectDarkModeStyle(this.settings.service.recipe.path); 125
116 } else if (isDarkModeStyleInjected()) { 126 // Check if recipe has a darkmode.css
127 const darkModeStyle = path.join(this.settings.service.recipe.path, 'darkmode.css');
128 const darkModeExists = fs.pathExistsSync(darkModeStyle);
129
130 if (darkModeExists) {
131 injectDarkModeStyle(this.settings.service.recipe.path);
132 } else if (this.settings.app.universalDarkMode && !ignoreList.includes(window.location.host)) {
133 // Use darkreader instead
134 enableDarkMode({}, {
135 css: customDarkModeCss[window.location.host] || '',
136 });
137 this.universalDarkModeInjected = true;
138 }
139 } else {
117 debug('Remove dark mode'); 140 debug('Remove dark mode');
118 removeDarkModeStyle(); 141
142 if (isDarkModeStyleInjected()) {
143 removeDarkModeStyle();
144 } else {
145 disableDarkMode();
146 this.universalDarkModeInjected = false;
147 }
148 }
149
150 // Remove dark reader if (universal) dark mode was just disabled
151 if (this.universalDarkModeInjected && (!this.settings.service.isDarkModeEnabled || !this.settings.app.universalDarkMode)) {
152 disableDarkMode();
153 this.universalDarkModeInjected = false;
119 } 154 }
120 } 155 }
121 156