Cleaning code

This commit is contained in:
ManeraKai 2022-02-06 05:58:42 +03:00
parent d4f82a7fc5
commit 2876cb24b3
No known key found for this signature in database
GPG Key ID: 5ABC31FFD562E337
22 changed files with 58 additions and 643 deletions

View File

@ -1,12 +1,5 @@
"use strict";
let exceptions;
function setExceptions(val) {
exceptions = val;
browser.storage.sync.set({ exceptions })
};
let theme;
function setTheme(val) {
theme = val;
@ -17,5 +10,4 @@ export default {
exceptions,
theme,
setTheme,
setExceptions,
}

View File

@ -10,11 +10,6 @@ import wikipediaHelper from "./wikipedia.js";
import mapsHelper from "./maps.js";
import medium from "./medium.js";
function addHttps(instances) {
return instances.map((item, i) => "https://" + item)
}
function getRandomInstance(instances) {
return instances[~~(instances.length * Math.random())];
}
@ -51,72 +46,12 @@ function updateInstances() {
return false;
}
function debounce(func, wait, immediate) {
let timeout;
return () => {
let context = this,
args = arguments;
let later = () => {
timeout = null;
if (!immediate) func.apply(context, args);
};
let callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}
function validURL(str) {
var pattern = new RegExp('^(https?:\\/\\/)?' + // protocol
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // domain name
'((\\d{1,3}\\.){3}\\d{1,3}))' + // OR ip (v4) address
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // port and path
'(\\?[;&a-z\\d%_.~+=-]*)?' + // query string
'(\\#[-a-z\\d_]*)?$', 'i'); // fragment locator
return !!pattern.test(str);
}
function filterList(oldList) {
oldList.filter((x) => x.trim() != "");
let newList = [];
oldList.forEach((c) => {
if (!newList.includes(c.trim()))
newList.push(c.trim());
});
newList = newList.filter(validURL)
return newList;
}
function updateListElement(listElement, list) {
while (listElement.firstChild)
listElement.removeChild(listElement.firstChild);
list.forEach(element => {
let entry = document.createElement('li');
entry.appendChild(document.createTextNode(element));
listElement.appendChild(entry);
});
}
function isFirefox() {
return typeof InstallTrigger !== "undefined";
}
function isException(url, initiator) {
return (
data.exceptions.some((regex) => regex.test(url.href)) ||
(initiator && data.exceptions.some((regex) => regex.test(initiator.href)))
);
}
export default {
getRandomInstance,
updateInstances,
addHttps,
debounce,
validURL,
filterList,
updateListElement,
isFirefox,
isException,
};

View File

@ -60,37 +60,23 @@ function setDisableInstagram(val) {
browser.storage.sync.set({ disableInstagram })
}
let bibliogramInstance;
const getBibliogramInstance = () => bibliogramInstance;
function setBibliogramInstance(val) {
bibliogramInstance = val;
browser.storage.sync.set({ bibliogramInstance })
};
function redirect(url, initiator, type) {
if (disableInstagram)
return null;
// Do not redirect Bibliogram view on Instagram links
if (
initiator &&
(initiator.origin === bibliogramInstance || redirects.normal.includes(initiator.origin) || targets.includes(initiator.host))
)
if (initiator && (redirects.normal.includes(initiator.origin) || targets.includes(initiator.host)))
return null;
// Do not redirect /accounts, /embeds.js, or anything other than main_frame
if (type !== "main_frame" || url.pathname.match(bypassPaths))
return null;
return 'CANCEL';
let link = commonHelper.getRandomInstance(redirects.normal);
if (
url.pathname === "/" ||
instagramReservedPaths.includes(url.pathname.split("/")[1])
)
if (url.pathname === "/" || instagramReservedPaths.includes(url.pathname.split("/")[1]))
return `${link}${url.pathname}${url.search}`;
else
// Likely a user profile, redirect to '/u/...'
return `${link}/u${url.pathname}${url.search}`;
return `${link}/u${url.pathname}${url.search}`; // Likely a user profile, redirect to '/u/...'
}
function isInstagram(url) {
@ -100,11 +86,9 @@ function isInstagram(url) {
async function init() {
let result = await browser.storage.sync.get([
"disableInstagram",
"bibliogramInstance",
"instagramRedirects"
])
disableInstagram = result.disableInstagram ?? false;
bibliogramInstance = result.bibliogramInstance;
if (result.instagramRedirects)
redirects = result.instagramRedirects
}
@ -114,8 +98,6 @@ export default {
setRedirects,
getDisableInstagram,
setDisableInstagram,
getBibliogramInstance,
setBibliogramInstance,
isInstagram,
redirect,
init,

View File

@ -54,13 +54,6 @@ function setDisableMaps(val) {
browser.storage.sync.set({ disableMaps })
}
let osmInstance;
const getOsmInstance = () => osmInstance;
function setOsmInstance(val) {
osmInstance = val;
browser.storage.sync.set({ osmInstance })
}
function redirect(url, initiator) {
if (disableMaps) return null;
@ -82,8 +75,7 @@ function redirect(url, initiator) {
params = "&zoom=17";
// Set map layer
params = `${params}&layers=${layers[url.searchParams.get("layer")] || layers["none"]
}`;
params = `${params}&layers=${layers[url.searchParams.get("layer")] || layers["none"]}`;
// Handle Google Maps Embed API
if (url.pathname.split("/").includes("embed")) {
let query = "";
@ -93,8 +85,7 @@ function redirect(url, initiator) {
try {
query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1];
} catch (error) {
console.error(error);
// Unable to find map marker in URL.
console.error(error); // Unable to find map marker in URL.
}
}
let marker, bbox;
@ -145,18 +136,14 @@ function isMaps(url) {
async function init() {
let result = await browser.storage.sync.get([
"disableMaps",
"osmInstance",
])
disableMaps = result.disableMaps ?? false;
osmInstance = result.osmInstance;
}
export default {
addressToLatLng,
getDisableMaps,
setDisableMaps,
getOsmInstance,
setOsmInstance,
redirect,
isMaps,
init,

View File

@ -39,12 +39,6 @@ function setDisableMedium(val) {
}
let scribeInstance;
const getScribeInstance = () => scribeInstance;
function setScribeInstance(val) {
scribeInstance = val;
browser.storage.sync.set({ scribeInstance })
};
function redirect(url, initiator) {
if (disableMedium) return null;
@ -52,13 +46,8 @@ function redirect(url, initiator) {
if (url.pathname == "/") return null;
if (
commonHelper.isFirefox() &&
initiator &&
(
initiator.origin === scribeInstance ||
redirects.normal.includes(initiator.origin) ||
targets.includes(initiator.host)
)
commonHelper.isFirefox() && initiator &&
(redirects.normal.includes(initiator.origin) || targets.includes(initiator.host))
) {
browser.storage.sync.set({ redirectBypassFlag: true });
return null;
@ -73,11 +62,9 @@ function isMedium(url) {
async function init() {
let result = await browser.storage.sync.get([
"disableMedium",
"scribeInstance",
"mediumRedirects"
])
disableMedium = result.disableMedium ?? false;
scribeInstance = result.scribeInstance;
if (result.mediumRedirects)
redirects = result.mediumRedirects;
}
@ -91,9 +78,6 @@ export default {
getDisableMedium,
setDisableMedium,
getScribeInstance,
setScribeInstance,
redirect,
isMedium,
init,

View File

@ -79,12 +79,6 @@ function setDisableReddit(val) {
disableReddit = val;
browser.storage.sync.set({ disableReddit })
}
let redditInstance;
const getRedditInstance = () => redditInstance;
function setRedditInstance(val) {
redditInstance = val;
browser.storage.sync.set({ redditInstance })
};
let redditFrontend;
const getRedditFrontend = () => redditFrontend;
@ -99,8 +93,8 @@ function redirect(url, initiator, type) {
return null;
// Do not redirect when already on the selected view
if ((initiator && initiator.origin === redditInstance) || url.origin === redditInstance)
return null;
// if ((initiator && initiator.origin === redditInstance) || url.origin === redditInstance)
// return null;
// Do not redirect exclusions nor anything other than main_frame
@ -140,12 +134,10 @@ function isReddit(url) {
async function init() {
let result = await browser.storage.sync.get([
"disableReddit",
"redditInstance",
"redditFrontend",
"redditRedirects"
])
disableReddit = result.disableReddit ?? false;
redditInstance = result.redditInstance;
redditFrontend = result.redditFrontend ?? 'libreddit';
if (result.redditRedirects)
redirects = result.redditRedirects;
@ -160,9 +152,6 @@ export default {
getDisableReddit,
setDisableReddit,
getRedditInstance,
setRedditInstance,
getRedditFrontend,
setRedditFrontend,

View File

@ -6,7 +6,7 @@ const targets = [
/https?:\/\/(((www|maps)\.)?(google\.).*(\/search)|search\.(google\.).*)/
];
let redirects = {
"searx": {
"searx": {
"normal": [
"https://a.searx.space",
"https://anon.sx",
@ -137,7 +137,7 @@ let redirects = {
"http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p"
]
},
"whoogle": {
"whoogle": {
"normal": [
"https://s.alefvanoon.xyz",
"https://search.albony.xyz",
@ -164,8 +164,6 @@ function setWhoogleRedirects(val) {
console.log("whoogleRedirects:", val)
}
let disableSearch;
const getDisableSearch = () => disableSearch;
function setDisableSearch(val) {
@ -174,13 +172,6 @@ function setDisableSearch(val) {
console.log("disableSearch: ", disableSearch)
}
let searchInstance;
const getSearchInstance = () => searchInstance;
function setSearchInstance(val) {
searchInstance = val;
browser.storage.sync.set({ searchInstance })
};
let searchFrontend;
const getSearchFrontend = () => searchFrontend;
function setSearchFrontend(val) {
@ -208,7 +199,6 @@ function redirect(url, initiator) {
url.search.slice(1).split("&").forEach(function (input) {
if (input.startsWith("q=")) searchQuery = input;
});
console.log("Will return");
return `${instance}${path}?${searchQuery}`;
}
@ -219,12 +209,10 @@ function isSearch(url) {
async function init() {
let result = await browser.storage.sync.get([
"disableSearch",
"searchInstance",
"searchFrontend",
"searchRedirects",
])
disableSearch = result.disableSearch ?? false;
searchInstance = result.searchInstance;
searchFrontend = result.searchFrontend ?? 'searx';
if (result.searchRedirects)
redirects = result.searchRedirects;
@ -241,9 +229,6 @@ export default {
getDisableSearch,
setDisableSearch,
getSearchInstance,
setSearchInstance,
getSearchFrontend,
setSearchFrontend,

View File

@ -35,6 +35,7 @@ let redirects = {
}
};
const getRedirects = () => redirects;
function setSimplyTranslateRedirects(val) {
@ -57,13 +58,6 @@ function setDisableTranslate(val) {
console.log("disableTranslate: ", disableTranslate)
}
let simplyTranslateInstance;
const getSimplyTranslateInstance = () => simplyTranslateInstance;
function setSimplyTranslateInstance(val) {
simplyTranslateInstance = val;
browser.storage.sync.set({ simplyTranslateInstance })
};
let translateFrontend;
const getFrontend = () => translateFrontend;
function setFrontend(val) {
@ -108,12 +102,10 @@ function isTranslate(url) {
async function init() {
let result = await browser.storage.sync.get([
"disableTranslate",
"simplyTranslateInstance",
"translateFrontend",
"translateRedirects"
]);
disableTranslate = result.disableTranslate ?? false;
simplyTranslateInstance = result.simplyTranslateInstance;
translateFrontend = result.translateFrontend ?? "simplyTransalte";
if (result.translateRedirects)
redirects = result.translateRedirects
@ -123,18 +115,15 @@ export default {
getRedirects,
setSimplyTranslateRedirects,
setLingvaRedirects,
isTranslate,
getDisableTranslate,
setDisableTranslate,
getSimplyTranslateInstance,
setSimplyTranslateInstance,
getFrontend,
setFrontend,
redirect,
init,
};

View File

@ -12,11 +12,7 @@ const targets = [
"pbs.twimg.com",
"video.twimg.com",
];
/*
Please remember to also update the
src/assets/javascripts/remove-twitter-sw.js file
(const nitterInstances) when updating this list:
*/
let redirects = {
"normal": [
"https://nitter.net",
@ -93,12 +89,6 @@ function setDisableTwitter(val) {
browser.storage.sync.set({ disableTwitter })
}
let nitterInstance;
const getNitterInstance = () => nitterInstance;
function setNitterInstance(val) {
nitterInstance = val;
browser.storage.sync.set({ nitterInstance })
}
function redirect(url, initiator) {
if (disableTwitter)
@ -110,11 +100,7 @@ function redirect(url, initiator) {
if (
commonHelper.isFirefox() &&
initiator &&
(
initiator.origin === nitterInstance ||
redirects.normal.includes(initiator.origin) ||
targets.includes(initiator.host)
)
(redirects.normal.includes(initiator.origin) || targets.includes(initiator.host))
) {
browser.storage.sync.set({ redirectBypassFlag: true });
return null;
@ -138,11 +124,9 @@ function isTwitter(url) {
async function init() {
let result = await browser.storage.sync.get([
"disableTwitter",
"nitterInstance",
"twitterRedirects"
]);
disableTwitter = result.disableTwitter ?? false;
nitterInstance = result.nitterInstance;
if (result.twitterRedirects)
redirects = result.twitterRedirects;
}
@ -154,9 +138,6 @@ export default {
getDisableTwitter,
setDisableTwitter,
getNitterInstance,
setNitterInstance,
redirect,
isTwitter,
init,

View File

@ -27,13 +27,6 @@ function setDisableWikipedia(val) {
browser.storage.sync.set({ disableWikipedia })
}
let wikipediaInstance;
const getWikipediaInstance = () => wikipediaInstance;
function setWikipediaInstance(val) {
wikipediaInstance = val;
browser.storage.sync.set({ wikipediaInstance })
};
function redirect(url, initiator) {
if (disableWikipedia) return null;
@ -46,7 +39,7 @@ function redirect(url, initiator) {
GETArguments.push([args[0], args[1]]);
}
}
let instance = wikipediaInstance ?? commonHelper.getRandomInstance(redirects.normal)
let instance = commonHelper.getRandomInstance(redirects.normal)
let link = `${instance}${url.pathname}`;
let urlSplit = url.host.split(".");
if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") {
@ -55,7 +48,7 @@ function redirect(url, initiator) {
else GETArguments.push(["lang", urlSplit[0]]);
if (urlSplit[1] == "m")
GETArguments.push(["mobileaction", "toggle_view_mobile"]);
//wikiless doesn't have mobile view support yet
// wikiless doesn't have mobile view support yet
}
for (let i = 0; i < GETArguments.length; i++)
link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1];
@ -76,11 +69,9 @@ function isWikipedia(url) {
async function init() {
let result = await browser.storage.sync.get([
"disableWikipedia",
"wikipediaInstance",
"wikipediaRedirects"
]);
disableWikipedia = result.disableWikipedia ?? false;
wikipediaInstance = result.wikipediaInstance;
if (result.wikipediaRedirects)
redirects = result.wikipediaRedirects;
}
@ -92,9 +83,6 @@ export default {
setDisableWikipedia,
getDisableWikipedia,
setWikipediaInstance,
getWikipediaInstance,
redirect,
isWikipedia,
init,

View File

@ -91,14 +91,6 @@ function setDisableYoutube(val) {
console.log("disableYoutube: ", disableYoutube)
}
let invidiousInstance;
const getInvidiousInstance = () => invidiousInstance;
function setInvidiousInstance(val) {
invidiousInstance = val;
browser.storage.sync.set({ invidiousInstance })
console.log("invidiousInstance: ", invidiousInstance)
}
let invidiousAlwaysProxy;
function setInvidiousAlwaysProxy(val) {
invidiousAlwaysProxy = val;
@ -208,7 +200,6 @@ async function init() {
"invidiousTheme",
"persistInvidiousPrefs",
"disableYoutube",
"invidiousInstance",
"invidiousOnlyEmbeddedVideo",
"invidiousVolume",
"invidiousPlayerStyle",
@ -219,7 +210,7 @@ async function init() {
"invidiousRedirectsChecks",
"invidiousCustomRedirects",
]);
if (result.youtubeRedirects) redirects = result.youtubeRedirects
if (result.youtubeRedirects) redirects = result.youtubeRedirects;
if (result.invidiousRedirectsChecks) invidiousRedirectsChecks = result.invidiousRedirectsChecks;
@ -228,8 +219,6 @@ async function init() {
frontend = result.youtubeFrontend ?? 'piped';
disableYoutube = result.disableYoutube ?? false;
invidiousInstance = result.invidiousInstance;
invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? 'DEFAULT';
invidiousOnlyEmbeddedVideo = result.invidiousOnlyEmbeddedVideo ?? false;
invidiousVideoQuality = result.invidiousVideoQuality ?? 'DEFAULT';
@ -240,8 +229,6 @@ async function init() {
invidiousAutoplay = result.invidiousAutoplay ?? 'DEFAULT';
persistInvidiousPrefs = result.persistInvidiousPrefs ?? false;
}
function invidiousInitCookies(tabId) {
@ -259,7 +246,6 @@ function redirect(url, initiator, type) {
if (
initiator &&
(
initiator.origin === invidiousInstance ||
redirects.invidious.normal.includes(initiator.origin) ||
redirects.piped.normal.includes(initiator.origin) ||
targets.includes(initiator.host)
@ -326,9 +312,6 @@ export default {
getDisableYoutube,
setDisableYoutube,
setInvidiousInstance,
getInvidiousInstance,
setInvidiousAlwaysProxy,
getInvidiousAlwaysProxy,

View File

@ -38,65 +38,6 @@
<span>Update Instances</span>
</a>
</div>
<!-- <hr> -->
<!-- <section class="settings-block">
<p data-localise="__MSG_exceptionsDescriptionP1__">
Enter a URL or Regular Expression to be excluded from redirects.
</p>
<p data-localise="__MSG_exceptionsDescriptionP2__">
All requests for or initiating from a URL that matches your exception
will be excluded from redirects.
</p>
<p data-localise="__MSG_exceptionsDescriptionP3__">
Note - Supports JavaScript regular expressions, excluding the
enclosing forward slashes.
</p>
</section>
<section class="settings-block">
<table class="exceptions option">
<tbody>
<tr>
<td>
<h1 data-localise="__MSG_addException__">Add Exception</h1>
</td>
</tr>
<tr>
<td>
<input id="new-exceptions-item" type="text" placeholder="URL or RegExp" />
</td>
<td>
<input type="radio" id="url" name="type" value="URL" checked />
<label class="radio" for="url">URL</label>
<input type="radio" id="regExp" name="type" value="RegExp" />
<label class="radio" for="regExp">RegExp</label>
</td>
<td>
<button id="add-to-exceptions">
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
<line x1="256" y1="112" x2="256" y2="400" style="
fill: none;
stroke: #fff;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 32px;
" />
<line x1="400" y1="256" x2="112" y2="256" style="
fill: none;
stroke: #fff;
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 32px;
" />
</svg>
</button>
</td>
</tr>
</tbody>
</table>
</section>
<ul id="exceptions-items"></ul>
</section> -->
<script type="module" src="../init.js"></script>
<script type="module" src="./general.js"></script>

View File

@ -47,31 +47,6 @@ browser.storage.sync.get(
}
);
// function addToExceptions() {
// const input = document.getElementById("new-exceptions-item");
// const type = document.querySelector('input[name="type"]:checked').value;
// if (input.value) {
// try {
// let value = input.value;
// new RegExp(input.value);
// if (type === "URL")
// value = value.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
// exceptions.push(value);
// browser.storage.sync.set({
// exceptions: exceptions,
// });
// prependExceptionsItem(value, exceptions.indexOf(value));
// input.value = "";
// } catch (error) {
// input.setCustomValidity("Invalid RegExp");
// }
// } else {
// input.setCustomValidity("Invalid RegExp");
// }
// }
// document.getElementById("add-to-exceptions").addEventListener("click", addToExceptions);
themeElement.addEventListener("change", (event) => {
const value = event.target.options[theme.selectedIndex].value;
switch (value) {

View File

@ -28,22 +28,6 @@
<h4>Enable</h4>
<input id="disable-bibliogram" type="checkbox" checked />
</div>
<!-- <div class="some-block option-block">
<h4>Instance</h4>
<div class="autocomplete">
<input id="bibliogram-instance" type="url" data-localise-placeholder="__MSG_randomInstancePlaceholder__"
placeholder="Random instance (none selected)" />
</div>
</div> -->
<!-- <section class="settings-block">
<h4>Instance List</h4>
<div class="random-pool">
<textarea id="bibliogram-random-pool" name="bibliogram-random-pool" type="text"></textarea>
<ul id="bibliogram-random-pool-list"></ul>
</div>
</section> -->
</section>
<script type="module" src="../init.js"></script>

View File

@ -28,21 +28,6 @@
<h4>Enable</h4>
<input id="disable-scribe" type="checkbox" checked />
</div>
<!-- <div class="some-block option-block">
<h4>Instance</h4>
<div class="autocomplete">
<input id="scribe-instance" type="url" name="scribe-instance"
data-localise-placeholder="__MSG_randomInstancePlaceholder__"
placeholder="Random instance (none selected)" />
</div>
</div>
<section class="settings-block">
<h4>Instance List</h4>
<div class="random-pool">
<textarea id="scribe-random-pool" type="text"></textarea>
<ul id="scribe-random-pool-list"></ul>
</div>
</section> -->
</section>
<script type="module" src="../init.js"></script>

View File

@ -45,23 +45,6 @@
<option value="teddit">Teddit</option>
</select>
</div>
<!-- <section class="settings-block">
<h4>LibReddit Instance List</h4>
<div class="random-pool">
<textarea id="libreddit-random-pool" type="text"></textarea>
<ul id="libreddit-random-pool-list"></ul>
</div>
</section>
<section class="settings-block">
<h4>Teddit Instance List</h4>
<div class="random-pool">
<textarea id="teddit-random-pool" type="text"></textarea>
<ul id="teddit-random-pool-list"></ul>
</div>
</section> -->
</section>
<script type="module" src="../init.js"></script>

View File

@ -44,23 +44,6 @@
<option value="whoogle">Whoogle</option>
</select>
</div>
<!--
<section class="settings-block">
<h4>SearX Instance List</h4>
<div class="random-pool">
<textarea id="searx-random-pool" type="text"></textarea>
<ul id="searx-random-pool-list"></ul>
</div>
</section>
<section class="settings-block">
<h4>Whoogle Instance List</h4>
<div class="random-pool">
<textarea id="whoogle-random-pool" type="text"></textarea>
<ul id="whoogle-random-pool-list"></ul>
</div>
</section> -->
</section>

View File

@ -30,22 +30,6 @@
<h4>Enable</h4>
<input id="disable-nitter" type="checkbox" checked />
</div>
<!-- <div class="some-block option-block">
<h4>Instance</h4>
<div class="autocomplete">
<input id="nitter-instance" type="url" name="nitter-instance"
data-localise-placeholder="__MSG_randomInstancePlaceholder__"
placeholder="Random instance (none selected)" />
</div>
</div> -->
<!-- <section class="settings-block">
<h4>Instance List</h4>
<div class="random-pool">
<textarea id="nitter-random-pool" type="text"></textarea>
<ul id="nitter-random-pool-list"></ul>
</div>
</section> -->
<div class="some-block option-block">
<h4 data-localise="__MSG_removeTwitterSW__">Proactively remove Twitter service worker</h4>
<input id="remove-twitter-sw" type="checkbox" checked />

View File

@ -28,20 +28,6 @@
<h4>Enable</h4>
<input id="disable-wikipedia" type="checkbox" checked />
</div>
<!-- <div class="some-block option-block">
<h4>Instance</h4>
<div class="autocomplete">
<input id="wikipedia-instance" type="url" placeholder="https://wikiless.org" />
</div>
</div>
<section class="settings-block">
<h4>Instance List</h4>
<div class="random-pool">
<textarea id="wikiless-random-pool" type="text"></textarea>
<ul id="wikiless-random-pool-list"></ul>
</div>
</section> -->
</section>
<script type="module" src="../init.js"></script>

View File

@ -30,23 +30,6 @@
<input id="disable-invidious" type="checkbox" checked />
</div>
<!-- <div class="some-block option-block">
<h4>Instance</h4>
<div class="autocomplete">
<input id="invidious-instance" type="url" data-localise-placeholder="__MSG_randomInstancePlaceholder__"
placeholder="Random instance (none selected)" />
</div>
</div> -->
<!-- <section class="settings-block">
<h4>Instance List</h4>
<div class="random-pool">
<textarea type="textarea" id="invidious-random-pool" name="invidious-random-pool"
type="text"></textarea>
<ul id="invidious-random-pool-list"></ul>
</div>
</section> -->
<div class="some-block option-block">
<h4>Frontend</h4>
<select id="youtube-frontend">
@ -59,7 +42,6 @@
<hr>
<div id="invidious-piped">
<div class="some-block option-block">
<h4>Only Redirect Embedded-Video</h4>
<input id="only-embed" type="checkbox" checked />
@ -108,7 +90,7 @@
</div>
<div class="some-block option-block">
<h4 data-localise="__MSG_invidiousAlwaysProxy__">Always proxy videos</h4>
<h4>Always proxy videos</h4>
<select id="invidious-always-proxy">
<option value="DEFAULT">Default</option>
<option value="true">True</option>
@ -151,7 +133,6 @@
<h4>Custom Instances</h4>
</div>
<form id="custom-instance-form">
<div class="some-block option-block">
<input id="invidious-custom-instance" placeholder="https://invidious.com" type="url" />

View File

@ -69,10 +69,8 @@ invidiousPlayerStyleElement.addEventListener("change",
);
let invidiousSubtitlesElement = document.getElementById("invidious-subtitles");
invidiousSubtitlesElement.addEventListener("input",
commonHelper.debounce(() => {
youtubeHelper.setInvidiousSubtitles(invidiousSubtitlesElement.value)
}, 500)
invidiousSubtitlesElement.addEventListener("change",
() => youtubeHelper.setInvidiousSubtitles(invidiousSubtitlesElement.value)
);
let invidiousAutoplayElement = document.getElementById("invidious-autoplay");
@ -124,62 +122,51 @@ youtubeHelper.init().then(() => {
let myMightyList = youtubeHelper.getInvidiousRedirectsChecks();
function checkToggleAll() {
console.log("CheckToggleAll")
let isTrue = true;
for (const item of youtubeHelper.getRedirects().invidious.normal)
if (!myMightyList.includes(item)) {
isTrue = false;
break;
}
document.getElementById('invidious-toogle-all').checked = isTrue;
}
let checklistList = invidiousCheckListElement.getElementsByTagName('input')
for (let element of checklistList) {
element.checked = myMightyList.includes(element.id);
if (element.id == 'invidious-toogle-all')
document.getElementById('invidious-toogle-all').addEventListener("change",
(event) => {
if (event.target.checked) {
for (let item of checklistList) {
myMightyList.push(item.id)
item.checked = true;
}
document.getElementById('invidious-toogle-all').addEventListener("change", (event) => {
if (event.target.checked)
for (let item of checklistList) {
myMightyList.push(item.id);
item.checked = true;
}
else {
myMightyList = [];
for (let item of checklistList) item.checked = false;
}
youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
else {
myMightyList = [];
for (let item of checklistList) item.checked = false;
}
);
youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
});
else
document.getElementById(element.id).addEventListener("change",
(event) => {
if (event.target.checked)
myMightyList.push(element.id)
else {
let index = myMightyList.indexOf(element.id);
if (index > -1) myMightyList.splice(index, 1);
}
youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
checkToggleAll();
document.getElementById(element.id).addEventListener("change", (event) => {
if (event.target.checked)
myMightyList.push(element.id)
else {
let index = myMightyList.indexOf(element.id);
if (index > -1) myMightyList.splice(index, 1);
}
);
youtubeHelper.setInvidiousRedirectsChecks(myMightyList);
checkToggleAll();
});
}
checkToggleAll();
mightyInvidiousCustomInstances = youtubeHelper.getInvidiousCustomRedirects();
calcCustom();
});
function checkToggleAll() {
let isTrue = true;
for (const item of youtubeHelper.getRedirects().invidious.normal)
if (!myMightyList.includes(item)) {
isTrue = false;
break;
}
document.getElementById('invidious-toogle-all').checked = isTrue;
}
let invidiousCustomInstanceElement = document.getElementById("invidious-custom-instance")
let mightyInvidiousCustomInstances = []

View File

@ -19,7 +19,6 @@ body.light-theme {
body {
margin: auto;
padding: 0;
min-height: 572px;
font-family: Sans-Serif;
background-color: var(--bg-main);
color: var(--text);
@ -31,23 +30,11 @@ div.some-block input[type="checkbox"] {
-webkit-appearance: none;
}
h2 {
clear: both;
font-size: 12px;
font-weight: normal;
margin: 0;
}
h1,
h2 {
color: var(--text);
}
input[type="url"],
input[type="text"],
select {
padding: 5px 10px;
width: 400px;
width: 350px;
border-radius: 3px;
box-sizing: border-box;
margin-bottom: var(--space);
@ -63,37 +50,11 @@ select {
padding: 8px;
background-color: var(--bg-secondary);
border: none;
;
margin: 0;
width: auto;
border-radius: 3px;
}
input[type="radio"] {
appearance: radio;
-moz-appearance: radio;
-webkit-appearance: radio;
}
input[type="radio"]:checked+label {
background: transparent;
}
input:checked+label {
background: var(--active);
}
input:checked+label:after {
left: calc(100% - var(--space));
transform: translateX(-100%);
}
.settings-block {
display: block;
margin: 30px 0;
padding: 5px 15px;
}
a.button * {
vertical-align: middle;
}
@ -113,62 +74,6 @@ a.button:active {
input:invalid {
color: var(--danger);
border-color: var(--danger);
background-color: var(--danger-light);
}
.margin-bottom {
margin-bottom: 20px;
}
div.exceptions {
clear: left;
}
div.exceptions>input {
width: 240px;
float: left;
}
#add-to-exceptions {
float: right;
border: var(--active) solid 1px;
background-color: var(--active);
color: var(--text);
font-weight: bold;
cursor: pointer;
border-radius: 50%;
padding: 1px 1px 0px 1px;
margin-right: 5px;
}
#add-to-exceptions svg {
height: 20px;
width: 20px;
}
ul {
padding: 0;
list-style-type: none;
color: var(--text);
margin: 20px 20px 0 20px;
}
li {
white-space: nowrap;
border-bottom: solid 0.5px var(--bg-secondary);
padding: 20px 0px 20px 20px;
}
#exceptions-items button {
float: right;
margin-right: -5px;
border: var(--active) solid 1px;
background-color: var(--active);
color: var(--text);
font-weight: bold;
cursor: pointer;
border-radius: 50%;
padding: 2px 2px 0px 2px;
}
.button svg {
@ -176,48 +81,6 @@ li {
width: 18px;
}
.autocomplete {
position: relative;
display: inline-block;
width: 100%;
}
.autocomplete input {
background: url(../../assets/images/chevron-down.svg) right no-repeat;
}
.autocomplete-items {
position: absolute;
border: 1px solid var(--bg-main);
border-bottom: none;
border-top: none;
z-index: 99;
top: 85%;
left: 0;
right: 0;
overflow-y: auto;
max-height: 175px;
color: var(--text);
overflow-x: hidden;
max-width: 380px;
}
.autocomplete-items div {
padding: 10px;
cursor: pointer;
background-color: var(--bg-secondary);
border-bottom: 1px solid var(--bg-main);
}
.autocomplete-items div:hover {
background-color: var(--active);
}
.autocomplete-active {
background-color: var(--active);
color: var(--text);
}
section.option-block {
width: 50%;
margin: 0 50px;
@ -229,10 +92,6 @@ body.option {
padding: 40px;
}
section.links {
margin: 00px 0;
}
section.links a {
display: flex;
align-items: center;
@ -244,20 +103,13 @@ section.links a {
transition: 0.1s;
}
section.links a:hover {
color: var(--active);
}
section.links a:hover,
section.links a.selected {
color: var(--active);
}
.option td {
vertical-align: middle;
}
input[type="range"] {
width: 50%;
width: 350px;
}
::placeholder {
@ -265,11 +117,6 @@ input[type="range"] {
opacity: 0.7;
}
input[type="text"]:focus,
input[type="url"]:focus {
outline: none;
}
#volume-value {
color: var(--active);
}
@ -328,7 +175,6 @@ h4 {
div.some-block h4 {
margin: 0;
/* width: 70%; */
}
div.option-block h4 {
@ -356,10 +202,6 @@ div.some-block input[type="checkbox"]:checked {
background-color: var(--active);
}
div.some-block input[type="checkbox"]:focus {
outline: none;
}
div.some-block input[type="checkbox"]::before {
content: "";
display: inline-block;
@ -372,7 +214,7 @@ div.some-block input[type="checkbox"]::before {
height: 20px;
background-color: white;
border-radius: 50%;
transition: .4s;
transition: .3s;
}
div.some-block input[type="checkbox"]:checked::before {
@ -422,15 +264,6 @@ a.button:active {
transform: translateY(1px);
}
textarea {
line-height: 21px;
background-color: var(--bg-secondary);
color: white;
border: none;
resize: none;
width: 100%;
}
button.default {
margin-left: 30px;
background-color: transparent;
@ -455,11 +288,9 @@ div.checklist div {
justify-content: space-between;
margin: 5px 15px;
padding: 10px 0;
/* border-bottom: 2px solid rgb(77, 77, 77); */
display: flex;
}
button.add {
background-color: transparent;
border: none;