From b91ae8e81629536b8cd163c40951ec1a7ff48e0e Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Thu, 9 Feb 2023 01:31:45 +0300 Subject: [PATCH] Added support for bookmarks https://github.com/libredirect/libredirect/issues/568 --- src/manifest.json | 1 + src/pages/background/background.js | 64 ++++++++++++++++++++++++++---- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index 2b51953..f72e5b6 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -25,6 +25,7 @@ "storage", "clipboardWrite", "contextMenus", + "bookmarks", "" ], "browser_action": { diff --git a/src/pages/background/background.js b/src/pages/background/background.js index faeaf00..3e55a86 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -138,7 +138,26 @@ browser.contextMenus.create({ contexts: ["link"], }) -browser.contextMenus.onClicked.addListener(async (info, tab) => { +browser.contextMenus.create({ + id: "redirectBookmark", + title: 'Redirect', + contexts: ["bookmark"], +}) + +browser.contextMenus.create({ + id: "reverseBookmark", + title: 'Reverse redirect', + contexts: ["bookmark"], +}) + +browser.contextMenus.create({ + id: "copyReverseBookmark", + title: 'Copy Reverse', + contexts: ["bookmark"], +}) + + +browser.contextMenus.onClicked.addListener(async (info) => { switch (info.menuItemId) { case 'switchInstance': { const url = new URL(info.pageUrl) @@ -161,8 +180,9 @@ browser.contextMenus.onClicked.addListener(async (info, tab) => { const url = new URL(info.pageUrl) const newUrl = await servicesHelper.reverse(url) if (newUrl) { - tabIdRedirects[tab.id] = false - browser.tabs.update({ url: newUrl }) + browser.tabs.create({ url: newUrl }, tab => { + tabIdRedirects[tab.id] = false + }) } return } @@ -170,8 +190,9 @@ browser.contextMenus.onClicked.addListener(async (info, tab) => { const url = new URL(info.pageUrl) const newUrl = servicesHelper.redirect(url, "main_frame", null, true) if (newUrl) { - tabIdRedirects[tab.id] = true - browser.tabs.update({ url: newUrl }) + browser.tabs.create({ url: newUrl }, tab => { + tabIdRedirects[tab.id] = false + }) } return } @@ -191,12 +212,41 @@ browser.contextMenus.onClicked.addListener(async (info, tab) => { const url = new URL(info.linkUrl) const newUrl = await servicesHelper.reverse(url) if (newUrl) { - tabIdRedirects[tab.id] = false - browser.tabs.create({ url: newUrl }) + browser.tabs.create({ url: newUrl }, tab => { + tabIdRedirects[tab.id] = false + }) } return } + case 'copyReverseBookmark': { + browser.bookmarks.get(info.bookmarkId, bookmarks => { + const url = new URL(bookmarks[0].url) + servicesHelper.copyRaw(url) + }); + return + } + case 'redirectBookmark': { + browser.bookmarks.get(info.bookmarkId, bookmarks => { + const url = new URL(bookmarks[0].url) + const newUrl = servicesHelper.redirect(url, "main_frame", null, true) + if (newUrl) browser.tabs.create({ url: newUrl }) + }) + return + } + case 'reverseBookmark': { + browser.bookmarks.get(info.bookmarkId, async bookmarks => { + const url = new URL(bookmarks[0].url) + const newUrl = await servicesHelper.reverse(url) + if (newUrl) { + browser.tabs.update({ url: newUrl }, tab => { + tabIdRedirects[tab.id] = false + }) + } + }) + return + } + } })