about summary refs log tree commit diff stats
path: root/src/assets/javascripts/medium.js
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-07-27 17:44:04 +0200
committerManeraKai <manerakai@protonmail.com>2022-07-27 17:44:04 +0200
commita9a7dba5a329eb17e23ba08802406a4e2e2cb836 (patch)
tree2cb69c855b36e82128a00e5895d5f5409d5e0a5e /src/assets/javascripts/medium.js
parentMerge branch 'BobIsMyManager-librex' (diff)
parent, (diff)
downloadlibredirect-a9a7dba5a329eb17e23ba08802406a4e2e2cb836.zip
Merge pull request 'Squashed a few bugs' (#10) from BobIsMyManager/libredirect:master into master
Reviewed-on: https://codeberg.org/LibRedirect/libredirect/pulls/10
Diffstat (limited to 'src/assets/javascripts/medium.js')
-rw-r--r--src/assets/javascripts/medium.js368
1 files changed, 190 insertions, 178 deletions
diff --git a/src/assets/javascripts/medium.js b/src/assets/javascripts/medium.js
index ddd955c1..4c03471c 100644
--- a/src/assets/javascripts/medium.js
+++ b/src/assets/javascripts/medium.js
@@ -1,207 +1,219 @@
-window.browser = window.browser || window.chrome;
-import utils from './utils.js'
+window.browser = window.browser || window.chrome
+import utils from "./utils.js"
 
 const targets = [
-  // /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/,
-  /^medium\.com/,
-  /.*\.medium\.com/,
-  // // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge
-
-  /^towardsdatascience\.com/,
-  /^uxdesign\.cc/,
-  /^uxplanet\.org/,
-  /^betterprogramming\.pub/,
-  /^aninjusticemag\.com/,
-  /^betterhumans\.pub/,
-  /^psiloveyou\.xyz/,
-  /^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 /,
-];
+	// /(?:.*\.)*(?<!(link\.|cdn\-images\-\d+\.))medium\.com(\/.*)?$/,
+	/^medium\.com/,
+	/.*\.medium\.com/,
+	// // Other domains of medium blogs, source(s): https://findingtom.com/best-medium-blogs-to-follow/#1-forge
+
+	/^towardsdatascience\.com/,
+	/^uxdesign\.cc/,
+	/^uxplanet\.org/,
+	/^betterprogramming\.pub/,
+	/^aninjusticemag\.com/,
+	/^betterhumans\.pub/,
+	/^psiloveyou\.xyz/,
+	/^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 /,
+]
 
 const frontends = new Array("scribe")
 const protocols = new Array("normal", "tor", "i2p", "loki")
 
-let redirects = {};
+let redirects = {}
 
 for (let i = 0; i < frontends.length; i++) {
-    redirects[frontends[i]] = {}
-    for (let x = 0; x < protocols.length; x++) {
-        redirects[frontends[i]][protocols[x]] = []
-    }
+	redirects[frontends[i]] = {}
+	for (let x = 0; x < protocols.length; x++) {
+		redirects[frontends[i]][protocols[x]] = []
+	}
 }
 
 function setRedirects(val) {
-  browser.storage.local.get('cloudflareBlackList', r => {
-    redirects.scribe = val;
-    scribeNormalRedirectsChecks = [...redirects.scribe.normal];
-    for (const instance of r.cloudflareBlackList) {
-      const a = scribeNormalRedirectsChecks.indexOf(instance);
-      if (a > -1) scribeNormalRedirectsChecks.splice(a, 1);
-    }
-    browser.storage.local.set({
-      mediumRedirects: redirects,
-      scribeNormalRedirectsChecks
-    })
-  })
+	browser.storage.local.get("cloudflareBlackList", r => {
+		redirects.scribe = val
+		scribeNormalRedirectsChecks = [...redirects.scribe.normal]
+		for (const instance of r.cloudflareBlackList) {
+			const a = scribeNormalRedirectsChecks.indexOf(instance)
+			if (a > -1) scribeNormalRedirectsChecks.splice(a, 1)
+		}
+		browser.storage.local.set({
+			mediumRedirects: redirects,
+			scribeNormalRedirectsChecks,
+		})
+	})
 }
 
-let
-  disableMedium,
-  mediumRedirects,
-  scribeNormalRedirectsChecks,
-  scribeNormalCustomRedirects,
-  scribeTorRedirectsChecks,
-  scribeTorCustomRedirects,
-  scribeI2pCustomRedirects,
-  scribeLokiCustomRedirects,
-  protocol,
-  protocolFallback;
+let disableMedium,
+	mediumRedirects,
+	scribeNormalRedirectsChecks,
+	scribeNormalCustomRedirects,
+	scribeTorRedirectsChecks,
+	scribeTorCustomRedirects,
+	scribeI2pCustomRedirects,
+	scribeLokiCustomRedirects,
+	protocol,
+	protocolFallback
 
 function init() {
-  return new Promise(resolve => {
-    browser.storage.local.get(
-      [
-        "disableMedium",
-        "mediumRedirects",
-        "scribeNormalRedirectsChecks",
-        "scribeNormalCustomRedirects",
-        "scribeTorRedirectsChecks",
-        "scribeTorCustomRedirects",
-        "scribeI2pCustomRedirects",
-        "scribeLokiCustomRedirects",
-        "protocol",
-        "protocolFallback"
-      ],
-      r => {
-        disableMedium = r.disableMedium;
-        mediumRedirects = r.mediumRedirects;
-        scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks;
-        scribeNormalCustomRedirects = r.scribeNormalCustomRedirects;
-        scribeTorRedirectsChecks = r.scribeTorRedirectsChecks;
-        scribeTorCustomRedirects = r.scribeTorCustomRedirects;
-        scribeI2pCustomRedirects = r.scribeI2pCustomRedirects;
-        scribeLokiCustomRedirects = r.scribeLokiCustomRedirects;
-        protocol = r.protocol;
-        protocolFallback = r.protocolFallback;
-        resolve();
-      }
-    )
-  })
+	return new Promise(resolve => {
+		browser.storage.local.get(
+			[
+				"disableMedium",
+				"mediumRedirects",
+				"scribeNormalRedirectsChecks",
+				"scribeNormalCustomRedirects",
+				"scribeTorRedirectsChecks",
+				"scribeTorCustomRedirects",
+				"scribeI2pCustomRedirects",
+				"scribeLokiCustomRedirects",
+				"protocol",
+				"protocolFallback",
+			],
+			r => {
+				disableMedium = r.disableMedium
+				mediumRedirects = r.mediumRedirects
+				scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks
+				scribeNormalCustomRedirects = r.scribeNormalCustomRedirects
+				scribeTorRedirectsChecks = r.scribeTorRedirectsChecks
+				scribeTorCustomRedirects = r.scribeTorCustomRedirects
+				scribeI2pCustomRedirects = r.scribeI2pCustomRedirects
+				scribeLokiCustomRedirects = r.scribeLokiCustomRedirects
+				protocol = r.protocol
+				protocolFallback = r.protocolFallback
+				resolve()
+			}
+		)
+	})
 }
 
-init();
+init()
 browser.storage.onChanged.addListener(init)
 
 function redirect(url, type, initiator, disableOverride) {
-  if (disableMedium && !disableOverride) return;
-  if (url.pathname == "/" && !disableOverride) return;
-  if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return;
-  if (initiator && (
-    [
-      ...mediumRedirects.scribe.normal,
-      ...mediumRedirects.scribe.tor,
-      ...scribeNormalCustomRedirects,
-      ...scribeTorCustomRedirects,
-      ...scribeI2pCustomRedirects,
-      ...scribeLokiCustomRedirects
-    ].includes(initiator.origin))) return;
-
-  if (!targets.some(rx => rx.test(url.host))) return;
-  if (/^\/(@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return;
-
-  let instancesList = [];
-  if (protocol == 'loki') instancesList = [...scribeLokiCustomRedirects];
-  else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects];
-  else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
-  if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
-    instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
-  }
-  if (instancesList.length === 0) { return; }
-
-  const randomInstance = utils.getRandomInstance(instancesList)
-  return `${randomInstance}${url.pathname}${url.search}`;
+	if (disableMedium && !disableOverride) return
+	if (url.pathname == "/" && !disableOverride) return
+	if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return
+	if (
+		initiator &&
+		[...mediumRedirects.scribe.normal, ...mediumRedirects.scribe.tor, ...scribeNormalCustomRedirects, ...scribeTorCustomRedirects, ...scribeI2pCustomRedirects, ...scribeLokiCustomRedirects].includes(
+			initiator.origin
+		)
+	)
+		return
+
+	if (!targets.some(rx => rx.test(url.host))) return
+	if (/^\/(@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return
+
+	let instancesList = []
+	if (protocol == "loki") instancesList = [...scribeLokiCustomRedirects]
+	else if (protocol == "i2p") instancesList = [...scribeI2pCustomRedirects]
+	else if (protocol == "tor") instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]
+	if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+		instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]
+	}
+	if (instancesList.length === 0) {
+		return
+	}
+
+	const randomInstance = utils.getRandomInstance(instancesList)
+	return `${randomInstance}${url.pathname}${url.search}`
 }
 
 function switchInstance(url, disableOverride) {
-  return new Promise(async resolve => {
-    await init();
-    if (disableMedium && !disableOverride) { resolve(); return; }
-    let protocolHost = utils.protocolHost(url);
-    const all = [
-      ...mediumRedirects.scribe.tor,
-      ...mediumRedirects.scribe.normal,
-
-      ...scribeNormalCustomRedirects,
-      ...scribeTorCustomRedirects,
-      ...scribeI2pCustomRedirects,
-      ...scribeLokiCustomRedirects
-    ];
-    if (!all.includes(protocolHost)) { resolve(); return; }
-
-    let instancesList = [];
-    if (protocol == 'loki') instancesList = [...scribeLokiCustomRedirects];
-    else if (protocol == 'i2p') instancesList = [...scribeI2pCustomRedirects];
-    else if (protocol == 'tor') instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects];
-    if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') {
-      instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects];
-    }
-
-    const i = instancesList.indexOf(protocolHost);
-    if (i > -1) instancesList.splice(i, 1);
-    if (instancesList.length === 0) { resolve(); return; }
-
-    const randomInstance = utils.getRandomInstance(instancesList);
-    resolve(`${randomInstance}${url.pathname}${url.search}`);
-  })
+	return new Promise(async resolve => {
+		await init()
+		if (disableMedium && !disableOverride) {
+			resolve()
+			return
+		}
+		let protocolHost = utils.protocolHost(url)
+		const all = [
+			...mediumRedirects.scribe.tor,
+			...mediumRedirects.scribe.normal,
+
+			...scribeNormalCustomRedirects,
+			...scribeTorCustomRedirects,
+			...scribeI2pCustomRedirects,
+			...scribeLokiCustomRedirects,
+		]
+		if (!all.includes(protocolHost)) {
+			resolve()
+			return
+		}
+
+		let instancesList = []
+		if (protocol == "loki") instancesList = [...scribeLokiCustomRedirects]
+		else if (protocol == "i2p") instancesList = [...scribeI2pCustomRedirects]
+		else if (protocol == "tor") instancesList = [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects]
+		if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
+			instancesList = [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects]
+		}
+
+		const i = instancesList.indexOf(protocolHost)
+		if (i > -1) instancesList.splice(i, 1)
+		if (instancesList.length === 0) {
+			resolve()
+			return
+		}
+
+		const randomInstance = utils.getRandomInstance(instancesList)
+		resolve(`${randomInstance}${url.pathname}${url.search}`)
+	})
 }
 
 function initDefaults() {
-  return new Promise(resolve => {
-    fetch('/instances/data.json').then(response => response.text()).then(data => {
-      let dataJson = JSON.parse(data);
-      for (let i = 0; i < frontends.length; i++) {
-        redirects[frontends[i]] = dataJson[frontends[i]]
-      }
-      browser.storage.local.get('cloudflareBlackList',
-        async r => {
-          scribeNormalRedirectsChecks = [...redirects.scribe.normal];
-          for (const instance of r.cloudflareBlackList) {
-            let i = scribeNormalRedirectsChecks.indexOf(instance);
-            if (i > -1) scribeNormalRedirectsChecks.splice(i, 1);
-          }
-          browser.storage.local.set({
-            disableMedium: false,
-            mediumRedirects: redirects,
-
-            scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
-            scribeNormalCustomRedirects: [],
-
-            scribeTorRedirectsChecks: [...redirects.scribe.tor],
-            scribeTorCustomRedirects: [],
-
-            scribeI2pRedirectsChecks: [...redirects.scribe.i2p],
-            scribeI2pCustomRedirects: [],
-
-            scribeLokiRedirectsChecks: [...redirects.scribe.loki],
-            scribeLokiCustomRedirects: []
-          }, () => resolve())
-        })
-    })
-  })
+	return new Promise(resolve => {
+		fetch("/instances/data.json")
+			.then(response => response.text())
+			.then(data => {
+				let dataJson = JSON.parse(data)
+				for (let i = 0; i < frontends.length; i++) {
+					redirects[frontends[i]] = dataJson[frontends[i]]
+				}
+				browser.storage.local.get("cloudflareBlackList", async r => {
+					scribeNormalRedirectsChecks = [...redirects.scribe.normal]
+					for (const instance of r.cloudflareBlackList) {
+						let i = scribeNormalRedirectsChecks.indexOf(instance)
+						if (i > -1) scribeNormalRedirectsChecks.splice(i, 1)
+					}
+					browser.storage.local.set(
+						{
+							disableMedium: false,
+							mediumRedirects: redirects,
+
+							scribeNormalRedirectsChecks: scribeNormalRedirectsChecks,
+							scribeNormalCustomRedirects: [],
+
+							scribeTorRedirectsChecks: [...redirects.scribe.tor],
+							scribeTorCustomRedirects: [],
+
+							scribeI2pRedirectsChecks: [...redirects.scribe.i2p],
+							scribeI2pCustomRedirects: [],
+
+							scribeLokiRedirectsChecks: [...redirects.scribe.loki],
+							scribeLokiCustomRedirects: [],
+						},
+						() => resolve()
+					)
+				})
+			})
+	})
 }
 
 export default {
-  setRedirects,
-  redirect,
-  switchInstance,
-  initDefaults,
-};
+	setRedirects,
+	redirect,
+	switchInstance,
+	initDefaults,
+}