diff options
author | vantezzen <hello@vantezzen.io> | 2019-09-23 20:15:23 +0200 |
---|---|---|
committer | vantezzen <hello@vantezzen.io> | 2019-09-23 20:15:23 +0200 |
commit | 1eb148d121dbcbe1e54085a9fb897fe7ac1529b7 (patch) | |
tree | 14d70b0957ab1ea7ae7ff6df1f4b387ab35175d3 | |
parent | Setup repo-sync workflow (diff) | |
download | ferdium-app-1eb148d121dbcbe1e54085a9fb897fe7ac1529b7.tar.gz ferdium-app-1eb148d121dbcbe1e54085a9fb897fe7ac1529b7.tar.zst ferdium-app-1eb148d121dbcbe1e54085a9fb897fe7ac1529b7.zip |
Add darkreader for universal darkmode
-rw-r--r-- | package-lock.json | 19 | ||||
-rw-r--r-- | package.json | 1 | ||||
-rw-r--r-- | src/stores/ServicesStore.js | 5 | ||||
-rw-r--r-- | src/webview/recipe.js | 28 |
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 @@ | |||
1 | import { ipcRenderer } from 'electron'; | 1 | import { ipcRenderer } from 'electron'; |
2 | import path from 'path'; | 2 | import path from 'path'; |
3 | import { autorun, computed, observable } from 'mobx'; | 3 | import { autorun, computed, observable } from 'mobx'; |
4 | import fs from 'fs-extra'; | ||
4 | import { loadModule } from 'cld3-asm'; | 5 | import { loadModule } from 'cld3-asm'; |
5 | import { debounce } from 'lodash'; | 6 | import { debounce } from 'lodash'; |
7 | import { | ||
8 | enable as enableDarkMode, | ||
9 | disable as disableDarkMode, | ||
10 | } from 'darkreader'; | ||
6 | 11 | ||
7 | import RecipeWebview from './lib/RecipeWebview'; | 12 | import 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 | ||