0
Fork 0
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:
Andrey Antukh 2019-12-18 23:48:02 +01:00
parent 34d33a2d83
commit f9f36445ec
4 changed files with 18 additions and 38 deletions

View file

@ -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))

View file

@ -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)

View file

@ -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)))

View file

@ -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