Fix race condition on page delete.

This commit is contained in:
Andrey Antukh 2016-03-29 21:56:10 +03:00
parent f43faa30b6
commit 7caba13173
2 changed files with 11 additions and 7 deletions

View file

@ -177,21 +177,24 @@
;; --- Delete Page (by id) ;; --- Delete Page (by id)
(defrecord DeletePage [id] (defrecord DeletePage [id next]
rs/WatchEvent rs/WatchEvent
(-apply-watch [_ state s] (-apply-watch [_ state s]
(letfn [(on-success [_] (letfn [(on-success [_]
(rs/swap #(stpr/purge-page % id))) (rx/of
(rs/swap #(stpr/purge-page % id))
next))
(on-failure [e] (on-failure [e]
(uum/error (tr "errors.delete-page")) (uum/error (tr "errors.delete-page"))
(rx/empty))] (rx/empty))]
(->> (rp/do :delete/page id) (->> (rp/do :delete/page id)
(rx/map on-success) (rx/mapcat on-success)
(rx/filter identity)
(rx/catch on-failure))))) (rx/catch on-failure)))))
(defn delete-page (defn delete-page
[id] ([id] (DeletePage. id nil))
(DeletePage. id)) ([id next] (DeletePage. id next)))
;; --- Pinned Page History Fetched ;; --- Pinned Page History Fetched

View file

@ -52,8 +52,9 @@
delete (fn [e] delete (fn [e]
(dom/prevent-default e) (dom/prevent-default e)
(dom/stop-propagation e) (dom/stop-propagation e)
(rs/emit! (udp/delete-page (:id page)) (let [next (dp/go-to (:project page))
(dp/go-to (:project page))))] event (udp/delete-page (:id page) next)]
(rs/emit! event)))]
(html (html
[:li {:class (when active? "selected") [:li {:class (when active? "selected")
:on-click navigate} :on-click navigate}