Readded medium custom domin names #94
This commit is contained in:
parent
cd836df62f
commit
1e1ed7bd7f
|
@ -7,15 +7,25 @@ const targets = [
|
||||||
/^medium\.com/,
|
/^medium\.com/,
|
||||||
/.*\.medium\.com/,
|
/.*\.medium\.com/,
|
||||||
// // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge
|
// // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge
|
||||||
// /towardsdatascience\.com/,
|
|
||||||
// /uxdesign\.cc/,
|
/^towardsdatascience\.com/,
|
||||||
// /uxplanet\.org/,
|
/^uxdesign\.cc/,
|
||||||
// /betterprogramming\.pub/,
|
/^uxplanet\.org/,
|
||||||
// /aninjusticemag\.com/,
|
/^betterprogramming\.pub/,
|
||||||
// /betterhumans\.pub/,
|
/^aninjusticemag\.com/,
|
||||||
// /psiloveyou\.xyz/,
|
/^betterhumans\.pub/,
|
||||||
// /entrepreneurshandbook\.co/,
|
/^psiloveyou\.xyz/,
|
||||||
// /blog\.coinbase\.com/
|
/^entrepreneurshandbook\.co/,
|
||||||
|
/^blog\.coinbase\.com/,
|
||||||
|
|
||||||
|
/^ levelup\.gitconnected\.com /,
|
||||||
|
/^javascript\.plainenglish\.io /,
|
||||||
|
/^blog\.bitsrc\.io /,
|
||||||
|
/^ itnext\.io /,
|
||||||
|
/^codeburst\.io /,
|
||||||
|
/^infosecwriteups\.com /,
|
||||||
|
/^ blog\.devgenius.io /,
|
||||||
|
/^ writingcooperative\.com /,
|
||||||
];
|
];
|
||||||
|
|
||||||
let redirects = {
|
let redirects = {
|
||||||
|
@ -104,21 +114,17 @@ function setProtocol(val) {
|
||||||
console.log("mediumProtocol: ", val);
|
console.log("mediumProtocol: ", val);
|
||||||
}
|
}
|
||||||
|
|
||||||
function isMedium(url, initiator) {
|
function redirect(url, type, initiator) {
|
||||||
if (disable) return false;
|
|
||||||
if (url.pathname == "/") return false;
|
|
||||||
|
|
||||||
if (
|
if (disable) return;
|
||||||
commonHelper.isFirefox() &&
|
if (url.pathname == "/") return;
|
||||||
initiator && ([...redirects.scribe.normal, ...scribeNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))
|
|
||||||
) return false;
|
|
||||||
|
|
||||||
return targets.some((rx) => rx.test(url.host));
|
|
||||||
}
|
|
||||||
function redirect(url, type) {
|
|
||||||
|
|
||||||
if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return null;
|
if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return null;
|
||||||
|
|
||||||
|
if (initiator && ([...redirects.scribe.normal, ...scribeNormalCustomRedirects].includes(initiator.origin))) return;
|
||||||
|
|
||||||
|
if (!targets.some((rx) => rx.test(url.host))) return;
|
||||||
|
|
||||||
let instancesList;
|
let instancesList;
|
||||||
if (protocol == 'normal') instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
|
if (protocol == 'normal') instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
|
||||||
else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
|
else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
|
||||||
|
@ -156,7 +162,7 @@ function changeInstance(url) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
return new Promise((resolve) => {
|
return new Promise(resolve => {
|
||||||
fetch('/instances/data.json').then(response => response.text()).then(data => {
|
fetch('/instances/data.json').then(response => response.text()).then(data => {
|
||||||
let dataJson = JSON.parse(data);
|
let dataJson = JSON.parse(data);
|
||||||
browser.storage.local.get(
|
browser.storage.local.get(
|
||||||
|
@ -169,19 +175,19 @@ async function init() {
|
||||||
"scribeTorCustomRedirects",
|
"scribeTorCustomRedirects",
|
||||||
"mediumProtocol"
|
"mediumProtocol"
|
||||||
],
|
],
|
||||||
(result) => {
|
r => {
|
||||||
disable = result.disableMedium ?? false;
|
disable = r.disableMedium ?? true;
|
||||||
|
|
||||||
protocol = result.mediumProtocol ?? "normal";
|
protocol = r.mediumProtocol ?? "normal";
|
||||||
|
|
||||||
redirects.scribe = dataJson.scribe;
|
redirects.scribe = dataJson.scribe;
|
||||||
if (result.mediumRedirects) redirects = result.mediumRedirects;
|
if (r.mediumRedirects) redirects = r.mediumRedirects;
|
||||||
|
|
||||||
scribeNormalRedirectsChecks = result.scribeNormalRedirectsChecks ?? [...redirects.scribe.normal];
|
scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks ?? [...redirects.scribe.normal];
|
||||||
scribeNormalCustomRedirects = result.scribeNormalCustomRedirects ?? [];
|
scribeNormalCustomRedirects = r.scribeNormalCustomRedirects ?? [];
|
||||||
|
|
||||||
scribeTorRedirectsChecks = result.scribeTorRedirectsChecks ?? [...redirects.scribe.tor];
|
scribeTorRedirectsChecks = r.scribeTorRedirectsChecks ?? [...redirects.scribe.tor];
|
||||||
scribeTorCustomRedirects = result.scribeTorCustomRedirects ?? [];
|
scribeTorCustomRedirects = r.scribeTorCustomRedirects ?? [];
|
||||||
|
|
||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
|
@ -214,7 +220,6 @@ export default {
|
||||||
setScribeTorCustomRedirects,
|
setScribeTorCustomRedirects,
|
||||||
|
|
||||||
redirect,
|
redirect,
|
||||||
isMedium,
|
|
||||||
init,
|
init,
|
||||||
changeInstance,
|
changeInstance,
|
||||||
};
|
};
|
||||||
|
|
|
@ -45,7 +45,6 @@ let BYPASSTABs = [];
|
||||||
|
|
||||||
browser.webRequest.onBeforeRequest.addListener(
|
browser.webRequest.onBeforeRequest.addListener(
|
||||||
details => {
|
details => {
|
||||||
// console.log("url", details.url);
|
|
||||||
const url = new URL(details.url);
|
const url = new URL(details.url);
|
||||||
let initiator;
|
let initiator;
|
||||||
if (details.originUrl)
|
if (details.originUrl)
|
||||||
|
@ -66,7 +65,7 @@ browser.webRequest.onBeforeRequest.addListener(
|
||||||
|
|
||||||
if (!newUrl) newUrl = redditHelper.redirect(url, details.type, initiator);
|
if (!newUrl) newUrl = redditHelper.redirect(url, details.type, initiator);
|
||||||
|
|
||||||
if (mediumHelper.isMedium(url, initiator)) newUrl = mediumHelper.redirect(url, details.type);
|
if (!newUrl) newUrl = mediumHelper.redirect(url, details.type, initiator);
|
||||||
|
|
||||||
if (imgurHelper.isImgur(url, initiator)) newUrl = imgurHelper.redirect(url, details.type);
|
if (imgurHelper.isImgur(url, initiator)) newUrl = imgurHelper.redirect(url, details.type);
|
||||||
|
|
||||||
|
|
|
@ -197,22 +197,132 @@
|
||||||
<h4>Customize Popup</h4>
|
<h4>Customize Popup</h4>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="checklist" id="popup-frontends-checklist">
|
<div class="checklist-popup" id="popup-frontends-checklist">
|
||||||
<div>Youtube<input type="checkbox" id="youtube" /></div>
|
<div>
|
||||||
<div>YoutubeMusic<input type="checkbox" id="youtubeMusic" /></div>
|
<div>
|
||||||
<div>Twitter<input type="checkbox" id="twitter" /></div>
|
<img src="../../../assets/images/youtube-icon.png">
|
||||||
<div>Instagram<input type="checkbox" id="instagram" /></div>
|
YouTube
|
||||||
<div>TikTok<input type="checkbox" id="tikTok" /></div>
|
</div>
|
||||||
<div>Imgur<input type="checkbox" id="imgur" /></div>
|
<input type="checkbox" id="youtube" />
|
||||||
<div>Reddit<input type="checkbox" id="reddit" /></div>
|
</div>
|
||||||
<div>Pixiv<input type="checkbox" id="pixiv" /></div>
|
<div>
|
||||||
<div>Search<input type="checkbox" id="search" /></div>
|
<div>
|
||||||
<div>Translate<input type="checkbox" id="translate" /></div>
|
<img src="../../../assets/images/youtube-music-icon.png">
|
||||||
<div>Maps<input type="checkbox" id="maps" /></div>
|
YoutubeMusic
|
||||||
<div>Wikipedia<input type="checkbox" id="wikipedia" /></div>
|
</div>
|
||||||
<div>Medium<input type="checkbox" id="medium" /></div>
|
<input type="checkbox" id="youtubeMusic" />
|
||||||
<div>Peertube<input type="checkbox" id="peertube" /></div>
|
</div>
|
||||||
<div>Send Files<input type="checkbox" id="sendTargets" /></div>
|
<div>
|
||||||
|
<div>
|
||||||
|
<img src="../../../assets/images/twitter-icon.png">
|
||||||
|
Twitter
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="twitter" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<img src="../../../assets/images/instagram-icon.png">
|
||||||
|
Instagram
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="instagram" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<img src="../../../assets/images/tiktok-icon.png">
|
||||||
|
TikTok
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="tikTok" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<img src="../../../assets/images/imgur-icon.png">
|
||||||
|
Imgur
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="imgur" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<img src="../../../assets/images/reddit-icon.png">
|
||||||
|
Reddit
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="reddit" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<img src="../../../assets/images/pixiv-icon.svg">
|
||||||
|
Pixiv
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="pixiv" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
|
||||||
|
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||||
|
<path
|
||||||
|
d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" />
|
||||||
|
</svg>
|
||||||
|
Search
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="search" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
|
||||||
|
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||||
|
<path
|
||||||
|
d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z" />
|
||||||
|
</svg>
|
||||||
|
Translate
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="translate" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
|
||||||
|
<path d="M0 0h24v24H0V0z" fill="none" />
|
||||||
|
<path
|
||||||
|
d="M20.5 3l-.16.03L15 5.1 9 3 3.36 4.9c-.21.07-.36.25-.36.48V20.5c0 .28.22.5.5.5l.16-.03L9 18.9l6 2.1 5.64-1.9c.21-.07.36-.25.36-.48V3.5c0-.28-.22-.5-.5-.5zM10 5.47l4 1.4v11.66l-4-1.4V5.47zm-5 .99l3-1.01v11.7l-3 1.16V6.46zm14 11.08l-3 1.01V6.86l3-1.16v11.84z" />
|
||||||
|
</svg>
|
||||||
|
Maps
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="maps" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<img src="../../../assets/images/wikipedia-icon.svg">
|
||||||
|
Wikipedia
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="wikipedia" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<!-- https://markentier.tech/posts/2020/10/medium-icon-svg/ -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1770 1000" fill="currentColor">
|
||||||
|
<circle cx="500" cy="500" r="500" />
|
||||||
|
<ellipse ry="475" rx="250" cy="501" cx="1296" />
|
||||||
|
<ellipse cx="1682" cy="502" rx="88" ry="424" />
|
||||||
|
</svg>
|
||||||
|
Medium
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="medium" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<img src="../../../assets/images/peertube-icon.svg">
|
||||||
|
Peertube
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="peertube" />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
|
||||||
|
<path
|
||||||
|
d="M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96zM14 13v4h-4v-4H7l5-5 5 5h-3z" />
|
||||||
|
</svg>
|
||||||
|
Send Files
|
||||||
|
</div>
|
||||||
|
<input type="checkbox" id="sendTargets" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
|
|
@ -97,12 +97,9 @@ enableYoutubeCustomSettingsElement.addEventListener("change",
|
||||||
|
|
||||||
let volumeElement = document.getElementById("invidious-volume");
|
let volumeElement = document.getElementById("invidious-volume");
|
||||||
let volumeValueElement = document.getElementById("volume-value");
|
let volumeValueElement = document.getElementById("volume-value");
|
||||||
volumeElement.addEventListener("input",
|
|
||||||
() => {
|
volumeElement.addEventListener("input", () => volumeValueElement.textContent = `${volumeElement.value}%`);
|
||||||
youtubeHelper.setVolume(volumeElement.value);
|
volumeElement.addEventListener("change", () => youtubeHelper.setVolume(volumeElement.value));
|
||||||
volumeValueElement.textContent = `${volumeElement.value}%`;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
let autoplayElement = document.getElementById("invidious-youtubeAutoplay");
|
let autoplayElement = document.getElementById("invidious-youtubeAutoplay");
|
||||||
autoplayElement.addEventListener("change",
|
autoplayElement.addEventListener("change",
|
||||||
|
|
|
@ -318,6 +318,19 @@ div.checklist div {
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div.checklist-popup div {
|
||||||
|
justify-content: space-between;
|
||||||
|
margin: 5px 15px;
|
||||||
|
padding: 5px 0;
|
||||||
|
max-width: 200px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.checklist-popup div div {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
button.add {
|
button.add {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border: none;
|
border: none;
|
||||||
|
|
Loading…
Reference in New Issue