Refactor page changes watching mechanism.

This commit is contained in:
Andrey Antukh 2016-11-28 23:47:50 +01:00
parent 3accc4b66e
commit 91fb68f906
No known key found for this signature in database
GPG key ID: 4DFEBCB8316A8B95
5 changed files with 76 additions and 75 deletions

View file

@ -47,49 +47,35 @@
[own]
(let [[projectid pageid] (:rum/args own)
sub1 (scroll/watch-scroll-interactions own)
sub2 (udp/watch-page-changes pageid)
sub3 (udu/watch-page-changes pageid)
sub4 (udh/watch-page-changes)
dom (mx/ref-node own "workspace-canvas")]
(st/emit! (udp/watch-page-changes pageid)
(udu/watch-page-changes pageid)
(udh/watch-page-changes pageid))
;; Set initial scroll position
(set! (.-scrollLeft dom) (* c/canvas-start-scroll-x @wb/zoom-ref))
(set! (.-scrollTop dom) (* c/canvas-start-scroll-y @wb/zoom-ref))
(assoc own
::sub1 sub1
::sub2 sub2
::sub3 sub3
::sub4 sub4)))
(assoc own ::sub1 sub1)))
(defn- workspace-will-unmount
[own]
;; Close subscriptions
(st/emit! ::udp/stop-page-watcher)
(.close (::sub1 own))
(.close (::sub2 own))
(.close (::sub3 own))
(.close (::sub4 own))
(dissoc own ::sub1 ::sub2 ::sub3 ::sub4))
(dissoc own ::sub1))
(defn- workspace-did-remount
[old-state state]
(let [[projectid pageid] (:rum/args state)
[oldprojectid oldpageid] (:rum/args old-state)]
(if (not= pageid oldpageid)
(do
(st/emit! (dw/initialize projectid pageid))
(.close (::sub2 old-state))
(.close (::sub3 old-state))
(assoc state
::sub1 (::sub1 old-state)
::sub2 (udp/watch-page-changes pageid)
::sub3 (udu/watch-page-changes pageid)
::sub4 (::sub4 old-state)))
(assoc state
::sub1 (::sub1 old-state)
::sub2 (::sub2 old-state)
::sub3 (::sub3 old-state)
::sub4 (::sub4 old-state)))))
(when (not= pageid oldpageid)
(st/emit! (dw/initialize projectid pageid)
::udp/stop-page-watcher
(udp/watch-page-changes pageid)
(udu/watch-page-changes pageid)
(udh/watch-page-changes pageid)))
state))
(defn- on-scroll
[event]

View file

@ -107,7 +107,6 @@
(let [menus (get +menus-map+ (:type shape ::page))
contained-in? (into #{} menus)
active (:menu @local (first menus))]
(println "options" active)
[:div
[:ul.element-icons
(for [menu-id (get +menus-map+ (:type shape ::page))