Added theme support to many frontends #80. Fixed bugs

This commit is contained in:
ManeraKai 2022-03-10 14:22:23 +03:00
parent 09c9a67337
commit 406eef83e0
No known key found for this signature in database
GPG Key ID: 5ABC31FFD562E337
13 changed files with 249 additions and 88 deletions

View File

@ -5,7 +5,7 @@ import instagramHelper from "./instagram.js";
import mediumHelper from "./medium.js";
import redditHelper from "./reddit.js";
import searchHelper from "./search.js";
import translateHelper from "./translate.js";
import translateHelper from "./translate/translate.js";
import wikipediaHelper from "./wikipedia.js";
function getRandomInstance(instances) {

View File

@ -187,8 +187,49 @@ function setBypassWatchOnReddit(val) {
console.log("bypassWatchOnReddit: ", bypassWatchOnReddit)
}
let alwaysUsePreferred;
let theme;
let applyThemeToSites;
function initLibredditCookies() {
if (applyThemeToSites && theme != 'DEFAULT') {
let allInstances = [...redirects.libreddit.normal, ...redirects.libreddit.tor, ...libredditNormalCustomRedirects, ...libredditTorCustomRedirects]
let checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects, ...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]
for (const instanceUrl of allInstances)
if (!checkedInstances.includes(instanceUrl))
browser.cookies.remove({
url: instanceUrl,
name: "theme",
})
for (const instanceUrl of checkedInstances)
browser.cookies.set({
url: instanceUrl,
name: "theme",
value: theme
})
}
}
function initTedditCookies() {
let themeValue;
if (theme == 'light') themeValue = 'white';
if (theme == 'dark') themeValue = 'dark';
if (applyThemeToSites && themeValue) {
let allInstances = [...redirects.teddit.normal, ...redirects.teddit.tor, ...tedditNormalCustomRedirects, ...tedditTorCustomRedirects]
let checkedInstances = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects, ...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]
for (const instanceUrl of allInstances)
if (!checkedInstances.includes(instanceUrl))
browser.cookies.remove({
url: instanceUrl,
name: "theme",
})
for (const instanceUrl of checkedInstances)
browser.cookies.set({
url: instanceUrl,
name: "theme",
value: themeValue
})
}
}
let alwaysUsePreferred;
// https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4
// https://libreddit.exonip.de/img/4v3t1vgvrzk81.png
@ -201,6 +242,7 @@ let alwaysUsePreferred;
// https://v.redd.it/z08avb339n801/DASH_1_2_M
// https://i.redd.it/bfkhs659tzk81.jpg
function redirect(url, type, initiator) {
if (disableReddit) return null;
@ -381,35 +423,44 @@ async function init() {
"tedditTorRedirectsChecks",
"tedditTorCustomRedirects",
"theme",
"applyThemeToSites",
"redditProtocol",
"bypassWatchOnReddit",
"alwaysUsePreferred",
], (result) => {
disableReddit = result.disableReddit ?? false;
protocol = result.redditProtocol ?? 'normal';
frontend = result.redditFrontend ?? 'libreddit';
], r => {
disableReddit = r.disableReddit ?? false;
protocol = r.redditProtocol ?? 'normal';
frontend = r.redditFrontend ?? 'libreddit';
bypassWatchOnReddit = result.bypassWatchOnReddit ?? true;
bypassWatchOnReddit = r.bypassWatchOnReddit ?? true;
alwaysUsePreferred = result.alwaysUsePreferred ?? false;
alwaysUsePreferred = r.alwaysUsePreferred ?? false;
redirects.teddit = dataJson.teddit;
if (result.redditRedirects) redirects = result.redditRedirects;
if (r.redditRedirects) redirects = r.redditRedirects;
if (result.redditRedirects) redirects = result.redditRedirects;
if (r.redditRedirects) redirects = r.redditRedirects;
libredditNormalRedirectsChecks = result.libredditNormalRedirectsChecks ?? [...redirects.libreddit.normal];
libredditNormalCustomRedirects = result.libredditNormalCustomRedirects ?? [];
theme = r.theme ?? 'DEFAULT';
applyThemeToSites = r.applyThemeToSites ?? false;
libredditTorRedirectsChecks = result.libredditTorRedirectsChecks ?? [...redirects.libreddit.tor];
libredditTorCustomRedirects = result.libredditTorCustomRedirects ?? [];
libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks ?? [...redirects.libreddit.normal];
libredditNormalCustomRedirects = r.libredditNormalCustomRedirects ?? [];
tedditNormalRedirectsChecks = result.tedditNormalRedirectsChecks ?? [...redirects.teddit.normal];
tedditNormalCustomRedirects = result.tedditNormalCustomRedirects ?? [];
libredditTorRedirectsChecks = r.libredditTorRedirectsChecks ?? [...redirects.libreddit.tor];
libredditTorCustomRedirects = r.libredditTorCustomRedirects ?? [];
tedditTorRedirectsChecks = result.tedditTorRedirectsChecks ?? [...redirects.teddit.tor];
tedditTorCustomRedirects = result.tedditTorCustomRedirects ?? [];
tedditNormalRedirectsChecks = r.tedditNormalRedirectsChecks ?? [...redirects.teddit.normal];
tedditNormalCustomRedirects = r.tedditNormalCustomRedirects ?? [];
tedditTorRedirectsChecks = r.tedditTorRedirectsChecks ?? [...redirects.teddit.tor];
tedditTorCustomRedirects = r.tedditTorCustomRedirects ?? [];
initLibredditCookies();
initTedditCookies();
resolve();
}
@ -457,6 +508,8 @@ export default {
getTedditTorCustomRedirects,
setTedditTorCustomRedirects,
initLibredditCookies,
redirect,
init,
changeInstance,

View File

@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
const targets = [
/^https?:\/\/(www\.|search\.|)google\.com(\...|)(\/search\?q=..*|\/$)/,
/^https?:\/\/(www\.|search\.|)google\.com(\...|)/,
/^https?:\/\/libredirect\.onion/
// /^https?:\/\/yandex\.com(\...|)(\/search\/..*|\/$)/,
];
@ -158,6 +158,41 @@ function setProtocol(val) {
console.log("searchProtocol: ", val)
}
let theme;
let applyThemeToSites;
function initSearxCookies() {
let themeValue;
if (theme == 'light') themeValue = 'logicodev';
if (theme == 'dark') themeValue = 'logicodev-dark';
if (applyThemeToSites && themeValue) {
let allInstances = [...redirects.searx.normal, ...redirects.searx.tor, ...searxNormalCustomRedirects, ...searxTorCustomRedirects]
let checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects, ...searxTorRedirectsChecks, ...searxTorCustomRedirects]
for (const instanceUrl of allInstances)
if (!checkedInstances.includes(instanceUrl)) {
browser.cookies.remove({
url: instanceUrl,
name: "oscar-style",
})
browser.cookies.remove({
url: instanceUrl,
name: "oscar",
})
}
for (const instanceUrl of checkedInstances) {
browser.cookies.set({
url: instanceUrl,
name: "oscar-style",
value: themeValue
})
browser.cookies.set({
url: instanceUrl,
name: "theme",
value: 'oscar'
})
}
}
}
function redirect(url) {
if (disable) return;
if (!targets.some((rx) => rx.test(url.href))) return;
@ -184,13 +219,12 @@ function redirect(url) {
randomInstance = redirects.startpage.normal;
path = "/do/search";
}
if (url.pathname == '/') path = '/';
let searchQuery = "";
url.search.slice(1).split("&").forEach((input) => {
if (input.startsWith("q=")) searchQuery = input;
});
if (url.searchParams.has('q')) searchQuery = `?q=${url.searchParams.get('q')}`;
return `${randomInstance}${path}?${searchQuery}`;
return `${randomInstance}${path}${searchQuery}`;
}
function changeInstance(url) {
@ -254,30 +288,38 @@ async function init() {
"searxTorRedirectsChecks",
"searxTorCustomRedirects",
"theme",
"applyThemeToSites",
"searchProtocol",
],
(result) => {
disable = result.disableSearch ?? false;
r => {
disable = r.disableSearch ?? false;
protocol = result.searchProtocol ?? 'normal';
protocol = r.searchProtocol ?? 'normal';
frontend = result.searchFrontend ?? 'searx';
frontend = r.searchFrontend ?? 'searx';
theme = r.theme ?? 'DEFAULT';
applyThemeToSites = r.applyThemeToSites ?? false;
redirects.searx = dataJson.searx;
redirects.whoogle = dataJson.whoogle;
if (result.searchRedirects) redirects = result.searchRedirects;
if (r.searchRedirects) redirects = r.searchRedirects;
whoogleNormalRedirectsChecks = result.whoogleNormalRedirectsChecks ?? [...redirects.whoogle.normal];
whoogleNormalCustomRedirects = result.whoogleNormalCustomRedirects ?? [];
whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks ?? [...redirects.whoogle.normal];
whoogleNormalCustomRedirects = r.whoogleNormalCustomRedirects ?? [];
whoogleTorRedirectsChecks = result.whoogleTorRedirectsChecks ?? [...redirects.whoogle.tor];
whoogleTorCustomRedirects = result.whoogleTorCustomRedirects ?? [];
whoogleTorRedirectsChecks = r.whoogleTorRedirectsChecks ?? [...redirects.whoogle.tor];
whoogleTorCustomRedirects = r.whoogleTorCustomRedirects ?? [];
searxNormalRedirectsChecks = result.searxNormalRedirectsChecks ?? [...redirects.searx.normal];
searxNormalCustomRedirects = result.searxNormalCustomRedirects ?? [];
searxNormalRedirectsChecks = r.searxNormalRedirectsChecks ?? [...redirects.searx.normal];
searxNormalCustomRedirects = r.searxNormalCustomRedirects ?? [];
searxTorRedirectsChecks = result.searxTorRedirectsChecks ?? [...redirects.searx.tor];
searxTorCustomRedirects = result.searxTorCustomRedirects ?? [];
searxTorRedirectsChecks = r.searxTorRedirectsChecks ?? [...redirects.searx.tor];
searxTorCustomRedirects = r.searxTorCustomRedirects ?? [];
initSearxCookies()
resolve();
}

View File

@ -0,0 +1,18 @@
window.browser = window.browser || window.chrome;
browser.storage.local.get(
[
"theme",
"applyThemeToSites",
],
r => {
let applyThemeToSites = r.applyThemeToSites ?? false;
let theme = r.theme ?? "DEFAULT";
if (applyThemeToSites && theme != "DEFAULT") localStorage.setItem("chakra-ui-color-mode", r.theme);
}
)
window.onunload = () => {
localStorage.removeItem("chakra-ui-color-mode");
};

View File

@ -1,6 +1,6 @@
window.browser = window.browser || window.chrome;
import commonHelper from './common.js'
import commonHelper from '../common.js'
const targets = [
"translate.google.com",
@ -184,12 +184,56 @@ function setSimplyTranslateEngine(val) {
console.log("simplyTranslateEngine: ", val)
}
function isTranslate(url, initiator) {
if (disable) return false;
return targets.includes(url.host)
function isTranslateRedirects(url, type, frontend) {
let protocolHost = `${url.protocol}//${url.host}`;
if (type !== "main_frame") return false;
if (frontend == 'simplyTranslate')
return [
...redirects.simplyTranslate.normal,
...redirects.simplyTranslate.tor,
...simplyTranslateNormalCustomRedirects,
...simplyTranslateTorCustomRedirects,
].includes(protocolHost);
if (frontend == 'lingva')
return [
...redirects.lingva.normal,
...redirects.lingva.tor,
...lingvaNormalCustomRedirects,
...lingvaTorCustomRedirects,
].includes(protocolHost);
return [
...redirects.simplyTranslate.normal,
...redirects.simplyTranslate.tor,
...simplyTranslateNormalCustomRedirects,
...simplyTranslateTorCustomRedirects,
...redirects.lingva.normal,
...redirects.lingva.tor,
...lingvaNormalCustomRedirects,
...lingvaTorCustomRedirects,
].includes(protocolHost);
}
function initLingvaLocalStorage(tabId) {
browser.tabs.executeScript(
tabId,
{
file: "/assets/javascripts/helpers/translate/lingva-preferences.js",
runAt: "document_start"
}
);
}
function redirect(url) {
if (disable) return;
if (!targets.includes(url.host)) return
let params_arr = url.search.split('&');
params_arr[0] = params_arr[0].substring(1);
let myMap = {};
@ -212,8 +256,6 @@ function redirect(url) {
if (simplyTranslateEngine != "DEFAULT") url.searchParams.append("engine", simplyTranslateEngine);
return `${randomInstance}/${url.search}`
}
}
else if (frontend == 'lingva') {
let instancesList;
@ -330,8 +372,6 @@ export default {
setSimplyTranslateRedirects,
setLingvaRedirects,
isTranslate,
getDisable,
setDisable,
@ -369,6 +409,9 @@ export default {
getLingvaTorCustomRedirects,
setLingvaTorCustomRedirects,
isTranslateRedirects,
initLingvaLocalStorage,
redirect,
init,
changeInstance,

View File

@ -203,11 +203,11 @@ function initNitterCookies() {
let themeValue;
if (theme == 'light') themeValue = 'Twitter';
if (theme == 'dark') themeValue = 'Twitter Dark';
if (applyThemeToSites && themeValue != 'DEFAULT') {
if (applyThemeToSites && themeValue) {
let allInstances = [...redirects.nitter.normal, ...redirects.nitter.tor, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects]
let checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects, ...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
for (const item of allInstances)
if (!checkedInstances.includes(item))
for (const instanceUrl of allInstances)
if (!checkedInstances.includes(instanceUrl))
browser.cookies.remove({
url: instanceUrl,
name: "theme",

View File

@ -95,12 +95,36 @@ function setWikilessTorCustomRedirects(val) {
console.log("wikilessTorCustomRedirects: ", val)
}
function isWikipedia(url, initiator) {
if (disable) return false;
return targets.test(url.href);
let theme;
let applyThemeToSites;
function initWikilessCookies() {
console.log("applyThemeToSites", applyThemeToSites)
let themeValue;
if (theme == 'light') themeValue = 'white';
if (theme == 'dark') themeValue = 'dark';
console.log("themeValue", themeValue)
if (applyThemeToSites && themeValue) {
let allInstances = [...redirects.wikiless.normal, ...redirects.wikiless.tor, ...wikilessNormalCustomRedirects, ...wikilessTorCustomRedirects]
let checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects, ...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects]
for (const instanceUrl of allInstances)
if (!checkedInstances.includes(instanceUrl))
browser.cookies.remove({
url: instanceUrl,
name: "theme",
})
for (const instanceUrl of checkedInstances)
browser.cookies.set({
url: instanceUrl,
name: "theme",
value: themeValue
})
}
}
function redirect(url) {
if (disable) return;
if (!targets.test(url.href)) return;
let GETArguments = [];
if (url.search.length > 0) {
let search = url.search.substring(1); //get rid of '?'
@ -172,7 +196,11 @@ async function init() {
"wikilessTorRedirectsChecks",
"wikilessNormalCustomRedirects",
"wikilessTorCustomRedirects",
"wikipediaProtocol"
"wikipediaProtocol",
"theme",
"applyThemeToSites",
], r => { // r = result
disable = r.disableWikipedia ?? false;
@ -187,6 +215,11 @@ async function init() {
wikilessTorRedirectsChecks = r.wikilessTorRedirectsChecks ?? [...redirects.wikiless.tor];
wikilessTorCustomRedirects = r.wikilessTorCustomRedirects ?? [];
theme = r.theme ?? 'DEFAULT';
applyThemeToSites = r.applyThemeToSites ?? false;
initWikilessCookies();
resolve();
}
);
@ -215,8 +248,9 @@ export default {
getWikilessTorCustomRedirects,
setWikilessTorCustomRedirects,
initWikilessCookies,
redirect,
isWikipedia,
init,
changeInstance,
};

View File

@ -1,27 +0,0 @@
window.browser = window.browser || window.chrome;
function getCookie() {
for (const c of document.cookie.split(";")) {
while (c.charAt(0) == " ") c = c.substring(1, c.length);
if (c.indexOf("PREFS=") == 0)
return JSON.parse(
decodeURIComponent(c.substring("PREFS=".length, c.length))
);
}
return {};
}
browser.storage.local.get(
[
"invidiousAlwaysProxy",
"invidiousSubtitles",
"invidiousPlayerStyle",
"youtubeVolume",
"youtubeAutoplay",
"OnlyEmbeddedVideo",
"theme",
"invidiousVideoQuality",
],
r => {
}
)

View File

@ -559,8 +559,6 @@ function initPipedMaterialLocalStorage(tabId) {
let applyThemeToSites;
function initInvidiousCookies() {
console.log("initInvidiousCookies");
let prefs = {};
if (invidiousAlwaysProxy != "DEFAULT") prefs.local = invidiousAlwaysProxy == 'true';
if (invidiousVideoQuality != "DEFAULT") prefs.quality = invidiousVideoQuality;

View File

@ -38,7 +38,7 @@
},
"web_accessible_resources": [
"assets/javascripts/helpers/youtube/piped-preferences.js",
"assets/javascripts/helpers/youtube/pipedMaterial-preferences.js"
"/assets/javascripts/helpers/translate/lingva-preferences.js"
],
"chrome_settings_overrides": {
"homepage": "https://libredirect.onion",

View File

@ -5,7 +5,7 @@ import twitterHelper from "../../assets/javascripts/helpers/twitter.js";
import instagramHelper from "../../assets/javascripts/helpers/instagram.js";
import redditHelper from "../../assets/javascripts/helpers/reddit.js";
import searchHelper from "../../assets/javascripts/helpers/search.js";
import translateHelper from "../../assets/javascripts/helpers/translate.js";
import translateHelper from "../../assets/javascripts/helpers/translate/translate.js";
import mapsHelper from "../../assets/javascripts/helpers/maps.js";
import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js";
import mediumHelper from "../../assets/javascripts/helpers/medium.js";
@ -74,11 +74,11 @@ browser.webRequest.onBeforeRequest.addListener(
if (!newUrl) newUrl = sendTargetsHelper.redirect(url, details.type, initiator);
if (translateHelper.isTranslate(url, initiator)) newUrl = translateHelper.redirect(url);
if (!newUrl) newUrl = translateHelper.redirect(url);
if (!newUrl) newUrl = searchHelper.redirect(url)
if (wikipediaHelper.isWikipedia(url, initiator)) newUrl = wikipediaHelper.redirect(url);
if (!newUrl) newUrl = wikipediaHelper.redirect(url);
if (generalHelper.isException(url, initiator)) newUrl = null;
@ -115,7 +115,6 @@ browser.tabs.onRemoved.addListener((tabId) => {
browser.webRequest.onResponseStarted.addListener(
details => {
console.log("onResponseStarted");
let autoRedirect = generalHelper.getAutoRedirect();
if (!autoRedirect) return null;
@ -158,6 +157,7 @@ browser.tabs.onUpdated.addListener(
try { url = new URL(changeInfo.url); }
catch (_) { return }
if (youtubeHelper.isPipedorInvidious(url, 'main_frame', 'piped')) youtubeHelper.initPipedLocalStorage(tabId);
if (translateHelper.isTranslateRedirects(url, 'main_frame', 'lingva')) translateHelper.initLingvaLocalStorage(tabId);
if (instagramHelper.isBibliogram(url)) instagramHelper.initBibliogramCookies(url);
// if (changeInfo.url && youtubeHelper.isPipedorInvidious(url, 'main_frame', 'pipedMaterial')) youtubeHelper.initPipedMaterialLocalStorage(tabId);
});

View File

@ -1,4 +1,4 @@
import translateHelper from "../../../assets/javascripts/helpers/translate.js";
import translateHelper from "../../../assets/javascripts/helpers/translate/translate.js";
import commonHelper from "../../../assets/javascripts/helpers/common.js";
let disableElement = document.getElementById("disable-simplyTranslate");

View File

@ -9,7 +9,7 @@ import instagramHelper from "../../assets/javascripts/helpers/instagram.js";
import mapsHelper from "../../assets/javascripts/helpers/maps.js";
import redditHelper from "../../assets/javascripts/helpers/reddit.js";
import searchHelper from "../../assets/javascripts/helpers/search.js";
import translateHelper from "../../assets/javascripts/helpers/translate.js";
import translateHelper from "../../assets/javascripts/helpers/translate/translate.js";
import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js";
import mediumHelper from "../../assets/javascripts/helpers/medium.js";
import imgurHelper from "../../assets/javascripts/helpers/imgur.js";