about summary refs log tree commit diff stats
path: root/src/pages
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/background/background.js63
-rw-r--r--src/pages/background/reset_warning.html13
-rw-r--r--src/pages/background/reset_warning.js11
-rw-r--r--src/pages/options/index.js9
-rw-r--r--src/pages/options/widgets/general.js89
-rw-r--r--src/pages/popup/popup.js1
6 files changed, 126 insertions, 60 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index b8787f34..afb63c51 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -21,38 +21,59 @@ import lbryHelper from "../../assets/javascripts/lbry.js";
 
 window.browser = window.browser || window.chrome;
 
+function openResetWarning() {
+  return new Promise(resolve => {
+    browser.storage.local.get(null, r => {
+      const old = encodeURIComponent(JSON.stringify(r))
+      browser.tabs.create({ url: browser.runtime.getURL(`/pages/background/reset_warning.html?data=${old}`) });
+      resolve();
+    })
+  })
+}
+
+
 browser.runtime.onInstalled.addListener(
   async details => {
     // if (details.reason == 'install') {
-    if (details.reason == 'install' || details.reason == "update") {
-      if (details.reason == "update") browser.tabs.create({ url: browser.runtime.getURL("/pages/background/reset_warning.html") });
+    if (details.reason == 'install' || (details.reason == "update" && details.previousVersion != browser.runtime.getManifest().version)) {
+      if (details.reason == "update") await openResetWarning();
       fetch('/instances/blacklist.json').then(response => response.text()).then(async data => {
-        await browser.storage.local.clear();
-        await browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare })
-        await browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate })
-        generalHelper.initDefaults();
-        youtubeHelper.initDefaults();
-        youtubeMusicHelper.initDefaults();
-        twitterHelper.initDefaults();
-        instagramHelper.initDefaults();
-        mapsHelper.initDefaults();
-        searchHelper.initDefaults();
-        translateHelper.initDefaults();
-        mediumHelper.initDefaults();
-        redditHelper.initDefaults();
-        wikipediaHelper.initDefaults();
-        imgurHelper.initDefaults();
-        tiktokHelper.initDefaults();
-        sendTargetsHelper.initDefaults();
-        peertubeHelper.initDefaults();
-        lbryHelper.initDefaults();
+        browser.storage.local.clear(
+          () => {
+            browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare },
+              () => {
+                browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate },
+                  () => {
+                    generalHelper.initDefaults();
+                    youtubeHelper.initDefaults();
+                    youtubeMusicHelper.initDefaults();
+                    twitterHelper.initDefaults();
+                    instagramHelper.initDefaults();
+                    mapsHelper.initDefaults();
+                    searchHelper.initDefaults();
+                    translateHelper.initDefaults();
+                    mediumHelper.initDefaults();
+                    redditHelper.initDefaults();
+                    wikipediaHelper.initDefaults();
+                    imgurHelper.initDefaults();
+                    tiktokHelper.initDefaults();
+                    sendTargetsHelper.initDefaults();
+                    peertubeHelper.initDefaults();
+                    lbryHelper.initDefaults();
+                  })
+              })
+          });
+
       })
     }
   }
 )
 
 youtubeHelper.pasteInvidiousCookies();
+youtubeHelper.pastePipedLocalStorage();
+youtubeHelper.pastePipedMaterialLocalStorage();
 translateHelper.pasteSimplyTranslateCookies();
+translateHelper.pasteLingvaLocalStorage();
 twitterHelper.pasteNitterCookies();
 wikipediaHelper.pasteWikilessCookies();
 searchHelper.pasteSearxCookies();
diff --git a/src/pages/background/reset_warning.html b/src/pages/background/reset_warning.html
index a3feee72..d2d493e0 100644
--- a/src/pages/background/reset_warning.html
+++ b/src/pages/background/reset_warning.html
@@ -47,7 +47,20 @@
             previous version.</p>
         <p>Sorry for the inconvenience, but we're going in a fast development process and can't
             support nor convert older settings. It will reach a stable plateau though.</p>
+
+
+            <a id="export-settings" class="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">
+                    </path>
+                </svg>
+                &nbsp;
+                <x data-localise="__MSG_exportSettings__">Export Settings</x>
+            </a>
     </div>
 </body>
+<script src="reset_warning.js"></script>
 
 </html>
\ No newline at end of file
diff --git a/src/pages/background/reset_warning.js b/src/pages/background/reset_warning.js
new file mode 100644
index 00000000..9c9e9800
--- /dev/null
+++ b/src/pages/background/reset_warning.js
@@ -0,0 +1,11 @@
+let params = new URLSearchParams(location.search);
+
+const resultString = JSON.stringify(
+    JSON.parse(decodeURIComponent(params.get('data'))),
+    null,
+    '  '
+);
+
+let exportSettingsElement = document.getElementById("export-settings");
+exportSettingsElement.href = 'data:application/json;base64,' + btoa(resultString);
+exportSettingsElement.download = 'libredirect-settings.json';
diff --git a/src/pages/options/index.js b/src/pages/options/index.js
index 39f9c8f3..b6fcf6b8 100644
--- a/src/pages/options/index.js
+++ b/src/pages/options/index.js
@@ -1,3 +1,12 @@
+import youtubeHelper from "../../assets/javascripts/youtube/youtube.js";
+import twitterHelper from "../../assets/javascripts/twitter.js";
+import redditHelper from "../../assets/javascripts/reddit.js";
+import searchHelper from "../../assets/javascripts/search.js";
+import translateHelper from "../../assets/javascripts/translate/translate.js";
+import wikipediaHelper from "../../assets/javascripts/wikipedia.js";
+import tiktokHelper from "../../assets/javascripts/tiktok.js";
+
+
 for (const a of document.getElementById('links').getElementsByTagName('a')) {
     a.addEventListener('click', e => {
         const path = a.getAttribute('href').replace('#', '');
diff --git a/src/pages/options/widgets/general.js b/src/pages/options/widgets/general.js
index f2ed341a..f46c4011 100644
--- a/src/pages/options/widgets/general.js
+++ b/src/pages/options/widgets/general.js
@@ -63,30 +63,36 @@ importSettingsElement.addEventListener("change",
       if (
         "theme" in data &&
         "disableImgur" in data &&
-        "cloudflareBlackList" in data &&
         "imgurRedirects" in data
       ) {
-        await browser.storage.local.clear();
-        await browser.storage.local.set({ ...data })
-        await youtubeHelper.pasteInvidiousCookies();
-        await youtubeHelper.pastePipedLocalStorage();
-        await youtubeHelper.pastePipedMaterialLocalStorage();
+        browser.storage.local.clear(
+          () => {
+            browser.storage.local.set({ ...data },
+              async () => {
+                await youtubeHelper.pasteInvidiousCookies();
+                await youtubeHelper.pastePipedLocalStorage();
+                await youtubeHelper.pastePipedMaterialLocalStorage();
+
+                await translateHelper.pasteSimplyTranslateCookies();
+                await translateHelper.pasteLingvaLocalStorage();
+
+                await twitterHelper.pasteNitterCookies();
 
-        await translateHelper.pasteSimplyTranslateCookies();
-        await translateHelper.pasteLingvaLocalStorage();
+                await wikipediaHelper.pasteWikilessCookies();
 
-        await twitterHelper.pasteNitterCookies();
+                await searchHelper.pasteSearxCookies();
+                await searchHelper.pasteSearxngCookies();
 
-        await wikipediaHelper.pasteWikilessCookies();
+                await redditHelper.pasteLibredditCookies();
+                await redditHelper.pasteTedditCookies();
 
-        await searchHelper.pasteSearxCookies();
-        await searchHelper.pasteSearxngCookies();
+                await tiktokHelper.pasteProxiTokCookies();
+                
+                location.reload();
+              })
 
-        await redditHelper.pasteLibredditCookies();
-        await redditHelper.pasteTedditCookies();
+          });
 
-        await tiktokHelper.pasteProxiTokCookies();
-        location.reload();
       } else
         importError()
     }
@@ -103,28 +109,35 @@ const resetSettings = document.getElementById("reset-settings");
 resetSettings.addEventListener("click",
   async () => {
     resetSettings.innerHTML = '...'
-    await browser.storage.local.clear();
-    fetch('/instances/blacklist.json').then(response => response.text()).then(async data => {
-      await browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare })
-      await browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate })
-      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();
-    })
+    browser.storage.local.clear(
+      () => {
+        fetch('/instances/blacklist.json').then(response => response.text()).then(async data => {
+          browser.storage.local.set({ cloudflareBlackList: JSON.parse(data).cloudflare },
+            () => {
+              browser.storage.local.set({ authenticateBlackList: JSON.parse(data).authenticate },
+                async () => {
+                  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();
+                })
+            })
+        })
+      });
+
   }
 );
 
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index d4459917..17eeb2ca 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -34,7 +34,6 @@ utils.copyRaw(true).then(r => {
 
 document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage());
 
-
 let disableTwitterElement = document.getElementById("disable-nitter");
 let disableYoutubeElement = document.getElementById("disable-youtube");
 let disableYoutubeMusicElement = document.getElementById("disable-youtubeMusic");