diff options
Diffstat (limited to 'ui/static/js')
-rw-r--r-- | ui/static/js/bootstrap.js | 1 | ||||
-rw-r--r-- | ui/static/js/feed_handler.js | 7 | ||||
-rw-r--r-- | ui/static/js/nav_handler.js | 14 |
3 files changed, 22 insertions, 0 deletions
diff --git a/ui/static/js/bootstrap.js b/ui/static/js/bootstrap.js index a89799ac..3c2bb359 100644 --- a/ui/static/js/bootstrap.js +++ b/ui/static/js/bootstrap.js @@ -28,6 +28,7 @@ document.addEventListener("DOMContentLoaded", function() { keyboardHandler.on("d", () => navHandler.fetchOriginalContent()); keyboardHandler.on("f", () => navHandler.toggleBookmark()); keyboardHandler.on("?", () => navHandler.showKeyboardShortcuts()); + keyboardHandler.on("#", () => navHandler.unsubscribeFromFeed()); keyboardHandler.on("/", (e) => navHandler.setFocusToSearchInput(e)); keyboardHandler.on("Escape", () => ModalHandler.close()); keyboardHandler.listen(); diff --git a/ui/static/js/feed_handler.js b/ui/static/js/feed_handler.js new file mode 100644 index 00000000..1d4190f5 --- /dev/null +++ b/ui/static/js/feed_handler.js @@ -0,0 +1,7 @@ +class FeedHandler { + static unsubscribe(feedUrl, callback) { + let request = new RequestBuilder(feedUrl); + request.withCallback(callback); + request.execute(); + } +} diff --git a/ui/static/js/nav_handler.js b/ui/static/js/nav_handler.js index 5d2474b6..5f611e0a 100644 --- a/ui/static/js/nav_handler.js +++ b/ui/static/js/nav_handler.js @@ -129,6 +129,20 @@ class NavHandler { } } + unsubscribeFromFeed() { + let unsubscribeLinks = document.querySelectorAll("[data-action=remove-feed]"); + if (unsubscribeLinks.length === 1) { + let unsubscribeLink = unsubscribeLinks[0]; + FeedHandler.unsubscribe(unsubscribeLink.dataset.url, () => { + if (unsubscribeLink.dataset.redirectUrl) { + window.location.href = unsubscribeLink.dataset.redirectUrl; + } else { + window.location.reload(); + } + }); + } + } + /** * @param {string} page Page to redirect to. * @param {boolean} fallbackSelf Refresh actual page if the page is not found. |