diff of 5926e9cc36e0e7f3ded844c180958b567f6c020d

5926e9cc36e0e7f3ded844c180958b567f6c020d
diff --git a/src/view/rss.lisp b/src/view/rss.lisp
index daf469d..3c34957 100644
--- a/src/view/rss.lisp
+++ b/src/view/rss.lisp
@@ -1,7 +1,8 @@
 (defpackage murja.view.rss
-  (:use :cl :binding-arrows :spinneret :murja.rss.reader-db)
+  (:use :cl :binding-arrows :spinneret :murja.rss.reader-db :easy-routes :ps :paren-async)
   (:import-from :murja.view.components.tabs :deftab)
-  (:import-from :murja.middleware.auth :*user*)
+  (:import-from :murja.middleware.auth :*user* :@ssr-authenticated)
+  (:import-from :murja.middleware.db :@db)
   (:import-from :murja.model.user :user-id))
 
 (in-package :murja.view.rss)
@@ -17,7 +18,7 @@ RETURNING id, title, description, link, author, pubdate" item-id feed-id :list))
     (destructuring-bind (id title description link author pubdate) post-row
       (let ((p (make-instance 'murja.model.post:RSS-Post
 			      :created-at pubdate
-			      :id nil
+			      :id id
 			      :tags nil
 			      :creator (make-instance 'murja.model.user:user
 						      :nickname author)
@@ -50,16 +51,48 @@ ORDER BY pubdate DESC" feed-id (not (not archived))))
     (:ul
      (dolist (item items)
        (destructuring-bind (id fetched title link author pubdate) item
+	 (declare (ignore fetched link author))
 	 (:li (:a :href (easy-routes:genurl 'rss-single-item :feed-id feed-id :item-id id)  title)
 	      (:section ("Published ~a" (lisp-fixup:fix-timestamp pubdate)))))))))
 
 
+(defroute delete-feed-route ("/blog/feed/:id"
+			     :decorators (@db
+					  @ssr-authenticated)
+			     :method :delete ) ()
+  (murja.rss.reader-db:delete-feed id (murja.model.user:user-id *user*))
+  (setf (hunchentoot:return-code*) 204)
+  "")
+
+(defun delete-script ()
+  (ps
+
+    (defun-async delete-feed (feed-id)
+      (let ((result (await (fetch (+ "/blog/feed/" feed-id)
+				  (create method "DELETE")))))
+	(if (equal 204 (await (@ result status)))
+	    (chain location (reload))
+	    (alert (+ "FAIL " (await (chain result (text))))))))
+    
+    (chain document
+	   (add-event-listener "DOMContentLoaded"
+			       (lambda (e)
+				 (let ((buttons (chain
+						 document
+						 (query-selector-all "button.remove-feed"))))
+				   (dolist (b buttons)
+				     (chain b
+					    (add-event-listener "click"
+								(lambda (e)
+								  (when (confirm (+ "Are you sure you wish to DELETE " (@ e target dataset feedname) "?"))
+								    (delete-feed (@ e target dataset feedid)))))))))))))
 
 (deftab rss (:url "/blog/feeds/"
 	     :title "RSS Feeds"
 	     :require-login t)
   (let ((feeds (get-user-feeds2 (user-id *user*) nil))
 	(lisp-fixup:*rfc822* t))
+    (:script (:raw (delete-script)))
     (:ul.flowy-list
      (dolist (feed feeds)
        (destructuring-bind (id name url count last-modified) feed
@@ -68,4 +101,6 @@ ORDER BY pubdate DESC" feed-id (not (not archived))))
 	   (:a :href (easy-routes:genurl 'rss-single-feed :feed-id id) (format nil "~a (~d)" name count)))
 	  (:div "Feed is located in " (:a :href url url))
 	  (:div ("Last updated ~a" (unless (equalp last-modified :NULL)
-				     (lisp-fixup:fix-timestamp last-modified))))))))))
+				     (lisp-fixup:fix-timestamp last-modified))))
+
+	  (:button.remove-feed :data-feedid id :data-feedname name "DELETE THIS FEED")))))))