From 0f30806ef56ecee5d33694514b65e69b2caf252c Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Thu, 14 Apr 2022 17:13:41 +0300 Subject: Adding speedtest #170. Adding Pug templates structure Signed-off-by: ManeraKai --- src/assets/images/librespeed-icon.svg | 497 ++++++++++++++++++++++++++++ src/assets/javascripts/helpers/speedtest.js | 173 ++++++++++ src/assets/javascripts/helpers/twitter.js | 2 - src/pages/options/general/general.html | 399 ++++++++-------------- src/pages/options/general/general.js | 4 +- src/pages/options/speedtest/speedtest.html | 220 ++++++++++++ src/pages/options/speedtest/speedtest.js | 59 ++++ src/pages/stylesheets/styles.css | 8 +- 8 files changed, 1089 insertions(+), 273 deletions(-) create mode 100644 src/assets/images/librespeed-icon.svg create mode 100644 src/assets/javascripts/helpers/speedtest.js create mode 100644 src/pages/options/speedtest/speedtest.html create mode 100644 src/pages/options/speedtest/speedtest.js (limited to 'src') diff --git a/src/assets/images/librespeed-icon.svg b/src/assets/images/librespeed-icon.svg new file mode 100644 index 00000000..8691d7a3 --- /dev/null +++ b/src/assets/images/librespeed-icon.svg @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/javascripts/helpers/speedtest.js b/src/assets/javascripts/helpers/speedtest.js new file mode 100644 index 00000000..1e2fddeb --- /dev/null +++ b/src/assets/javascripts/helpers/speedtest.js @@ -0,0 +1,173 @@ +window.browser = window.browser || window.chrome; + +import commonHelper from './common.js' + +const targets = [ + /^https?:\/{2}(www\.|)speedtest\.net\/$/ +]; + +let redirects = { + "librespeed": { + "normal": [ + "https://librespeed.org" + ], + "tor": [] + } +} + +const getRedirects = () => redirects; +const getCustomRedirects = function () { + return { + "librespeed": { + "normal": [...librespeedNormalRedirectsChecks, ...librespeedNormalCustomRedirects], + "tor": [] + }, + }; +}; + +function setRedirects(val) { + redirects.librespeed = val; + browser.storage.local.set({ speedtestRedirects: redirects }) + console.log("speedtestRedirects: ", val) + for (const item of librespeedNormalRedirectsChecks) + if (!redirects.librespeed.normal.includes(item)) { + var index = librespeedNormalRedirectsChecks.indexOf(item); + if (index !== -1) librespeedNormalRedirectsChecks.splice(index, 1); + } + setLibrespeedNormalRedirectsChecks(librespeedNormalRedirectsChecks); + + for (const item of librespeedTorRedirectsChecks) + if (!redirects.librespeed.normal.includes(item)) { + var index = librespeedTorRedirectsChecks.indexOf(item); + if (index !== -1) librespeedTorRedirectsChecks.splice(index, 1); + } + setLibrespeedTorRedirectsChecks(librespeedTorRedirectsChecks); +} + +let librespeedNormalRedirectsChecks; +const getLibrespeedNormalRedirectsChecks = () => librespeedNormalRedirectsChecks; +function setLibrespeedNormalRedirectsChecks(val) { + librespeedNormalRedirectsChecks = val; + browser.storage.local.set({ librespeedNormalRedirectsChecks }) + console.log("librespeedNormalRedirectsChecks: ", val) +} + +let librespeedTorRedirectsChecks; +const getLibrespeedTorRedirectsChecks = () => librespeedTorRedirectsChecks; +function setLibrespeedTorRedirectsChecks(val) { + librespeedTorRedirectsChecks = val; + browser.storage.local.set({ librespeedTorRedirectsChecks }) + console.log("librespeedTorRedirectsChecks: ", val) +} + +let librespeedNormalCustomRedirects = []; +const getLibrespeedNormalCustomRedirects = () => librespeedNormalCustomRedirects; +function setLibrespeedNormalCustomRedirects(val) { + librespeedNormalCustomRedirects = val; + browser.storage.local.set({ librespeedNormalCustomRedirects }) + console.log("librespeedNormalCustomRedirects: ", val) +} + +let librespeedTorCustomRedirects = []; +const getLibrespeedTorCustomRedirects = () => librespeedTorCustomRedirects; +function setLibrespeedTorCustomRedirects(val) { + librespeedTorCustomRedirects = val; + browser.storage.local.set({ librespeedTorCustomRedirects }) + console.log("librespeedTorCustomRedirects: ", val) +} + +let disable; +const getDisable = () => disable; +function setDisable(val) { + disable = val; + browser.storage.local.set({ disableSpeedtest: disable }) + console.log("disableSpeedtest", val); +} + +let protocol; +const getProtocol = () => protocol; +function setProtocol(val) { + protocol = val; + browser.storage.local.set({ speedtestProtocol: val }) + console.log("speedtestProtocol: ", val) +} + +function redirect(url, type, initiator) { + if (disable) return null; + if (initiator && ([...redirects.librespeed.normal, ...librespeedNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null; + if (!targets.some(rx => rx.test(url.href))) return null; + console.log("Librespeed!!"); + + if (type != "main_frame" && type != "sub_frame") return null; + + let instancesList; + if (protocol == 'normal') instancesList = [...librespeedNormalRedirectsChecks, ...librespeedNormalCustomRedirects]; + if (protocol == 'tor') instancesList = [...librespeedTorRedirectsChecks, ...librespeedTorCustomRedirects]; + if (instancesList.length === 0) return null; + let randomInstance = commonHelper.getRandomInstance(instancesList); + + return `${randomInstance}`; +} + +async function init() { + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + browser.storage.local.get( + [ + "disableSpeedtest", + "speedtestRedirects", + + "librespeedNormalRedirectsChecks", + "librespeedNormalCustomRedirects", + + "librespeedTorRedirectsChecks", + "librespeedTorCustomRedirects", + + "speedtestProtocol" + ], + r => { + disable = r.disableSpeedtest ?? true; + + protocol = r.speedtestProtocol ?? "normal"; + + if (r.speedtestRedirects) redirects = r.speedtestRedirects; + + librespeedNormalRedirectsChecks = r.librespeedNormalRedirectsChecks ?? [...redirects.librespeed.normal]; + librespeedNormalCustomRedirects = r.librespeedNormalCustomRedirects ?? []; + + librespeedTorRedirectsChecks = r.librespeedTorRedirectsChecks ?? [...redirects.librespeed.tor]; + librespeedTorCustomRedirects = r.librespeedTorCustomRedirects ?? []; + + resolve(); + } + ) + }); + }); +} + +export default { + + getRedirects, + getCustomRedirects, + setRedirects, + + getDisable, + setDisable, + + getProtocol, + setProtocol, + + getLibrespeedNormalRedirectsChecks, + setLibrespeedNormalRedirectsChecks, + getLibrespeedTorRedirectsChecks, + setLibrespeedTorRedirectsChecks, + + getLibrespeedTorCustomRedirects, + setLibrespeedTorCustomRedirects, + getLibrespeedNormalCustomRedirects, + setLibrespeedNormalCustomRedirects, + + redirect, + init, +}; diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js index a333777d..e58af78b 100644 --- a/src/assets/javascripts/helpers/twitter.js +++ b/src/assets/javascripts/helpers/twitter.js @@ -277,7 +277,6 @@ function isNitter(url, type) { ].includes(protocolHost); } -let applyThemeToSites; function initNitterCookies() { if (enableCustomSettings) { let allInstances = [...redirects.nitter.normal, ...redirects.nitter.tor, ...nitterNormalCustomRedirects, ...nitterTorCustomRedirects] @@ -410,7 +409,6 @@ async function init() { alwaysUsePreferred = r.alwaysUsePreferred ?? false; theme = r.theme ?? 'DEFAULT'; - applyThemeToSites = r.applyThemeToSites ?? false; redirects.nitter = dataJson.nitter; if (r.twitterRedirects) redirects = r.twitterRedirects; diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html index a72c1fb3..415d6480 100644 --- a/src/pages/options/general/general.html +++ b/src/pages/options/general/general.html @@ -1,113 +1,61 @@ - - - - - - - - LibRedirect Options - - - + + + + + + + Document + + + -

Theme

@@ -117,244 +65,159 @@
-

Apply Theme to sites

- +
-

Always use Preferred Instances

- +
-

Auto Redirect of offline instances

- +
-

Exceptions

-
- -   +   -   +  
-
- -
- +
- + - Update Instances - -     -     - +   - Export Settings - -     - - - - - - - - + Export Settings    + + + - Reset Settings - + Reset Settings
-
-

Customize Popup

-
- - - - - - - + \ No newline at end of file diff --git a/src/pages/options/general/general.js b/src/pages/options/general/general.js index c737759f..3b939477 100644 --- a/src/pages/options/general/general.js +++ b/src/pages/options/general/general.js @@ -109,7 +109,7 @@ generalHelper.init().then(() => { } else if (instanceType == 'regex') { nameCustomInstanceInput.setAttribute("type", "text"); - nameCustomInstanceInput.setAttribute("placeholder", "https?:\/\/(www\.|music|)youtube\.com\/watch\?v\=..*"); + nameCustomInstanceInput.setAttribute("placeholder", "https?:\/\/(www\.|)youtube\.com\/"); } } ) @@ -170,6 +170,6 @@ generalHelper.init().then(() => { }) popupFrontends = generalHelper.getPopupFrontends(); - for (const frontend of generalHelper.allPopupFrontends) + for (const frontend of generalHelper.allPopupFrontends) document.getElementById(frontend).checked = popupFrontends.includes(frontend); }) \ No newline at end of file diff --git a/src/pages/options/speedtest/speedtest.html b/src/pages/options/speedtest/speedtest.html new file mode 100644 index 00000000..41d69989 --- /dev/null +++ b/src/pages/options/speedtest/speedtest.html @@ -0,0 +1,220 @@ + + + + + + + + + + LibRedirect: Speedtest + + + + + +
+
+

Enable

+ +
+ +
+

+ Frontend: This isn't a fully private frontend +

+ +
+ +
+ +
+

Protocol

+ +
+ +
+ +
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+ + + + + + + + diff --git a/src/pages/options/speedtest/speedtest.js b/src/pages/options/speedtest/speedtest.js new file mode 100644 index 00000000..a9a11e18 --- /dev/null +++ b/src/pages/options/speedtest/speedtest.js @@ -0,0 +1,59 @@ +import pixivHelper from "../../../assets/javascripts/helpers/pixiv.js"; +import commonHelper from "../../../assets/javascripts/helpers/common.js"; + +let disablePixivElement = document.getElementById("disable-pixiv"); +disablePixivElement.addEventListener("change", + (event) => pixivHelper.setDisable(!event.target.checked) +); + +let protocolElement = document.getElementById("protocol") +protocolElement.addEventListener("change", + (event) => { + let protocol = event.target.options[protocolElement.selectedIndex].value + pixivHelper.setProtocol(protocol); + changeProtocolSettings(protocol); + } +); + +function changeProtocolSettings(protocol) { + let normalDiv = document.getElementsByClassName("normal")[0]; + let torDiv = document.getElementsByClassName("tor")[0]; + if (protocol == 'normal') { + normalDiv.style.display = 'block'; + torDiv.style.display = 'none'; + } + else if (protocol == 'tor') { + normalDiv.style.display = 'none'; + torDiv.style.display = 'block'; + } +} + +pixivHelper.init().then(() => { + disablePixivElement.checked = !pixivHelper.getDisable(); + + let protocol = pixivHelper.getProtocol(); + protocolElement.value = protocol; + changeProtocolSettings(protocol); + + commonHelper.processDefaultCustomInstances( + 'pixivMoe', + 'normal', + pixivHelper, + document, + pixivHelper.getPixivMoeNormalRedirectsChecks, + pixivHelper.setPixivMoeNormalRedirectsChecks, + pixivHelper.getPixivMoeNormalCustomRedirects, + pixivHelper.setPixivMoeNormalCustomRedirects + ); + + commonHelper.processDefaultCustomInstances( + 'pixivMoe', + 'tor', + pixivHelper, + document, + pixivHelper.getPixivMoeTorRedirectsChecks, + pixivHelper.setPixivMoeTorRedirectsChecks, + pixivHelper.getPixivMoeTorCustomRedirects, + pixivHelper.setPixivMoeTorCustomRedirects + ) +}) \ No newline at end of file diff --git a/src/pages/stylesheets/styles.css b/src/pages/stylesheets/styles.css index a98adc29..01a3d89d 100644 --- a/src/pages/stylesheets/styles.css +++ b/src/pages/stylesheets/styles.css @@ -94,6 +94,11 @@ select { border-radius: 3px; } +input[type="url"], +input[type="text"] { + width: 400px; +} + input:invalid { color: var(--danger); border-color: var(--danger); @@ -108,7 +113,8 @@ section.option-block { width: 700px; margin: 0 50px; } -section.option-block h2{ + +section.option-block h2 { margin: 0; } -- cgit 1.4.1