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

View File

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

View File

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

View File

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

View File

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