aboutsummaryrefslogtreecommitdiff
path: root/ui/static/js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/static/js')
-rw-r--r--ui/static/js/bootstrap.js1
-rw-r--r--ui/static/js/feed_handler.js7
-rw-r--r--ui/static/js/nav_handler.js14
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.