about summary refs log tree commit diff stats
path: root/src/pages/popup/popup.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/popup/popup.js')
-rw-r--r--src/pages/popup/popup.js31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js
index 14f59dfc..53e8c103 100644
--- a/src/pages/popup/popup.js
+++ b/src/pages/popup/popup.js
@@ -59,6 +59,7 @@ async function wholeInit() {
   await mediumHelper.init();
 };
 
+let copyRawElement = document.getElementById('copy_raw');
 wholeInit().then(() => {
   disableTwitterElement.checked = !twitterHelper.getDisable();
   disableYoutubeElement.checked = !youtubeHelper.getDisable();
@@ -79,6 +80,7 @@ wholeInit().then(() => {
 
   let changeInstanceElement = document.getElementById("change-instance")
   changeInstanceElement.addEventListener("click", switchInstance);
+  copyRawElement.addEventListener("click", copyRaw);
 })
 
 disableTwitterElement.addEventListener("change",
@@ -153,7 +155,6 @@ document.getElementById("more-options").addEventListener("click",
   () => browser.runtime.openOptionsPage()
 );
 
-
 function switchInstance() {
   browser.tabs.query({ active: true, currentWindow: true }, function (tabs) {
     let currTab = tabs[0];
@@ -197,6 +198,34 @@ function switchInstance() {
   return false;
 }
 
+function copyRaw() {
+  browser.tabs.query({ active: true, currentWindow: true }, function (tabs) {
+    let currTab = tabs[0];
+    if (currTab) {
+      let url = currTab.url;
+      let tabUrl
+      try { tabUrl = new URL(url); }
+      catch (_) { return false; }
+      let newUrl;
+      newUrl = youtubeHelper.reverse(tabUrl);
+      if (!newUrl) newUrl = twitterHelper.reverse(tabUrl);
+      if (!newUrl) newUrl = instagramHelper.reverse(tabUrl);
+      if (!newUrl) newUrl = tiktokHelper.reverse(tabUrl);
+      if (!newUrl) newUrl = imgurHelper.reverse(tabUrl);
+      if (newUrl) {
+        navigator.clipboard.writeText(newUrl);
+        const oldHtml = copyRawElement.innerHTML;
+        copyRawElement.innerHTML = `
+        <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor">
+          <path d="M9 16.2L4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4L9 16.2z"/>
+        </svg>
+        Copied`;
+        setTimeout(() => copyRawElement.innerHTML = oldHtml, 1000);
+      }
+    }
+  })
+}
+
 let popupFrontends;
 generalHelper.init().then(() => {
   popupFrontends = generalHelper.getPopupFrontends();