Update Reddit-related text for consistency, bugfix

Even when on an old Reddit view, redirect from desktop or mobile
depending on whichever one the redirect is set to.
This commit is contained in:
nitrohorse 2020-09-05 22:21:41 -07:00
parent a8103915af
commit 2603e7a9ea
No known key found for this signature in database
GPG Key ID: 6F3175557E766CBF
5 changed files with 53 additions and 58 deletions

View File

@ -88,14 +88,14 @@ const redditDomains = [
"www.reddit.com", "www.reddit.com",
"np.reddit.com", "np.reddit.com",
"new.reddit.com", "new.reddit.com",
"amp.reddit.com" "amp.reddit.com",
]; ];
const redditBypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/; const redditBypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/;
const redditVersions = [ const oldRedditViews = [
"https://old.reddit.com", "https://old.reddit.com", // desktop
"https://i.reddit.com" // Old Mobile view "https://i.reddit.com" // mobile
]; ];
const redditDefault = redditVersions[0]; const redditDefault = oldRedditViews[0];
const googleMapsRegex = /https?:\/\/(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/; const googleMapsRegex = /https?:\/\/(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/;
const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/; const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/;
const dataLatLngRegex = /(!3d|!4d)(-?[0-9]{1,10}.[0-9]{1,10})/g; const dataLatLngRegex = /(!3d|!4d)(-?[0-9]{1,10}.[0-9]{1,10})/g;
@ -117,12 +117,12 @@ let disableNitter;
let disableInvidious; let disableInvidious;
let disableBibliogram; let disableBibliogram;
let disableOsm; let disableOsm;
let disableRedditVersion; let disableOldReddit;
let nitterInstance; let nitterInstance;
let invidiousInstance; let invidiousInstance;
let bibliogramInstance; let bibliogramInstance;
let osmInstance; let osmInstance;
let redditVersion; let oldRedditView;
let alwaysProxy; let alwaysProxy;
let onlyEmbeddedVideo; let onlyEmbeddedVideo;
let videoQuality; let videoQuality;
@ -141,12 +141,12 @@ browser.storage.sync.get(
"invidiousInstance", "invidiousInstance",
"bibliogramInstance", "bibliogramInstance",
"osmInstance", "osmInstance",
"redditVersion", "oldRedditView",
"disableNitter", "disableNitter",
"disableInvidious", "disableInvidious",
"disableBibliogram", "disableBibliogram",
"disableOsm", "disableOsm",
"disableRedditVersion", "disableOldReddit",
"alwaysProxy", "alwaysProxy",
"onlyEmbeddedVideo", "onlyEmbeddedVideo",
"videoQuality", "videoQuality",
@ -162,12 +162,12 @@ browser.storage.sync.get(
disableInvidious = result.disableInvidious; disableInvidious = result.disableInvidious;
disableBibliogram = result.disableBibliogram; disableBibliogram = result.disableBibliogram;
disableOsm = result.disableOsm; disableOsm = result.disableOsm;
disableRedditVersion = result.disableRedditVersion; disableOldReddit = result.disableOldReddit;
nitterInstance = result.nitterInstance; nitterInstance = result.nitterInstance;
invidiousInstance = result.invidiousInstance; invidiousInstance = result.invidiousInstance;
bibliogramInstance = result.bibliogramInstance; bibliogramInstance = result.bibliogramInstance;
osmInstance = result.osmInstance || osmDefault; osmInstance = result.osmInstance || osmDefault;
redditVersion = result.redditVersion || redditDefault; oldRedditView = result.oldRedditView || redditDefault;
alwaysProxy = result.alwaysProxy; alwaysProxy = result.alwaysProxy;
onlyEmbeddedVideo = result.onlyEmbeddedVideo; onlyEmbeddedVideo = result.onlyEmbeddedVideo;
videoQuality = result.videoQuality; videoQuality = result.videoQuality;
@ -197,8 +197,8 @@ browser.storage.onChanged.addListener((changes) => {
if ("osmInstance" in changes) { if ("osmInstance" in changes) {
osmInstance = changes.osmInstance.newValue || osmDefault; osmInstance = changes.osmInstance.newValue || osmDefault;
} }
if ("redditVersion" in changes) { if ("oldRedditView" in changes) {
redditVersion = changes.redditVersion.newValue || redditDefault; oldRedditView = changes.oldRedditView.newValue || redditDefault;
} }
if ("disableNitter" in changes) { if ("disableNitter" in changes) {
disableNitter = changes.disableNitter.newValue; disableNitter = changes.disableNitter.newValue;
@ -212,8 +212,8 @@ browser.storage.onChanged.addListener((changes) => {
if ("disableOsm" in changes) { if ("disableOsm" in changes) {
disableOsm = changes.disableOsm.newValue; disableOsm = changes.disableOsm.newValue;
} }
if ("disableRedditVersion" in changes) { if ("disableOldReddit" in changes) {
disableRedditVersion = changes.disableRedditVersion.newValue; disableOldReddit = changes.disableOldReddit.newValue;
} }
if ("alwaysProxy" in changes) { if ("alwaysProxy" in changes) {
alwaysProxy = changes.alwaysProxy.newValue; alwaysProxy = changes.alwaysProxy.newValue;
@ -498,23 +498,18 @@ function redirectGoogleMaps(url, initiator) {
} }
function redirectReddit(url, initiator, type) { function redirectReddit(url, initiator, type) {
if (disableRedditVersion || isException(url, initiator)) { if (disableOldReddit || isException(url, initiator)) {
return null; return null;
} }
// Do not redirect old or mobile Reddit versions on normal Reddit links // Do not redirect when already on the selected view
if ( if (initiator && initiator.origin === oldRedditView || url.origin === oldRedditView) {
initiator &&
(initiator.origin === redditVersion ||
redditVersions.includes(initiator.origin) ||
redditVersions.includes(initiator.host))
) {
return null; return null;
} }
// Do not redirect anything other than main_frame // Do not redirect anything other than main_frame
if (type !== "main_frame" || url.pathname.match(redditBypassPaths)) { if (type !== "main_frame" || url.pathname.match(redditBypassPaths)) {
return null; return null;
} }
return `${redditVersion}${url.pathname}${url.search}`; return `${oldRedditView}${url.pathname}${url.search}`;
} }
browser.webRequest.onBeforeRequest.addListener( browser.webRequest.onBeforeRequest.addListener(
@ -543,7 +538,7 @@ browser.webRequest.onBeforeRequest.addListener(
redirect = { redirect = {
redirectUrl: redirectGoogleMaps(url, initiator), redirectUrl: redirectGoogleMaps(url, initiator),
}; };
} else if (redditDomains.includes(url.host)) { } else if (redditDomains.includes(url.host) || oldRedditViews.includes(url.origin)) {
redirect = { redirect = {
redirectUrl: redirectReddit(url, initiator, details.type), redirectUrl: redirectReddit(url, initiator, details.type),
} }

View File

@ -121,22 +121,22 @@
</table> </table>
</section> </section>
<section class="settings-block"> <section class="settings-block">
<table class="option" aria-label="Toggle Reddit version redirects"> <table class="option" aria-label="Toggle old Reddit redirects">
<tbody> <tbody>
<tr> <tr>
<td> <td>
<h1 data-localise="__MSG_disableRedditVersion__"> <h1 data-localise="__MSG_disableOldReddit__">
Reddit Version Redirects Old Reddit Redirects
</h1> </h1>
</td> </td>
<td> <td>
<input <input
aria-hidden="true" aria-hidden="true"
id="disable-reddit-version" id="disable-old-reddit"
type="checkbox" type="checkbox"
checked checked
/>&nbsp; />&nbsp;
<label for="disable-reddit-version" class="checkbox-label"> </label> <label for="disable-old-reddit" class="checkbox-label"> </label>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -184,10 +184,10 @@
</div> </div>
</section> </section>
<section class="settings-block"> <section class="settings-block">
<h1 data-localise="__MSG_redditVersion__">Reddit Version</h1> <h1 data-localise="__MSG_oldRedditView__">Old Reddit View (Desktop or Mobile)</h1>
<div class="autocomplete"> <div class="autocomplete">
<input <input
id="reddit-version" id="old-reddit-view"
type="url" type="url"
placeholder="https://old.reddit.com" placeholder="https://old.reddit.com"
/> />

View File

@ -45,28 +45,28 @@ const bibliogramInstances = [
"https://bibliogram.ggc-project.de", "https://bibliogram.ggc-project.de",
]; ];
const osmInstances = ["https://openstreetmap.org"]; const osmInstances = ["https://openstreetmap.org"];
const redditVersions = [ const oldRedditViews = [
"https://old.reddit.com", "https://old.reddit.com", // desktop
"https://i.reddit.com" "https://i.reddit.com" // mobile
]; ];
const autocompletes = [ const autocompletes = [
{ id: "nitter-instance", instances: nitterInstances }, { id: "nitter-instance", instances: nitterInstances },
{ id: "invidious-instance", instances: invidiousInstances }, { id: "invidious-instance", instances: invidiousInstances },
{ id: "bibliogram-instance", instances: bibliogramInstances }, { id: "bibliogram-instance", instances: bibliogramInstances },
{ id: "osm-instance", instances: osmInstances }, { id: "osm-instance", instances: osmInstances },
{ id: "reddit-version", instances: redditVersions }, { id: "old-reddit-view", instances: oldRedditViews },
]; ];
let nitterInstance = document.getElementById("nitter-instance"); let nitterInstance = document.getElementById("nitter-instance");
let invidiousInstance = document.getElementById("invidious-instance"); let invidiousInstance = document.getElementById("invidious-instance");
let bibliogramInstance = document.getElementById("bibliogram-instance"); let bibliogramInstance = document.getElementById("bibliogram-instance");
let osmInstance = document.getElementById("osm-instance"); let osmInstance = document.getElementById("osm-instance");
let redditVersion = document.getElementById("reddit-version"); let oldRedditView = document.getElementById("old-reddit-view");
let disableNitter = document.getElementById("disable-nitter"); let disableNitter = document.getElementById("disable-nitter");
let disableInvidious = document.getElementById("disable-invidious"); let disableInvidious = document.getElementById("disable-invidious");
let disableBibliogram = document.getElementById("disable-bibliogram"); let disableBibliogram = document.getElementById("disable-bibliogram");
let disableOsm = document.getElementById("disable-osm"); let disableOsm = document.getElementById("disable-osm");
let disableRedditVersion = document.getElementById("disable-reddit-version"); let disableOldReddit = document.getElementById("disable-old-reddit");
let alwaysProxy = document.getElementById("always-proxy"); let alwaysProxy = document.getElementById("always-proxy");
let onlyEmbeddedVideo = document.getElementById("only-embed"); let onlyEmbeddedVideo = document.getElementById("only-embed");
let videoQuality = document.getElementById("video-quality"); let videoQuality = document.getElementById("video-quality");
@ -110,12 +110,12 @@ browser.storage.sync.get(
"invidiousInstance", "invidiousInstance",
"bibliogramInstance", "bibliogramInstance",
"osmInstance", "osmInstance",
"redditVersion", "oldRedditView",
"disableNitter", "disableNitter",
"disableInvidious", "disableInvidious",
"disableBibliogram", "disableBibliogram",
"disableOsm", "disableOsm",
"disableRedditVersion", "disableOldReddit",
"alwaysProxy", "alwaysProxy",
"onlyEmbeddedVideo", "onlyEmbeddedVideo",
"videoQuality", "videoQuality",
@ -136,12 +136,12 @@ browser.storage.sync.get(
invidiousInstance.value = result.invidiousInstance || ""; invidiousInstance.value = result.invidiousInstance || "";
bibliogramInstance.value = result.bibliogramInstance || ""; bibliogramInstance.value = result.bibliogramInstance || "";
osmInstance.value = result.osmInstance || ""; osmInstance.value = result.osmInstance || "";
redditVersion.value = result.redditVersion || ""; oldRedditView.value = result.oldRedditView || "";
disableNitter.checked = !result.disableNitter; disableNitter.checked = !result.disableNitter;
disableInvidious.checked = !result.disableInvidious; disableInvidious.checked = !result.disableInvidious;
disableBibliogram.checked = !result.disableBibliogram; disableBibliogram.checked = !result.disableBibliogram;
disableOsm.checked = !result.disableOsm; disableOsm.checked = !result.disableOsm;
disableRedditVersion.checked = !result.disableRedditVersion; disableOldReddit.checked = !result.disableOldReddit;
alwaysProxy.checked = result.alwaysProxy; alwaysProxy.checked = result.alwaysProxy;
onlyEmbeddedVideo.checked = result.onlyEmbeddedVideo; onlyEmbeddedVideo.checked = result.onlyEmbeddedVideo;
videoQuality.value = result.videoQuality || ""; videoQuality.value = result.videoQuality || "";
@ -284,14 +284,14 @@ let osmInstanceChange = debounce(() => {
}, 500); }, 500);
osmInstance.addEventListener("input", osmInstanceChange); osmInstance.addEventListener("input", osmInstanceChange);
let redditVersionChange = debounce(() => { let oldRedditViewChange = debounce(() => {
if (redditVersion.checkValidity()) { if (oldRedditView.checkValidity()) {
browser.storage.sync.set({ browser.storage.sync.set({
redditVersion: parseURL(redditVersion.value), oldRedditView: parseURL(oldRedditView.value),
}); });
} }
}, 500); }, 500);
redditVersion.addEventListener("input", redditVersionChange); oldRedditView.addEventListener("input", oldRedditViewChange);
disableNitter.addEventListener("change", (event) => { disableNitter.addEventListener("change", (event) => {
browser.storage.sync.set({ disableNitter: !event.target.checked }); browser.storage.sync.set({ disableNitter: !event.target.checked });
@ -309,8 +309,8 @@ disableOsm.addEventListener("change", (event) => {
browser.storage.sync.set({ disableOsm: !event.target.checked }); browser.storage.sync.set({ disableOsm: !event.target.checked });
}); });
disableRedditVersion.addEventListener("change", (event) => { disableOldReddit.addEventListener("change", (event) => {
browser.storage.sync.set({ disableRedditVersion: !event.target.checked }); browser.storage.sync.set({ disableOldReddit: !event.target.checked });
}); });
alwaysProxy.addEventListener("change", (event) => { alwaysProxy.addEventListener("change", (event) => {

View File

@ -117,22 +117,22 @@
</section> </section>
<section class="settings-block"> <section class="settings-block">
<table class="option" aria-label="Toggle Reddit version redirects"> <table class="option" aria-label="Toggle old Reddit redirects">
<tbody> <tbody>
<tr> <tr>
<td> <td>
<h1 data-localise="__MSG_disableRedditVersion__"> <h1 data-localise="__MSG_disableOldReddit__">
Reddit Version Redirects Old Reddit Redirects
</h1> </h1>
</td> </td>
<td> <td>
<input <input
aria-hidden="true" aria-hidden="true"
id="disable-reddit-version" id="disable-old-reddit"
type="checkbox" type="checkbox"
checked checked
/>&nbsp; />&nbsp;
<label for="disable-reddit-version" class="checkbox-label"> </label> <label for="disable-old-reddit" class="checkbox-label"> </label>
</td> </td>
</tr> </tr>
</tbody> </tbody>

View File

@ -4,7 +4,7 @@ let disableNitter = document.querySelector("#disable-nitter");
let disableInvidious = document.querySelector("#disable-invidious"); let disableInvidious = document.querySelector("#disable-invidious");
let disableBibliogram = document.querySelector("#disable-bibliogram"); let disableBibliogram = document.querySelector("#disable-bibliogram");
let disableOsm = document.querySelector("#disable-osm"); let disableOsm = document.querySelector("#disable-osm");
let disableRedditVersion = document.querySelector("#disable-reddit-version"); let disableOldReddit = document.querySelector("#disable-old-reddit");
let version = document.querySelector("#version"); let version = document.querySelector("#version");
window.browser = window.browser || window.chrome; window.browser = window.browser || window.chrome;
@ -15,7 +15,7 @@ browser.storage.sync.get(
"disableInvidious", "disableInvidious",
"disableBibliogram", "disableBibliogram",
"disableOsm", "disableOsm",
"disableRedditVersion", "disableOldReddit",
"theme", "theme",
], ],
(result) => { (result) => {
@ -24,7 +24,7 @@ browser.storage.sync.get(
disableInvidious.checked = !result.disableInvidious; disableInvidious.checked = !result.disableInvidious;
disableBibliogram.checked = !result.disableBibliogram; disableBibliogram.checked = !result.disableBibliogram;
disableOsm.checked = !result.disableOsm; disableOsm.checked = !result.disableOsm;
disableRedditVersion.checked = !result.disableRedditVersion; disableOldReddit.checked = !result.disableOldReddit;
} }
); );
@ -46,8 +46,8 @@ disableOsm.addEventListener("change", (event) => {
browser.storage.sync.set({ disableOsm: !event.target.checked }); browser.storage.sync.set({ disableOsm: !event.target.checked });
}); });
disableRedditVersion.addEventListener("change", (event) => { disableOldReddit.addEventListener("change", (event) => {
browser.storage.sync.set({ disableRedditVersion: !event.target.checked }); browser.storage.sync.set({ disableOldReddit: !event.target.checked });
}); });
document.querySelector("#more-options").addEventListener("click", () => { document.querySelector("#more-options").addEventListener("click", () => {