diff options
Diffstat (limited to 'src/pages/popup/popup.js')
-rw-r--r-- | src/pages/popup/popup.js | 31 |
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(); |