mirror of
https://github.com/penpot/penpot.git
synced 2025-02-10 00:58:26 -05:00
✨ Properly integrate the workspace header.
This commit is contained in:
parent
34d33a2d83
commit
f9f36445ec
4 changed files with 18 additions and 38 deletions
|
@ -161,12 +161,11 @@
|
|||
;; Stop possible previous watchers and re-fetch the main page
|
||||
;; and all project related pages.
|
||||
(rx/of ::stop-watcher
|
||||
(dp/fetch-page page-id)
|
||||
(dp/fetch-file file-id)
|
||||
(dp/fetch-pages file-id))
|
||||
|
||||
;; When main page is fetched, schedule the main initialization.
|
||||
(->> (rx/zip (rx/filter (ptk/type? ::dp/page-fetched) stream)
|
||||
(->> (rx/zip (rx/filter (ptk/type? ::dp/pages-fetched) stream)
|
||||
(rx/filter (ptk/type? ::dp/files-fetched) stream))
|
||||
(rx/take 1)
|
||||
(rx/do #(reset! st/loader false))
|
||||
|
|
|
@ -34,20 +34,17 @@
|
|||
(ptk/reify ::initialize
|
||||
ptk/UpdateEvent
|
||||
(update [_ state]
|
||||
;; (prn "initialize-websocket$update" file-id)
|
||||
(let [uri (str "ws://localhost:6060/sub/" file-id)]
|
||||
(assoc-in state [::ws file-id] (ws/open uri))))
|
||||
|
||||
ptk/WatchEvent
|
||||
(watch [_ state stream]
|
||||
;; (prn "initialize-websocket$watch" file-id)
|
||||
(rx/merge
|
||||
(rx/of (fetch-users file-id))
|
||||
(->> (ws/-stream (get-in state [::ws file-id]))
|
||||
(rx/filter #(= :message (:type %)))
|
||||
(rx/map (comp t/decode :payload))
|
||||
(rx/filter #(s/valid? ::message %))
|
||||
;; (rx/tap #(js/console.log "ws-message" file-id %))
|
||||
(rx/map (fn [{:keys [type] :as msg}]
|
||||
(case type
|
||||
:who (handle-who msg)
|
||||
|
|
|
@ -11,6 +11,11 @@
|
|||
[uxbox.main.constants :as c]
|
||||
[uxbox.main.store :as st]))
|
||||
|
||||
|
||||
(def profile
|
||||
(-> (l/key :profile)
|
||||
(l/derive st/state)))
|
||||
|
||||
(def workspace
|
||||
(-> (l/key :workspace-local)
|
||||
(l/derive st/state)))
|
||||
|
@ -31,6 +36,10 @@
|
|||
(-> (l/key :workspace-file)
|
||||
(l/derive st/state)))
|
||||
|
||||
(def workspace-users
|
||||
(-> (l/key :workspace-users)
|
||||
(l/derive st/state)))
|
||||
|
||||
(def workspace-data
|
||||
(-> (l/key :workspace-data)
|
||||
(l/derive st/state)))
|
||||
|
|
|
@ -39,31 +39,7 @@
|
|||
[:span {} (str (mth/round (* 100 zoom)) "%")]
|
||||
[:span.remove-zoom {:on-click increase} "+"]]]))
|
||||
|
||||
;; --- Header Component
|
||||
|
||||
;; (mf/defc user
|
||||
;; [props]
|
||||
;; (let [open (mf/use-state false)
|
||||
;; profile (mf/deref profile-ref)
|
||||
;; photo (if (str/empty? (:photo profile ""))
|
||||
;; "/images/avatar.jpg"
|
||||
;; (:photo profile))]
|
||||
;; [:div.user-zone {:on-click #(st/emit! (rt/navigate :settings/profile))
|
||||
;; :on-mouse-enter #(reset! open true)
|
||||
;; :on-mouse-leave #(reset! open false)}
|
||||
;; [:span (:fullname profile)]
|
||||
;; [:img {:src photo}]
|
||||
;; (when @open
|
||||
;; [:& user-menu])]))
|
||||
|
||||
|
||||
(def profile-ref
|
||||
(-> (l/key :profile)
|
||||
(l/derive st/state)))
|
||||
|
||||
(def users-ref
|
||||
(-> (l/key :workspace-users)
|
||||
(l/derive st/state)))
|
||||
;; --- Header Users
|
||||
|
||||
(mf/defc user-item
|
||||
[{:keys [user self?] :as props}]
|
||||
|
@ -73,10 +49,10 @@
|
|||
#(st/emit! (rt/navigate :settings/profile)))}
|
||||
[:img {:src "/images/avatar.jpg"}]])
|
||||
|
||||
(mf/defc users
|
||||
(mf/defc users-list
|
||||
[props]
|
||||
(let [profile (mf/deref profile-ref)
|
||||
users (mf/deref users-ref)]
|
||||
(let [profile (mf/deref refs/profile)
|
||||
users (mf/deref refs/workspace-users)]
|
||||
[:ul.user-multi
|
||||
[:& user-item {:user profile :self? true}]
|
||||
(for [id (->> (:active users)
|
||||
|
@ -84,6 +60,7 @@
|
|||
[:& user-item {:user (get-in users [:by-id id])
|
||||
:key id}])]))
|
||||
|
||||
;; --- Header Component
|
||||
|
||||
(mf/defc header
|
||||
[{:keys [page layout flags] :as props}]
|
||||
|
@ -92,7 +69,7 @@
|
|||
on-redo #(st/emit! (udu/redo))
|
||||
on-image #(modal/show! import-image-modal {})
|
||||
;;on-download #(udl/open! :download)
|
||||
]
|
||||
file (mf/deref refs/workspace-file)]
|
||||
[:header#workspace-bar.workspace-bar
|
||||
[:div.main-icon
|
||||
[:a {:on-click #(st/emit! (rt/nav :dashboard-projects))} i/logo-icon]]
|
||||
|
@ -101,11 +78,9 @@
|
|||
{:alt (tr "header.sitemap")
|
||||
:class (when (contains? layout :sitemap) "selected")
|
||||
:on-click #(st/emit! (dw/toggle-layout-flag :sitemap))}
|
||||
;; i/project-tree
|
||||
[:span {} "Project name / File name";(:name page)
|
||||
]]
|
||||
[:span (:project-name file) " / " (:name file)]]
|
||||
|
||||
[:& users]
|
||||
[:& users-list]
|
||||
|
||||
[:div.workspace-options
|
||||
[:ul.options-btn
|
||||
|
|
Loading…
Add table
Reference in a new issue