diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index d11001cc0..e01eab722 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -227,12 +227,14 @@ (ptk/reify ::initialize-page ptk/UpdateEvent (update [_ state] - (let [prev-local (get state :workspace-local) - local (-> state - (get-in [:workspace-cache page-id] workspace-local-default) - (merge (select-keys prev-local [:vbox :vport :zoom]))) - page (-> (get-in state [:workspace-data :pages-index page-id]) - (select-keys [:id :name]))] + (let [;; we maintain a cache of page state for user convenience + ;; with the exception of the selection; when user abandon + ;; the current page, the selection is lost + local (-> state + (get-in [:workspace-cache page-id] workspace-local-default) + (assoc :selected (d/ordered-set))) + page (-> (get-in state [:workspace-data :pages-index page-id]) + (select-keys [:id :name]))] (assoc state :current-page-id page-id ; mainly used by events :trimmed-page page @@ -1225,6 +1227,14 @@ (rx/of ::dwp/force-persist (rt/nav :viewer params {:index 0}))))) +(defn go-to-dashboard + [{:keys [team-id] :as project}] + (ptk/reify ::go-to-viewer + ptk/WatchEvent + (watch [_ state stream] + (rx/of ::dwp/force-persist + (rt/nav :dashboard-projects {:team-id team-id}))))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Context Menu ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/frontend/src/app/main/ui/workspace/header.cljs b/frontend/src/app/main/ui/workspace/header.cljs index dd3471e31..90a42a47b 100644 --- a/frontend/src/app/main/ui/workspace/header.cljs +++ b/frontend/src/app/main/ui/workspace/header.cljs @@ -242,7 +242,7 @@ go-back (mf/use-callback (mf/deps project) - (st/emitf (rt/nav :dashboard-projects {:team-id team-id}))) + (st/emitf (dw/go-to-dashboard project))) go-viewer (mf/use-callback