Skip to content

Commit 3b229ac

Browse files
committed
v3.36.1 patch:
- make theme selection as 3 values switch (see #96 & #103)
1 parent 909f85b commit 3b229ac

4 files changed

Lines changed: 25 additions & 12 deletions

File tree

manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
"manifest_version": 2,
44
"name": "RSSPreview",
5-
"version": "3.36",
5+
"version": "3.36.1",
66
"author": "Aurelien David",
77
"homepage_url": "https://github.com/aureliendavid/rsspreview",
88

rsspreview.js

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@
1111

1212
window.hasRun = true;
1313

14-
// Detect system theme for the initial default
15-
const systemDarkDefault = window.matchMedia(
16-
"(prefers-color-scheme: dark)",
17-
).matches;
14+
function isDarkTheme(theme) {
15+
return ( (theme==="dark") || ( (theme==="auto") && (window.matchMedia('(prefers-color-scheme: dark)').matches) ) );
16+
}
1817

1918
// defaults
2019
var options = {
@@ -25,7 +24,7 @@
2524
preventPreview: false,
2625
fullPreview: false,
2726
doAuthor: false,
28-
darkTheme: systemDarkDefault,
27+
theme: "auto",
2928
enableCss: false,
3029
bypassCSP: false,
3130
customCss: null,
@@ -238,7 +237,7 @@
238237
let doc = document.implementation.createHTMLDocument('');
239238
doc.body.id = "rsspreviewBody";
240239

241-
if (options.darkTheme) {
240+
if (isDarkTheme(options.theme)) {
242241
doc.documentElement.classList.add("dark");
243242
}
244243

settings/options.html

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
padding: 10px;
1212
}
1313

14-
.setting input[type="checkbox"] {
14+
.setting input[type="checkbox"], .setting input[type="radio"] {
1515
vertical-align: middle;
1616
position: relative;
1717
top: -1px; /* Sometimes needed for manual optical correction */
@@ -68,7 +68,21 @@
6868
<label class="setting browser-style"><input type="checkbox" id="localeDate" class="validate" > Use locale format for dates (will use ISO format otherwise)</label>
6969
<hr />
7070

71-
<label class="setting browser-style"><input type="checkbox" id="darkTheme" class="validate"> Enable dark theme</label>
71+
<div>
72+
<span class="setting browser-style"> Theme preference: </span>
73+
74+
<label class="setting browser-style">
75+
&nbsp;<input type="radio" name="theme" value="light" class="validate" checked>light
76+
</label>
77+
78+
<label class="setting browser-style">
79+
&nbsp;<input type="radio" name="theme" value="dark" class="validate">dark
80+
</label>
81+
82+
<label class="setting browser-style">
83+
&nbsp;<input type="radio" name="theme" value="auto" class="validate">auto (system)
84+
</label>
85+
</div>
7286
<hr />
7387

7488
<label class="setting browser-style"><input type="checkbox" id="enableCss" class="validate" > Enable custom CSS:</label><br />

settings/options.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ function saveOptions(e) {
1919
orangeIcon: document.querySelector("#orangeIcon").checked,
2020
enableCss: document.querySelector("#enableCss").checked,
2121
bypassCSP: document.querySelector("#bypassCSP").checked,
22-
darkTheme: document.querySelector("#darkTheme").checked,
22+
theme: document.querySelector('input[name="theme"]:checked').value,
2323
customCss: document.querySelector("#customCss").value,
2424
newTab: document.querySelector("#newTab").checked,
2525
localeDate: document.querySelector("#localeDate").checked
@@ -51,7 +51,7 @@ function restoreOptions() {
5151
document.querySelector("#fullPreview").checked = result.fullPreview;
5252
document.querySelector("#doAuthor").checked = result.doAuthor;
5353
document.querySelector("#orangeIcon").checked = result.orangeIcon;
54-
document.querySelector("#darkTheme").checked = result.darkTheme;
54+
document.querySelector(`input[name="theme"][value="${result.theme}"]`).checked = true;
5555
document.querySelector("#enableCss").checked = result.enableCss;
5656
document.querySelector("#bypassCSP").checked = result.bypassCSP;
5757
document.querySelector("#customCss").value = result.customCss;
@@ -74,7 +74,7 @@ function restoreOptions() {
7474
fullPreview: false,
7575
doAuthor: false,
7676
orangeIcon: android,
77-
darkTheme: systemDarkDefault,
77+
theme: "auto",
7878
enableCss: false,
7979
bypassCSP: false,
8080
customCss: null,

0 commit comments

Comments
 (0)