Readded medium custom domin names #94

This commit is contained in:
ManeraKai 2022-03-15 14:48:36 +03:00
parent cd836df62f
commit 1e1ed7bd7f
No known key found for this signature in database
GPG Key ID: 5ABC31FFD562E337
5 changed files with 181 additions and 57 deletions

View File

@ -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,
}; };

View File

@ -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);

View File

@ -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>

View File

@ -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",

View File

@ -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;
@ -332,9 +345,9 @@ div.disabled {
background-color: rgb(39, 39, 39); background-color: rgb(39, 39, 39);
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.light-theme.popup, .light-theme.popup,