about summary refs log tree commit diff stats
path: root/src/assets/javascripts/twitter.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/assets/javascripts/twitter.js')
-rw-r--r--src/assets/javascripts/twitter.js304
1 files changed, 0 insertions, 304 deletions
diff --git a/src/assets/javascripts/twitter.js b/src/assets/javascripts/twitter.js
deleted file mode 100644
index 1ec4d8eb..00000000
--- a/src/assets/javascripts/twitter.js
+++ /dev/null
@@ -1,304 +0,0 @@
-window.browser = window.browser || window.chrome
-
-import utils from "./utils.js"
-
-const targets = [/^https?:\/{2}(www\.|mobile\.|)twitter\.com/, /^https?:\/{2}(pbs\.|video\.|)twimg\.com/, /^https?:\/{2}platform\.twitter\.com\/embed/, /^https?:\/{2}t\.co/]
-
-const frontends = new Array("nitter")
-const protocols = new Array("normal", "tor", "i2p", "loki")
-
-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]] = []
-	}
-}
-
-function setRedirects(val) {
-	browser.storage.local.get(["cloudflareBlackList", "authenticateBlackList"], r => {
-		redirects.nitter = val
-		nitterNormalRedirectsChecks = [...redirects.nitter.normal]
-		for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
-			let i = nitterNormalRedirectsChecks.indexOf(instance)
-			if (i > -1) nitterNormalRedirectsChecks.splice(i, 1)
-		}
-		browser.storage.local.set({
-			twitterRedirects: redirects,
-			nitterNormalRedirectsChecks,
-			nitterTorRedirectsChecks: [...redirects.nitter.tor],
-		})
-	})
-}
-
-let disableTwitter,
-	protocol,
-	protocolFallback,
-	twitterRedirects,
-	twitterRedirectType,
-	nitterNormalRedirectsChecks,
-	nitterNormalCustomRedirects,
-	nitterTorRedirectsChecks,
-	nitterTorCustomRedirects,
-	nitterI2pCustomRedirects,
-	nitterLokiCustomRedirects
-
-function init() {
-	return new Promise(async resolve => {
-		browser.storage.local.get(
-			[
-				"disableTwitter",
-				"protocol",
-				"protocolFallback",
-				"twitterRedirects",
-				"twitterRedirectType",
-				"nitterNormalRedirectsChecks",
-				"nitterNormalCustomRedirects",
-				"nitterTorRedirectsChecks",
-				"nitterTorCustomRedirects",
-				"nitterI2pCustomRedirects",
-				"nitterLokiCustomRedirects",
-			],
-			r => {
-				disableTwitter = r.disableTwitter
-				protocol = r.protocol
-				protocolFallback = r.protocolFallback
-				twitterRedirects = r.twitterRedirects
-				twitterRedirectType = r.twitterRedirectType
-				nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks
-				nitterNormalCustomRedirects = r.nitterNormalCustomRedirects
-				nitterTorRedirectsChecks = r.nitterTorRedirectsChecks
-				nitterTorCustomRedirects = r.nitterTorCustomRedirects
-				nitterI2pCustomRedirects = r.nitterI2pCustomRedirects
-				nitterLokiCustomRedirects = r.nitterLokiCustomRedirects
-				resolve()
-			}
-		)
-	})
-}
-
-init()
-browser.storage.onChanged.addListener(init)
-
-function all() {
-	return [...nitterNormalRedirectsChecks, ...nitterTorRedirectsChecks, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects, ...nitterI2pCustomRedirects, ...nitterLokiCustomRedirects]
-}
-
-function redirect(url, type, initiator, disableOverride) {
-	if (disableTwitter && !disableOverride) return
-	if (!targets.some(rx => rx.test(url.href))) return
-	if (url.pathname.split("/").includes("home")) return
-	if (initiator && all().includes(initiator.origin)) return "BYPASSTAB"
-	if (twitterRedirectType == "sub_frame" && type == "main_frame") return
-	if (twitterRedirectType == "main_frame" && type != "main_frame") return
-
-	let instancesList = []
-	if (protocol == "loki") instancesList = [...nitterI2pCustomRedirects]
-	else if (protocol == "i2p") instancesList = [...nitterLokiCustomRedirects]
-	else if (protocol == "tor") instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
-	if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
-		instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
-	}
-	if (instancesList.length === 0) return
-
-	const randomInstance = utils.getRandomInstance(instancesList)
-	// https://pbs.twimg.com/profile_images/648888480974508032/66_cUYfj_400x400.jpg
-	if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video") {
-		const [, id, format, extra] = url.search.match(/(.*)\?format=(.*)&(.*)/)
-		const query = encodeURIComponent(`${id}.${format}?${extra}`)
-		return `${randomInstance}/pic${url.pathname}${query}`
-	} else if (url.pathname.split("/").includes("tweets")) return `${randomInstance}${url.pathname.replace("/tweets", "")}${url.search}`
-	else if (url.host == "t.co") return `${randomInstance}/t.co${url.pathname}`
-	else return `${randomInstance}${url.pathname}${url.search}`
-}
-
-function reverse(url) {
-	return new Promise(async resolve => {
-		await init()
-		const protocolHost = utils.protocolHost(url)
-		if (!all().includes(protocolHost)) {
-			resolve()
-			return
-		}
-		resolve(`https://twitter.com${url.pathname}${url.search}`)
-	})
-}
-
-function switchInstance(url, disableOverride) {
-	return new Promise(async resolve => {
-		await init()
-		if (disableTwitter && !disableOverride) {
-			resolve()
-			return
-		}
-		const protocolHost = utils.protocolHost(url)
-		if (!all().includes(protocolHost)) {
-			resolve()
-			return
-		}
-		let instancesList = []
-		if (protocol == "loki") instancesList = [...nitterI2pCustomRedirects]
-		else if (protocol == "i2p") instancesList = [...nitterLokiCustomRedirects]
-		else if (protocol == "tor") instancesList = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
-		if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") {
-			instancesList = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
-		}
-
-		let index = instancesList.indexOf(protocolHost)
-		if (index > -1) instancesList.splice(index, 1)
-		if (instancesList.length === 0) {
-			resolve()
-			return
-		}
-
-		const randomInstance = utils.getRandomInstance(instancesList)
-		resolve(`${randomInstance}${url.pathname}${url.search}`)
-	})
-}
-
-function removeXFrameOptions(e) {
-	if (e.type != "sub_frame") return
-	let url = new URL(e.url)
-	let protocolHost = utils.protocolHost(url)
-	if (!all().includes(protocolHost)) return
-	let isChanged = false
-	for (const i in e.responseHeaders) {
-		if (e.responseHeaders[i].name == "x-frame-options") {
-			e.responseHeaders.splice(i, 1)
-			isChanged = true
-		} else if (e.responseHeaders[i].name == "content-security-policy") {
-			e.responseHeaders.splice(i, 1)
-			isChanged = true
-		}
-	}
-	if (isChanged) return { responseHeaders: e.responseHeaders }
-}
-
-function initNitterCookies(test, from) {
-	return new Promise(async resolve => {
-		await init()
-		const protocolHost = utils.protocolHost(from)
-		if (!all().includes(protocolHost)) {
-			resolve()
-			return
-		}
-		if (!test) {
-			let checkedInstances = []
-			if (protocol == "loki") checkedInstances = [...nitterI2pCustomRedirects]
-			else if (protocol == "i2p") checkedInstances = [...nitterLokiCustomRedirects]
-			else if (protocol == "tor") checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
-			if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
-				checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
-			}
-			await utils.copyCookie("nitter", from, checkedInstances, "theme")
-			await utils.copyCookie("nitter", from, checkedInstances, "infiniteScroll")
-			await utils.copyCookie("nitter", from, checkedInstances, "stickyProfile")
-			await utils.copyCookie("nitter", from, checkedInstances, "bidiSupport")
-			await utils.copyCookie("nitter", from, checkedInstances, "hideTweetStats")
-			await utils.copyCookie("nitter", from, checkedInstances, "hideBanner")
-			await utils.copyCookie("nitter", from, checkedInstances, "hidePins")
-			await utils.copyCookie("nitter", from, checkedInstances, "hideReplies")
-			await utils.copyCookie("nitter", from, checkedInstances, "squareAvatars")
-			await utils.copyCookie("nitter", from, checkedInstances, "mp4Playback")
-			await utils.copyCookie("nitter", from, checkedInstances, "hlsPlayback")
-			await utils.copyCookie("nitter", from, checkedInstances, "proxyVideos")
-			await utils.copyCookie("nitter", from, checkedInstances, "muteVideos")
-			await utils.copyCookie("nitter", from, checkedInstances, "autoplayGifs")
-
-			await utils.copyCookie("nitter", from, checkedInstances, "replaceInstagram")
-			await utils.copyCookie("nitter", from, checkedInstances, "replaceReddit")
-			await utils.copyCookie("nitter", from, checkedInstances, "replaceTwitter")
-			await utils.copyCookie("nitter", from, checkedInstances, "replaceYouTube")
-		}
-		resolve(true)
-	})
-}
-
-function pasteNitterCookies() {
-	return new Promise(async resolve => {
-		await init()
-		if (disableTwitter || protocol === undefined) {
-			resolve()
-			return
-		}
-		let checkedInstances = []
-		if (protocol == "loki") checkedInstances = [...nitterI2pCustomRedirects]
-		else if (protocol == "i2p") checkedInstances = [...nitterLokiCustomRedirects]
-		else if (protocol == "tor") checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects]
-		if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") {
-			checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects]
-		}
-		utils.getCookiesFromStorage("nitter", checkedInstances, "theme")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "infiniteScroll")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "stickyProfile")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "bidiSupport")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "hideTweetStats")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "hideBanner")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "hidePins")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "hideReplies")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "squareAvatars")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "mp4Playback")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "hlsPlayback")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "proxyVideos")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "muteVideos")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "autoplayGifs")
-
-		utils.getCookiesFromStorage("nitter", checkedInstances, "replaceInstagram")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "replaceReddit")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "replaceTwitter")
-		utils.getCookiesFromStorage("nitter", checkedInstances, "replaceYouTube")
-		resolve()
-	})
-}
-
-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", "authenticateBlackList"], async r => {
-					nitterNormalRedirectsChecks = [...redirects.nitter.normal]
-					for (const instance of [...r.cloudflareBlackList, ...r.authenticateBlackList]) {
-						let i = nitterNormalRedirectsChecks.indexOf(instance)
-						if (i > -1) nitterNormalRedirectsChecks.splice(i, 1)
-					}
-					browser.storage.local.set(
-						{
-							disableTwitter: false,
-							twitterRedirects: redirects,
-							twitterRedirectType: "both",
-
-							nitterNormalRedirectsChecks: nitterNormalRedirectsChecks,
-							nitterNormalCustomRedirects: [],
-
-							nitterTorRedirectsChecks: [...redirects.nitter.tor],
-							nitterTorCustomRedirects: [],
-
-							nitterI2pRedirectsChecks: [...redirects.nitter.i2p],
-							nitterI2pCustomRedirects: [],
-
-							nitterLokiRedirectsChecks: [...redirects.nitter.loki],
-							nitterLokiCustomRedirects: [],
-						},
-						() => resolve()
-					)
-				})
-			})
-	})
-}
-
-export default {
-	setRedirects,
-	redirect,
-	switchInstance,
-	reverse,
-	removeXFrameOptions,
-	initNitterCookies,
-	pasteNitterCookies,
-	initDefaults,
-}