aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar vantezzen <hello@vantezzen.io>2019-09-23 20:15:23 +0200
committerLibravatar vantezzen <hello@vantezzen.io>2019-09-23 20:15:23 +0200
commit1eb148d121dbcbe1e54085a9fb897fe7ac1529b7 (patch)
tree14d70b0957ab1ea7ae7ff6df1f4b387ab35175d3
parentSetup repo-sync workflow (diff)
downloadferdium-app-1eb148d121dbcbe1e54085a9fb897fe7ac1529b7.tar.gz
ferdium-app-1eb148d121dbcbe1e54085a9fb897fe7ac1529b7.tar.zst
ferdium-app-1eb148d121dbcbe1e54085a9fb897fe7ac1529b7.zip
Add darkreader for universal darkmode
-rw-r--r--package-lock.json19
-rw-r--r--package.json1
-rw-r--r--src/stores/ServicesStore.js5
-rw-r--r--src/webview/recipe.js28
4 files changed, 47 insertions, 6 deletions
diff --git a/package-lock.json b/package-lock.json
index dfa1b1792..b7cc09b98 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2180,7 +2180,8 @@
2180 "dependencies": { 2180 "dependencies": {
2181 "@mdi/js": { 2181 "@mdi/js": {
2182 "version": "3.9.97", 2182 "version": "3.9.97",
2183 "resolved": false 2183 "resolved": "https://registry.npmjs.org/@mdi/js/-/js-3.9.97.tgz",
2184 "integrity": "sha512-JzX6rDlUcNZHaoUg9sAzdg5Js287tvgRbNmMIyKoJK2ZCP9JupeWTYlpbX4oNJ9Zg9v8YH76WuWLALKOospQgw=="
2184 }, 2185 },
2185 "@meetfranz/theme": { 2186 "@meetfranz/theme": {
2186 "version": "1.0.14", 2187 "version": "1.0.14",
@@ -2209,7 +2210,8 @@
2209 "dependencies": { 2210 "dependencies": {
2210 "@mdi/js": { 2211 "@mdi/js": {
2211 "version": "3.9.97", 2212 "version": "3.9.97",
2212 "resolved": false 2213 "resolved": "https://registry.npmjs.org/@mdi/js/-/js-3.9.97.tgz",
2214 "integrity": "sha512-JzX6rDlUcNZHaoUg9sAzdg5Js287tvgRbNmMIyKoJK2ZCP9JupeWTYlpbX4oNJ9Zg9v8YH76WuWLALKOospQgw=="
2213 }, 2215 },
2214 "@meetfranz/theme": { 2216 "@meetfranz/theme": {
2215 "version": "1.0.14", 2217 "version": "1.0.14",
@@ -5829,6 +5831,14 @@
5829 "number-is-nan": "^1.0.0" 5831 "number-is-nan": "^1.0.0"
5830 } 5832 }
5831 }, 5833 },
5834 "darkreader": {
5835 "version": "4.7.15",
5836 "resolved": "https://registry.npmjs.org/darkreader/-/darkreader-4.7.15.tgz",
5837 "integrity": "sha512-i9OzIGJqmbghZ42MI0pHD9hIlEu5LDfOP5TWAg+OyZoO0XsW0D2HoFdCebS4OLRrEr3/TflzDYvUMVnosWR4uA==",
5838 "requires": {
5839 "malevic": "0.16.3"
5840 }
5841 },
5832 "dashdash": { 5842 "dashdash": {
5833 "version": "1.14.1", 5843 "version": "1.14.1",
5834 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", 5844 "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -13920,6 +13930,11 @@
13920 "tmpl": "1.0.x" 13930 "tmpl": "1.0.x"
13921 } 13931 }
13922 }, 13932 },
13933 "malevic": {
13934 "version": "0.16.3",
13935 "resolved": "https://registry.npmjs.org/malevic/-/malevic-0.16.3.tgz",
13936 "integrity": "sha512-/ekZOKILDitU6igF0zxkuTNLQgNTTs+NafyQ19RXwT+VKN9K3qTngQ+TdqcaZJbhSzRqVIXBw6iso6WV56QlhQ=="
13937 },
13923 "map-age-cleaner": { 13938 "map-age-cleaner": {
13924 "version": "0.1.3", 13939 "version": "0.1.3",
13925 "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", 13940 "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
diff --git a/package.json b/package.json
index 5f56ef705..39ad362b9 100644
--- a/package.json
+++ b/package.json
@@ -48,6 +48,7 @@
48 "auto-launch": "5.0.5", 48 "auto-launch": "5.0.5",
49 "classnames": "2.2.6", 49 "classnames": "2.2.6",
50 "cld3-asm": "1.0.1", 50 "cld3-asm": "1.0.1",
51 "darkreader": "4.7.15",
51 "du": "^0.1.0", 52 "du": "^0.1.0",
52 "electron-dl": "1.12.0", 53 "electron-dl": "1.12.0",
53 "electron-fetch": "1.3.0", 54 "electron-fetch": "1.3.0",
diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js
index 45350d8f5..3173004d4 100644
--- a/src/stores/ServicesStore.js
+++ b/src/stores/ServicesStore.js
@@ -96,6 +96,11 @@ export default class ServicesStore extends Store {
96 () => this.stores.settings.app.spellcheckerLanguage, 96 () => this.stores.settings.app.spellcheckerLanguage,
97 () => this._shareSettingsWithServiceProcess(), 97 () => this._shareSettingsWithServiceProcess(),
98 ); 98 );
99
100 reaction(
101 () => this.stores.settings.app.darkMode,
102 () => this._shareSettingsWithServiceProcess(),
103 );
99 } 104 }
100 105
101 @computed get all() { 106 @computed get all() {
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 @@
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';
6 11
7import RecipeWebview from './lib/RecipeWebview'; 12import RecipeWebview from './lib/RecipeWebview';
8 13
@@ -109,12 +114,27 @@ class RecipeController {
109 } 114 }
110 } 115 }
111 116
112 if (this.settings.service.isDarkModeEnabled) { 117 if (this.settings.service.isDarkModeEnabled || this.settings.app.darkMode) {
113 debug('Enable dark mode'); 118 debug('Enable dark mode');
114 injectDarkModeStyle(this.settings.service.recipe.path); 119
115 } else if (isDarkModeStyleInjected()) { 120 // Check if recipe has a darkmode.css
121 const darkModeStyle = path.join(this.settings.service.recipe.path, 'darkmode.css');
122 const darkModeExists = fs.pathExistsSync(darkModeStyle);
123
124 if (darkModeExists) {
125 injectDarkModeStyle(this.settings.service.recipe.path);
126 } else {
127 // Use darkreader instead
128 enableDarkMode();
129 }
130 } else {
116 debug('Remove dark mode'); 131 debug('Remove dark mode');
117 removeDarkModeStyle(); 132
133 if (isDarkModeStyleInjected()) {
134 removeDarkModeStyle();
135 } else {
136 disableDarkMode();
137 }
118 } 138 }
119 } 139 }
120 140