189 lines
5.4 KiB
JavaScript
189 lines
5.4 KiB
JavaScript
"use strict";
|
|
|
|
const nitterInstances = [
|
|
"https://nitter.net",
|
|
"https://nitter.snopyta.org",
|
|
"https://nitter.42l.fr",
|
|
"https://nitter.nixnet.services",
|
|
"https://nitter.13ad.de",
|
|
"https://nitter.pussthecat.org",
|
|
"https://nitter.mastodont.cat",
|
|
"https://nitter.dark.fail",
|
|
"https://nitter.tedomum.net",
|
|
"https://nitter.cattube.org",
|
|
"https://nitter.fdn.fr",
|
|
"https://nitter.1d4.us",
|
|
"https://nitter.kavin.rocks",
|
|
"https://tweet.lambda.dance",
|
|
"https://nitter.cc",
|
|
"https://nitter.weaponizedhumiliation.com",
|
|
"https://nitter.vxempire.xyz",
|
|
"https://nitter.unixfox.eu",
|
|
];
|
|
|
|
let disableNitter;
|
|
let nitterInstance;
|
|
let redirectBypassFlag;
|
|
let exceptions;
|
|
|
|
window.browser = window.browser || window.chrome;
|
|
|
|
function getRandomInstance() {
|
|
return nitterInstances[~~(nitterInstances.length * Math.random())];
|
|
}
|
|
|
|
function isNotException(url) {
|
|
return !exceptions.some((regex) => regex.test(url.href));
|
|
}
|
|
|
|
function shouldRedirect(url) {
|
|
return (
|
|
!redirectBypassFlag &&
|
|
isNotException(url) &&
|
|
!disableNitter &&
|
|
url.host !== nitterInstance &&
|
|
!url.pathname.includes("/home")
|
|
);
|
|
}
|
|
|
|
function redirectTwitter(url) {
|
|
if (url.host.split(".")[0] === "pbs") {
|
|
return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`;
|
|
} else if (url.host.split(".")[0] === "video") {
|
|
return `${nitterInstance}/gif/${encodeURIComponent(url.href)}`;
|
|
} else {
|
|
return `${nitterInstance}${url.pathname}${url.search}`;
|
|
}
|
|
}
|
|
|
|
browser.storage.sync.get(
|
|
[
|
|
"nitterInstance",
|
|
"disableNitter",
|
|
"removeTwitterSW",
|
|
"redirectBypassFlag",
|
|
"exceptions",
|
|
],
|
|
(result) => {
|
|
redirectBypassFlag = result.redirectBypassFlag;
|
|
browser.storage.sync.set({
|
|
redirectBypassFlag: false,
|
|
});
|
|
if (!result.removeTwitterSW) {
|
|
disableNitter = result.disableNitter;
|
|
nitterInstance = result.nitterInstance || getRandomInstance();
|
|
exceptions = result.exceptions
|
|
? result.exceptions.map((e) => {
|
|
return new RegExp(e);
|
|
})
|
|
: [];
|
|
navigator.serviceWorker.getRegistrations().then((registrations) => {
|
|
for (let registration of registrations) {
|
|
if (registration.scope === "https://twitter.com/") {
|
|
registration.unregister();
|
|
console.log("Unregistered Twitter SW", registration);
|
|
}
|
|
}
|
|
});
|
|
const url = new URL(window.location);
|
|
if (shouldRedirect(url)) {
|
|
const redirect = redirectTwitter(url);
|
|
console.info("Redirecting", `"${url.href}"`, "=>", `"${redirect}"`);
|
|
window.location = redirect;
|
|
}
|
|
}
|
|
}
|
|
);
|
|
|
|
// Keeping this here until https://bugzilla.mozilla.org/show_bug.cgi?id=1536094 is fixed...
|
|
//
|
|
//"use strict";
|
|
//
|
|
//let disableNitter;
|
|
//let nitterInstance;
|
|
//let redirectBypassFlag;
|
|
//let exceptions;
|
|
//
|
|
//window.browser = window.browser || window.chrome;
|
|
//
|
|
//Promise.all([
|
|
// import(browser.extension.getURL("src/assets/javascripts/helpers/common.js")),
|
|
// import(browser.extension.getURL("src/assets/javascripts/helpers/twitter.js")),
|
|
//]).then(
|
|
// (helpers) => {
|
|
// let commonHelper;
|
|
// let twitterHelper;
|
|
// [commonHelper, twitterHelper] = helpers;
|
|
//
|
|
// function isNotException(url) {
|
|
// return !exceptions.some((regex) => regex.test(url.href));
|
|
// }
|
|
//
|
|
// function shouldRedirect(url) {
|
|
// return (
|
|
// !redirectBypassFlag &&
|
|
// isNotException(url) &&
|
|
// !disableNitter &&
|
|
// url.host !== nitterInstance &&
|
|
// !url.pathname.includes("/home")
|
|
// );
|
|
// }
|
|
//
|
|
// function redirectTwitter(url) {
|
|
// if (url.host.split(".")[0] === "pbs") {
|
|
// return `${nitterInstance}/pic/${encodeURIComponent(url.href)}`;
|
|
// } else if (url.host.split(".")[0] === "video") {
|
|
// return `${nitterInstance}/gif/${encodeURIComponent(url.href)}`;
|
|
// } else {
|
|
// return `${nitterInstance}${url.pathname}${url.search}`;
|
|
// }
|
|
// }
|
|
//
|
|
// browser.storage.sync.get(
|
|
// [
|
|
// "nitterInstance",
|
|
// "disableNitter",
|
|
// "removeTwitterSW",
|
|
// "redirectBypassFlag",
|
|
// "exceptions",
|
|
// ],
|
|
// (result) => {
|
|
// redirectBypassFlag = result.redirectBypassFlag;
|
|
// browser.storage.sync.set({
|
|
// redirectBypassFlag: false,
|
|
// });
|
|
// if (!result.removeTwitterSW) {
|
|
// disableNitter = result.disableNitter;
|
|
// nitterInstance =
|
|
// result.nitterInstance ||
|
|
// commonHelper.default.getRandomInstance(
|
|
// twitterHelper.default.redirects
|
|
// );
|
|
// exceptions = result.exceptions
|
|
// ? result.exceptions.map((e) => {
|
|
// return new RegExp(e);
|
|
// })
|
|
// : [];
|
|
// navigator.serviceWorker.getRegistrations().then((registrations) => {
|
|
// for (let registration of registrations) {
|
|
// if (registration.scope === "https://twitter.com/") {
|
|
// registration.unregister();
|
|
// console.log("Unregistered Twitter SW", registration);
|
|
// }
|
|
// }
|
|
// });
|
|
// const url = new URL(window.location);
|
|
// if (shouldRedirect(url)) {
|
|
// const redirect = redirectTwitter(url);
|
|
// console.info("Redirecting", `"${url.href}"`, "=>", `"${redirect}"`);
|
|
// window.location = redirect;
|
|
// }
|
|
// }
|
|
// }
|
|
// );
|
|
// },
|
|
// (error) => {
|
|
// console.error(error);
|
|
// }
|
|
//);
|