From c5a6623e0f320b2a789e0d2667ccfe2e1bd4335f Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Mon, 30 May 2022 01:02:59 +0300 Subject: Fixed settings theme and translation flashing #286 --- src/pages/options/general/general.html | 207 ------------------------------ src/pages/options/general/general.js | 224 --------------------------------- src/pages/options/general/general.pug | 176 -------------------------- 3 files changed, 607 deletions(-) delete mode 100644 src/pages/options/general/general.html delete mode 100644 src/pages/options/general/general.js delete mode 100644 src/pages/options/general/general.pug (limited to 'src/pages/options/general') diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html deleted file mode 100644 index 8dd60184..00000000 --- a/src/pages/options/general/general.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - - - General - - - - -
-
-

General

-
-
-
-

Theme

- -
-
-

Auto Redirect of offline instances

- -
-
-

Exceptions

-
-
-
-
-   -   -
- -
-
-
-
- - - - Update Instances    - -     - - -   - Export 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 deleted file mode 100644 index c943ddd8..00000000 --- a/src/pages/options/general/general.js +++ /dev/null @@ -1,224 +0,0 @@ -"use strict"; -window.browser = window.browser || window.chrome; - -import utils from "../../../assets/javascripts/helpers/utils.js"; -import generalHelper from "../../../assets/javascripts/helpers/general.js"; - -import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js"; -import youtubeMusicHelper from "../../../assets/javascripts/helpers/youtubeMusic.js"; -import twitterHelper from "../../../assets/javascripts/helpers/twitter.js"; -import instagramHelper from "../../../assets/javascripts/helpers/instagram.js"; -import redditHelper from "../../../assets/javascripts/helpers/reddit.js"; -import searchHelper from "../../../assets/javascripts/helpers/search.js"; -import translateHelper from "../../../assets/javascripts/helpers/translate/translate.js"; -import mapsHelper from "../../../assets/javascripts/helpers/maps.js"; -import wikipediaHelper from "../../../assets/javascripts/helpers/wikipedia.js"; -import mediumHelper from "../../../assets/javascripts/helpers/medium.js"; -import imgurHelper from "../../../assets/javascripts/helpers/imgur.js"; -import tiktokHelper from "../../../assets/javascripts/helpers/tiktok.js"; -import sendTargetsHelper from "../../../assets/javascripts/helpers/sendTargets.js"; -import peertubeHelper from "../../../assets/javascripts/helpers/peertube.js"; -import lbryHelper from "../../../assets/javascripts/helpers/lbry.js"; - -let updateInstancesElement = document.getElementById("update-instances"); -updateInstancesElement.addEventListener("click", () => { - let oldHtml = updateInstancesElement.innerHTML - updateInstancesElement.innerHTML = '...'; - if (utils.updateInstances()) { - updateInstancesElement.innerHTML = 'Done!'; - new Promise(resolve => setTimeout(resolve, 1500)).then( // sleep 1500ms - () => updateInstancesElement.innerHTML = oldHtml - ) - } - else - updateInstancesElement.innerHTML = 'Failed Miserabely'; -}); - -let exportSettingsElement = document.getElementById("export-settings"); - -function exportSettings() { - browser.storage.local.get( - null, - result => { - let resultString = JSON.stringify(result, null, ' '); - exportSettingsElement.href = 'data:application/json;base64,' + btoa(resultString); - exportSettingsElement.download = 'libredirect-settings.json'; - } - ); -} -exportSettings(); - -browser.storage.onChanged.addListener(exportSettings); - -let importSettingsElement = document.getElementById("import-settings"); -let importSettingsElementText = document.getElementById('import_settings_text'); -importSettingsElement.addEventListener("change", - () => { - let file = importSettingsElement.files[0]; - const reader = new FileReader(); - reader.readAsText(file); - reader.onload = async () => { - const data = JSON.parse(reader.result) - if ( - "theme" in data && - "disableImgur" in data && - "cloudflareList" in data && - "imgurRedirects" in data - ) { - console.log('importing a valid file...'); - await browser.storage.local.set({ ...data }) - location.reload(); - } else - importError() - } - reader.onerror = error => importError(); - } -); -function importError() { - const oldHTML = importSettingsElementText.innerHTML; - importSettingsElementText.innerHTML = 'Error!'; - setTimeout(() => importSettingsElementText.innerHTML = oldHTML, 1000); -} - -document.getElementById("reset-settings").addEventListener("click", - async () => { - await browser.storage.local.clear(); - fetch('/instances/blocklist.json').then(response => response.text()).then(async data => { - await browser.storage.local.set({ cloudflareList: JSON.parse(data) }) - await generalHelper.initDefaults(); - await youtubeHelper.initDefaults(); - await youtubeMusicHelper.initDefaults(); - await twitterHelper.initDefaults(); - await instagramHelper.initDefaults(); - await mapsHelper.initDefaults(); - await searchHelper.initDefaults(); - await translateHelper.initDefaults(); - await mediumHelper.initDefaults(); - await redditHelper.initDefaults(); - await wikipediaHelper.initDefaults(); - await imgurHelper.initDefaults(); - await tiktokHelper.initDefaults(); - await sendTargetsHelper.initDefaults(); - await peertubeHelper.initDefaults(); - await lbryHelper.initDefaults(); - location.reload(); - }) - } -); - -let autoRedirectElement = document.getElementById("auto-redirect") -autoRedirectElement.addEventListener("change", - event => browser.storage.local.set({ autoRedirect: event.target.checked }) -); - -let themeElement = document.getElementById("theme"); -themeElement.addEventListener("change", event => { - const value = event.target.options[theme.selectedIndex].value; - browser.storage.local.set({ theme: value }); -}) - -let nameCustomInstanceInput = document.getElementById("exceptions-custom-instance"); -let instanceTypeElement = document.getElementById("exceptions-custom-instance-type"); -let instanceType = "url" - -let popupFrontends; -for (const frontend of generalHelper.allPopupFrontends) - document.getElementById(frontend).addEventListener("change", - event => { - if (event.target.checked && !popupFrontends.includes(frontend)) - popupFrontends.push(frontend) - else if (popupFrontends.includes(frontend)) { - var index = popupFrontends.indexOf(frontend); - if (index !== -1) popupFrontends.splice(index, 1); - } - browser.storage.local.set({ popupFrontends }) - } - ) - - -browser.storage.local.get( - [ - 'theme', - 'autoRedirect', - 'exceptions' - ], - r => { - autoRedirectElement.checked = r.autoRedirect; - themeElement.value = r.theme; - instanceTypeElement.addEventListener("change", - event => { - instanceType = event.target.options[instanceTypeElement.selectedIndex].value - if (instanceType == 'url') { - nameCustomInstanceInput.setAttribute("type", "url"); - nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com"); - } - else if (instanceType == 'regex') { - nameCustomInstanceInput.setAttribute("type", "text"); - nameCustomInstanceInput.setAttribute("placeholder", "https?:\/\/(www\.|)youtube\.com\/"); - } - } - ) - let exceptionsCustomInstances = r.exceptions; - function calcExceptionsCustomInstances() { - document.getElementById("exceptions-custom-checklist").innerHTML = - [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex].map( - (x) => `
- ${x} - -
-
` - ).join('\n'); - - for (const x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) { - document.getElementById(`clear-${x}`).addEventListener("click", - () => { - console.log(x); - let index; - index = exceptionsCustomInstances.url.indexOf(x); - if (index > -1) - exceptionsCustomInstances.url.splice(index, 1); - else { - index = exceptionsCustomInstances.regex.indexOf(x); - if (index > -1) - exceptionsCustomInstances.regex.splice(index, 1); - } - browser.storage.local.set({ exceptions: exceptionsCustomInstances }) - calcExceptionsCustomInstances(); - }); - } - } - calcExceptionsCustomInstances(); - document.getElementById("custom-exceptions-instance-form").addEventListener("submit", (event) => { - event.preventDefault(); - - let val - if (instanceType == 'url') { - if (nameCustomInstanceInput.validity.valid) { - let url = new URL(nameCustomInstanceInput.value); - val = `${url.protocol}//${url.host}` - if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val) - } - } else if (instanceType == 'regex') { - val = nameCustomInstanceInput.value - if (val.trim() != '' && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val) - } - if (val) { - browser.storage.local.set({ exceptions: exceptionsCustomInstances }) - nameCustomInstanceInput.value = ''; - } - calcExceptionsCustomInstances(); - }) - - browser.storage.local.get('popupFrontends', - r => { - popupFrontends = r.popupFrontends; - for (const frontend of generalHelper.allPopupFrontends) - document.getElementById(frontend).checked = popupFrontends.includes(frontend); - } - ) - }) diff --git a/src/pages/options/general/general.pug b/src/pages/options/general/general.pug deleted file mode 100644 index 3d35c311..00000000 --- a/src/pages/options/general/general.pug +++ /dev/null @@ -1,176 +0,0 @@ -doctype html -html(lang="en") - include ../../widgets/head.pug - title General -body.option(dir="auto") - include ../../widgets/links.pug - +links('general') - - section.option-block - .some-block.option-block - h1 General - hr - - .some-block.option-block - h4(data-localise="__MSG_theme__") Theme - select#theme - option(value="DEFAULT" data-localise="__MSG_system__") System - option(value="light" data-localise="__MSG_light__") Light - option(value="dark" data-localise="__MSG_dark__") Dark - - .some-block.option-block - h4(data-localise="__MSG_autoRedirect__") Auto Redirect of offline instances - input#auto-redirect(type="checkbox") - - .some-block.option-block - h4(data-localise="__MSG_exceptions__") Exceptions - - form#custom-exceptions-instance-form - .some-block.option-block - .some-block(style="padding:0;") - input#exceptions-custom-instance(placeholder="https://www.google.com" type="url") - |  - select#exceptions-custom-instance-type - option(value="url") URL - option(value="regex") Regex - |  - button#exceptions-add-instance.add(type="submit") - svg(xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor") - path(d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z") - - #exceptions-custom-checklist.checklist - - .buttons.buttons-inline - a#update-instances.button.button-inline - svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") - path(d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z") - x(data-localise="__MSG_updateInstances__") Update Instances - - |    - - label#import_settings_text.button.button-inline(for="import-settings") - svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") - path(d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z") - |  - x(data-localise="__MSG_importSettings__") Import Settings - input#import-settings.button.button-inline(type="file" style="display:none;") - - |    - - a#export-settings.button.button-inline - svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") - path(d="M10.09 15.59L11.5 17l5-5-5-5-1.41 1.41L12.67 11H3v2h9.67l-2.58 2.59zM19 3H5c-1.11 0-2 .9-2 2v4h2V5h14v14H5v-4H3v4c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z") - |  - x(data-localise="__MSG_exportSettings__") Export Settings - - |    - - a#reset-settings.button.button-inline - svg(xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") - path(d="M12,5V2L8,6l4,4V7c3.31,0,6,2.69,6,6c0,2.97-2.17,5.43-5,5.91v2.02c3.95-0.49,7-3.85,7-7.93C20,8.58,16.42,5,12,5z") - path(d="M6,13c0-1.65,0.67-3.15,1.76-4.24L6.34,7.34C4.9,8.79,4,10.79,4,13c0,4.08,3.05,7.44,7,7.93v-2.02 C8.17,18.43,6,15.97,6,13z") - x(data-localise="__MSG_resetSettings__") Reset Settings - hr - - .some-block.option-block - h4(data-localise="__MSG_customPopup__") Customize Popup - - #popup-frontends-checklist.checklist-popup - div - div - img(src="../../../assets/images/youtube-icon.png") - |YouTube - input#youtube(type="checkbox") - div - div - img(src="../../../assets/images/youtube-music-icon.png") - |YoutubeMusic - input#youtubeMusic(type="checkbox") - div - div - img(src="../../../assets/images/twitter-icon.png") - |Twitter - input#twitter(type="checkbox") - - div - div - img(src="../../../assets/images/instagram-icon.png") - |Instagram - input#instagram(type="checkbox") - - div - div - img(src="../../../assets/images/tiktok-icon.png") - |TikTok - input#tikTok(type="checkbox") - - div - div - img(src="../../../assets/images/imgur-icon.png") - |Imgur - input#imgur(type="checkbox") - - div - div - img(src="../../../assets/images/reddit-icon.png") - |Reddit - input#reddit(type="checkbox") - - div - div - svg(xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor") - 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") - |Search - input#search(type="checkbox") - - div - div - svg(xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor") - 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") - |Translate - input#translate(type="checkbox") - - div - div - svg(xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor") - 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") - |Maps - input#maps(type="checkbox") - - div - div - img(src="../../../assets/images/wikipedia-icon.svg") - |Wikipedia - input#wikipedia(type="checkbox") - - div - div - 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") - |Medium - input#medium(type="checkbox") - - div - div - img(src="../../../assets/images/peertube-icon.svg") - |PeerTube - input#peertube(type="checkbox") - - div - div - img(src="../../../assets/images/lbry-icon.png") - |LBRY/Odysee - input#lbry(type="checkbox") - - 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") - |Send Files - input#sendTargets(type="checkbox") - - script(type="module" src="../init.js") - script(type="module" src="./general.js") - script(type="module" src="../../../assets/javascripts/localise.js") \ No newline at end of file -- cgit 1.4.1