diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js index 4b34afc..9ed16b1 100644 --- a/src/assets/javascripts/helpers/imgur.js +++ b/src/assets/javascripts/helpers/imgur.js @@ -11,7 +11,6 @@ let redirects = { "i2p": [] } } -const getRedirects = () => redirects; function setRedirects(val) { redirects.rimgo = val; browser.storage.local.set({ imgurRedirects: redirects }) @@ -98,28 +97,30 @@ function redirect(url, type, initiator) { } async function reverse(url) { - browser.storage.local.get( - [ - "imgurRedirects", - "rimgoNormalCustomRedirects", - "rimgoTorCustomRedirects", - "rimgoI2pCustomRedirects", - ], - r => { - let protocolHost = utils.protocolHost(url); - if ( - ![ - ...r.imgurRedirects.rimgo.normal, - ...r.imgurRedirects.rimgo.tor, - ...r.imgurRedirects.rimgo.i2p, - ...r.rimgoNormalCustomRedirects, - ...r.rimgoTorCustomRedirects, - ...r.rimgoI2pCustomRedirects - ].includes(protocolHost) - ) return; - return `https://imgur.com${url.pathname}${url.search}`; - } - ) + return new Promise(resolve => { + browser.storage.local.get( + [ + "imgurRedirects", + "rimgoNormalCustomRedirects", + "rimgoTorCustomRedirects", + "rimgoI2pCustomRedirects", + ], + r => { + let protocolHost = utils.protocolHost(url); + if ( + ![ + ...r.imgurRedirects.rimgo.normal, + ...r.imgurRedirects.rimgo.tor, + ...r.imgurRedirects.rimgo.i2p, + ...r.rimgoNormalCustomRedirects, + ...r.rimgoTorCustomRedirects, + ...r.rimgoI2pCustomRedirects + ].includes(protocolHost) + ) { resolve(); return; } + resolve(`https://imgur.com${url.pathname}${url.search}`); + } + ) + }) } function switchInstance(url) { @@ -197,7 +198,6 @@ async function initDefaults() { } export default { - getRedirects, setRedirects, redirect, diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js index 621de39..a5f5b81 100644 --- a/src/assets/javascripts/helpers/instagram.js +++ b/src/assets/javascripts/helpers/instagram.js @@ -76,32 +76,36 @@ function redirect(url, type, initiator) { }) } function reverse(url) { - browser.storage.local.get( - [ - "instagramRedirects", - "bibliogramNormalCustomRedirects", - "bibliogramTorCustomRedirects", - ], - r => { - let protocolHost = utils.protocolHost(url); - if ( - ![ - ...r.instagramRedirects.bibliogram.normal, - ...r.instagramRedirects.bibliogram.tor, - ...r.bibliogramNormalCustomRedirects, - ...r.bibliogramTorCustomRedirects - ].includes(protocolHost) - ) return; + return new Promise(resolve => { + browser.storage.local.get( + [ + "instagramRedirects", + "bibliogramNormalCustomRedirects", + "bibliogramTorCustomRedirects", + ], + r => { + let protocolHost = utils.protocolHost(url); + if ( + ![ + ...r.instagramRedirects.bibliogram.normal, + ...r.instagramRedirects.bibliogram.tor, + ...r.bibliogramNormalCustomRedirects, + ...r.bibliogramTorCustomRedirects + ].includes(protocolHost) + ) { resolve(); return; } - if (url.pathname.startsWith('/p')) - return `https://instagram.com${url.pathname.replace('/p', '')}${url.search}`; + if (url.pathname.startsWith('/p')) { + resolve(`https://instagram.com${url.pathname.replace('/p', '')}${url.search}`); return; + } - if (url.pathname.startsWith('/u')) - return `https://instagram.com${url.pathname.replace('/u', '')}${url.search}`; + if (url.pathname.startsWith('/u')) { + resolve(`https://instagram.com${url.pathname.replace('/u', '')}${url.search}`); return; + } - return `https://instagram.com${url.pathname}${url.search}`; - } - ) + resolve(`https://instagram.com${url.pathname}${url.search}`); + } + ) + }) } function switchInstance(url) { diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js index a0892df..788096c 100644 --- a/src/assets/javascripts/helpers/medium.js +++ b/src/assets/javascripts/helpers/medium.js @@ -34,7 +34,6 @@ let redirects = { "tor": [] } }; -const getRedirects = () => redirects; function setRedirects(val) { redirects.scribe = val; browser.storage.local.set({ mediumRedirects: redirects }) @@ -160,7 +159,6 @@ function initDefaults() { } export default { - getRedirects, setRedirects, redirect, diff --git a/src/assets/javascripts/helpers/peertube.js b/src/assets/javascripts/helpers/peertube.js index c431d25..f741f9c 100644 --- a/src/assets/javascripts/helpers/peertube.js +++ b/src/assets/javascripts/helpers/peertube.js @@ -16,8 +16,6 @@ let redirects = { "tor": [] } } - -const getRedirects = () => redirects; function setRedirects(val) { redirects.simpleertube = val; browser.storage.local.set({ peertubeTargetsRedirects: redirects }) @@ -165,7 +163,6 @@ async function init() { } export default { - getRedirects, setRedirects, switchInstance, diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index 1bb54b7..9617d92 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -16,8 +16,6 @@ let redirects = { "tor": [] }, }; -const getRedirects = () => redirects; - function setLibredditRedirects(val) { redirects.libreddit = val; browser.storage.local.set({ redditRedirects: redirects }) @@ -443,7 +441,6 @@ function initDefaults() { } export default { - getRedirects, setTedditRedirects, setLibredditRedirects, diff --git a/src/assets/javascripts/helpers/sendTargets.js b/src/assets/javascripts/helpers/sendTargets.js index 39cbf31..c593913 100644 --- a/src/assets/javascripts/helpers/sendTargets.js +++ b/src/assets/javascripts/helpers/sendTargets.js @@ -14,8 +14,6 @@ let redirects = { "tor": [] } } - -const getRedirects = () => redirects; function setRedirects(val) { redirects.send = val; browser.storage.local.set({ sendTargetsRedirects: redirects }) @@ -158,7 +156,6 @@ async function init() { } export default { - getRedirects, setRedirects, redirect, diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js index 90d8a8d..590fca1 100644 --- a/src/assets/javascripts/helpers/tiktok.js +++ b/src/assets/javascripts/helpers/tiktok.js @@ -12,8 +12,6 @@ let redirects = { "tor": [] } } - -const getRedirects = () => redirects; function setRedirects(val) { redirects.proxiTok = val; browser.storage.local.set({ tiktokRedirects: redirects }) @@ -139,26 +137,28 @@ function redirect(url, type, initiator) { } async function reverse(url) { - browser.storage.local.get( - [ - "tiktokRedirects", - "proxiTokNormalCustomRedirects", - "proxiTokTorCustomRedirects", - ], - r => { - let protocolHost = utils.protocolHost(url); - if ( - ![ - ...r.tiktokRedirects.proxiTok.normal, - ...r.tiktokRedirects.proxiTok.tor, - ...r.proxiTokNormalCustomRedirects, - ...r.proxiTokTorCustomRedirects - ].includes(protocolHost) - ) return; + return new Promise(resolve => { + browser.storage.local.get( + [ + "tiktokRedirects", + "proxiTokNormalCustomRedirects", + "proxiTokTorCustomRedirects", + ], + r => { + let protocolHost = utils.protocolHost(url); + if ( + ![ + ...r.tiktokRedirects.proxiTok.normal, + ...r.tiktokRedirects.proxiTok.tor, + ...r.proxiTokNormalCustomRedirects, + ...r.proxiTokTorCustomRedirects + ].includes(protocolHost) + ) { resolve(); return; } - return `https://tiktok.com${url.pathname}${url.search}`; - } - ) + resolve(`https://tiktok.com${url.pathname}${url.search}`); + } + ) + }) } async function initDefaults() { @@ -184,7 +184,6 @@ async function initDefaults() { } export default { - getRedirects, setRedirects, redirect, diff --git a/src/assets/javascripts/helpers/utils.js b/src/assets/javascripts/helpers/utils.js index eec9e6b..f864f90 100644 --- a/src/assets/javascripts/helpers/utils.js +++ b/src/assets/javascripts/helpers/utils.js @@ -10,7 +10,7 @@ import wikipediaHelper from "./wikipedia.js"; import peertubeHelper from "./peertube.js"; import lbryHelper from "./lbry.js"; import sendTargetsHelper from "./sendTargets.js"; -import tikTokHelper from "./tiktok.js"; +import tiktokHelper from "./tiktok.js"; import imgurHelper from "./imgur.js"; import localise from '../localise.js' @@ -30,7 +30,7 @@ async function initCloudflareList() { async function wholeInit() { await sendTargetsHelper.init(); - await tikTokHelper.init(); + await tiktokHelper.init(); await initCloudflareList(); } @@ -64,8 +64,7 @@ async function updateInstances() { redditHelper.setTedditRedirects(instances.teddit); redditHelper.setLibredditRedirects(instances.libreddit); - translateHelper.setSimplyTranslateRedirects(instances.simplyTranslate); - translateHelper.setLingvaRedirects(instances.lingva) + translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva }); searchHelper.setSearxRedirects(instances.searx); searchHelper.setSearxngRedirects(instances.searxng); @@ -77,7 +76,7 @@ async function updateInstances() { sendTargetsHelper.setRedirects(instances.send); - tikTokHelper.setRedirects(instances.proxiTok); + tiktokHelper.setRedirects(instances.proxiTok); console.info("Successfully updated Instances"); return true; @@ -336,69 +335,83 @@ function getCookiesFromStorage(frontend, to, name) { ) } -function copyRaw() { - browser.tabs.query( - { active: true, currentWindow: true }, tabs => { - let currTab = tabs[0]; - if (currTab) { - let url = new URL(currTab.url); - let newUrl; - newUrl = youtubeHelper.reverse(url); +function copyRaw(test, copyRawElement) { + return new Promise(resolve => { + browser.tabs.query( + { active: true, currentWindow: true }, async tabs => { + let currTab = tabs[0]; + if (currTab) { + let url; + try { + url = new URL(currTab.url); + } catch { resolve(); return; } + let newUrl; + newUrl = await youtubeHelper.reverse(url); - if (!newUrl) newUrl = twitterHelper.reverse(url); - if (!newUrl) newUrl = instagramHelper.reverse(url); - if (!newUrl) newUrl = tiktokHelper.reverse(url); - if (!newUrl) newUrl = imgurHelper.reverse(url); + if (!newUrl) newUrl = await twitterHelper.reverse(url); + if (!newUrl) newUrl = await instagramHelper.reverse(url); + if (!newUrl) newUrl = await tiktokHelper.reverse(url); + if (!newUrl) newUrl = await imgurHelper.reverse(url); - if (newUrl) { - navigator.clipboard.writeText(newUrl); - const textElement = copyRawElement.getElementsByTagName('h4')[0] - const oldHtml = textElement.innerHTML; - textElement.innerHTML = 'Copied'; - setTimeout(() => textElement.innerHTML = oldHtml, 1000); + if (newUrl) { + resolve(true); + if (test) return; + navigator.clipboard.writeText(newUrl); + if (copyRawElement) { + const textElement = copyRawElement.getElementsByTagName('h4')[0] + const oldHtml = textElement.innerHTML; + textElement.innerHTML = 'Copied'; + setTimeout(() => textElement.innerHTML = oldHtml, 1000); + } + } else resolve() } } - } - ) + ) + }) } +function unify(unifyElement) { + return new Promise(resolve => { + browser.tabs.query( + { active: true, currentWindow: true }, + async tabs => { + let currTab = tabs[0] + if (currTab) { + let url; + try { + url = new URL(currTab.url); + } catch { resolve(); return; } -function unify() { - browser.tabs.query( - { active: true, currentWindow: true }, - async tabs => { - let currTab = tabs[0] - if (currTab) { - let url = new URL(currTab.url); + let result = await youtubeHelper.initInvidiousCookies(url); + if (!result) result = await youtubeHelper.initPipedLocalStorage(url, currTab.id); + if (!result) result = await youtubeHelper.initPipedMaterialLocalStorage(url, currTab.id); - let result = await youtubeHelper.initInvidiousCookies(url); - if (!result) result = await youtubeHelper.initPipedLocalStorage(url, currTab.id); - if (!result) result = await youtubeHelper.initPipedMaterialLocalStorage(url, currTab.id); + if (!result) result = await twitterHelper.initNitterCookies(url); - if (!result) result = await twitterHelper.initNitterCookies(url); + if (!result) result = await redditHelper.initLibredditCookies(url); + if (!result) result = await redditHelper.initTedditCookies(url); - if (!result) result = await redditHelper.initLibredditCookies(url); - if (!result) result = await redditHelper.initTedditCookies(url); + if (!result) result = await searchHelper.initSearxCookies(url); + if (!result) result = await searchHelper.initSearxngCookies(url); - if (!result) result = await searchHelper.initSearxCookies(url); - if (!result) result = await searchHelper.initSearxngCookies(url); + if (!result) result = await tiktokHelper.initProxiTokCookies(url); - if (!result) result = await tiktokHelper.initProxiTokCookies(url); + if (!result) result = await wikipediaHelper.initWikilessCookies(url); - if (!result) result = await wikipediaHelper.initWikilessCookies(url); + if (!result) result = await translateHelper.initSimplyTranslateCookies(url); + if (!result) result = await translateHelper.initLingvaLocalStorage(url); - if (!result) result = await translateHelper.initSimplyTranslateCookies(url); - if (!result) result = await translateHelper.initLingvaLocalStorage(url); - - if (result) { - const textElement = unifyElement.getElementsByTagName('h4')[0] - const oldHtml = textElement.innerHTML; - textElement.innerHTML = 'Unified'; - setTimeout(() => textElement.innerHTML = oldHtml, 1000); + if (result) { + resolve(true); + const textElement = unifyElement.getElementsByTagName('h4')[0] + const oldHtml = textElement.innerHTML; + textElement.innerHTML = 'Unified'; + setTimeout(() => textElement.innerHTML = oldHtml, 1000); + } else resolve() } } - } - ) + ) + }) } function switchInstance() { @@ -462,8 +475,6 @@ function latency(name, frontend, document, location, splitNames) { ); } - - export default { getRandomInstance, updateInstances, diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js index c870bff..4bfdc2d 100644 --- a/src/assets/javascripts/helpers/wikipedia.js +++ b/src/assets/javascripts/helpers/wikipedia.js @@ -11,7 +11,6 @@ let redirects = { "i2p": [] } }; -const getRedirects = () => redirects; function setRedirects(val) { redirects.wikiless = val; browser.storage.local.set({ wikipediaRedirects: redirects }) @@ -238,7 +237,6 @@ async function initDefaults() { } export default { - getRedirects, setRedirects, initWikilessCookies, diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js index 27cc539..835a5f8 100644 --- a/src/assets/javascripts/helpers/youtube/youtube.js +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -485,7 +485,7 @@ function setPipedLocalStorage(url, tabId) { }) } -function initPipedMaterialLocalStorage(tabId) { +function initPipedMaterialLocalStorage(url, tabId) { return new Promise(resolve => { browser.storage.local.get( [ diff --git a/src/pages/popup/popup.html b/src/pages/popup/popup.html index b815bc1..db7148c 100644 --- a/src/pages/popup/popup.html +++ b/src/pages/popup/popup.html @@ -94,12 +94,12 @@

Settings

-
+

Copy Raw

-
+
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index e465a7e..dc6c373 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -78,9 +78,16 @@ document.addEventListener("change", () => { }) document.getElementById("change_instance").addEventListener("click", utils.switchInstance); -document.getElementById('copy_raw').addEventListener("click", utils.copyRaw); +let copyRawElement = document.getElementById('copy_raw'); +copyRawElement.addEventListener("click", () => utils.copyRaw(false, copyRawElement)); + +utils.copyRaw(true).then(r => { if (!r) document.getElementById('copy_raw_div').style.display = 'none'; }) +// utils.unify().then(r => { if (!r) document.getElementById('unify_div').style.display = 'none'; }) + document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage()); -document.getElementById('unify').addEventListener("click", unify); + +let unifyElement = document.getElementById('unify'); +unifyElement.addEventListener("click", () => utils.unify(unifyElement)); generalHelper.init().then(() => { let popupFrontends = generalHelper.getPopupFrontends(); diff --git a/src/pages/popup/popup.pug b/src/pages/popup/popup.pug index 97f6d04..1258867 100644 --- a/src/pages/popup/popup.pug +++ b/src/pages/popup/popup.pug @@ -108,12 +108,12 @@ html(lang="en") +settings h4 Settings - .some-block(title="Copy the original redirected link") + #copy_raw_div.some-block(title="Copy the original redirected link") a#copy_raw.title.button +copy_raw h4 Copy Raw - .some-block(title="Unify cookies across all selected instances") + #unify_div.some-block(title="Unify cookies across all selected instances") a#unify.title.button +unify h4 Unify Settings