From f9f36445ec6011daa7795f3a89940f5494618056 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 18 Dec 2019 23:48:02 +0100 Subject: [PATCH] :sparkles: Properly integrate the workspace header. --- frontend/src/uxbox/main/data/workspace.cljs | 3 +- .../uxbox/main/data/workspace_websocket.cljs | 3 -- frontend/src/uxbox/main/refs.cljs | 9 ++++ .../src/uxbox/main/ui/workspace/header.cljs | 41 ++++--------------- 4 files changed, 18 insertions(+), 38 deletions(-) diff --git a/frontend/src/uxbox/main/data/workspace.cljs b/frontend/src/uxbox/main/data/workspace.cljs index a0a1cdd60..1d9615d99 100644 --- a/frontend/src/uxbox/main/data/workspace.cljs +++ b/frontend/src/uxbox/main/data/workspace.cljs @@ -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)) diff --git a/frontend/src/uxbox/main/data/workspace_websocket.cljs b/frontend/src/uxbox/main/data/workspace_websocket.cljs index c115e3323..aae776dc3 100644 --- a/frontend/src/uxbox/main/data/workspace_websocket.cljs +++ b/frontend/src/uxbox/main/data/workspace_websocket.cljs @@ -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) diff --git a/frontend/src/uxbox/main/refs.cljs b/frontend/src/uxbox/main/refs.cljs index 95c49a127..16ecfcefa 100644 --- a/frontend/src/uxbox/main/refs.cljs +++ b/frontend/src/uxbox/main/refs.cljs @@ -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))) diff --git a/frontend/src/uxbox/main/ui/workspace/header.cljs b/frontend/src/uxbox/main/ui/workspace/header.cljs index 798882408..665b1fcb6 100644 --- a/frontend/src/uxbox/main/ui/workspace/header.cljs +++ b/frontend/src/uxbox/main/ui/workspace/header.cljs @@ -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