diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 4435c22ca9..ef40318313 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -85,7 +85,7 @@ :snap-grid :dynamic-alignment}) -(def layout-flags +(def layout-names {:assets {:del #{:sitemap :layers :document-history } :add #{:assets}} @@ -120,21 +120,20 @@ (declare ensure-layout) (defn initialize-layout - [layout] - (us/verify (s/nilable ::us/string) layout) + [layout-name] + (us/verify (s/nilable ::us/keyword) layout-name) (ptk/reify ::initialize-layout ptk/UpdateEvent (update [_ state] - (update state :worskpace-layout + (update state :workspace-layout (fn [layout] - (merge default-layout layout)))) + (or layout default-layout)))) ptk/WatchEvent (watch [_ state stream] - (when layout - (let [layout-flag (keyword layout)] - (when (contains? layout-flags layout-flag) - (rx/of (ensure-layout layout-flag)))))))) + (if (and layout-name (contains? layout-names layout-name)) + (rx/of (ensure-layout layout-name)) + (rx/of (ensure-layout :layers)))))) (defn initialize-file [project-id file-id] @@ -416,16 +415,16 @@ ;; --- Toggle layout flag (defn ensure-layout - [layout] - (assert (contains? layout-flags layout) - (str "unexpected layout name: " layout)) + [layout-name] + (assert (contains? layout-names layout-name) + (str "unexpected layout name: " layout-name)) (ptk/reify ::ensure-layout ptk/UpdateEvent (update [_ state] (update state :workspace-layout (fn [stored] - (let [todel (get-in layout-flags [layout :del] #{}) - toadd (get-in layout-flags [layout :add] #{})] + (let [todel (get-in layout-names [layout-name :del] #{}) + toadd (get-in layout-names [layout-name :add] #{})] (-> stored (set/difference todel) (set/union toadd)))))))) diff --git a/frontend/src/app/main/ui.cljs b/frontend/src/app/main/ui.cljs index 3864ecfe72..611ba44f1f 100644 --- a/frontend/src/app/main/ui.cljs +++ b/frontend/src/app/main/ui.cljs @@ -150,11 +150,11 @@ (let [project-id (uuid (get-in route [:params :path :project-id])) file-id (uuid (get-in route [:params :path :file-id])) page-id (uuid (get-in route [:params :query :page-id])) - layout (get-in route [:params :query :layout])] + layout-name (get-in route [:params :query :layout])] [:& workspace/workspace {:project-id project-id :file-id file-id :page-id page-id - :layout layout + :layout-name (keyword layout-name) :key file-id}]) :not-authorized diff --git a/frontend/src/app/main/ui/workspace.cljs b/frontend/src/app/main/ui/workspace.cljs index 8579210d5b..ea77a68b97 100644 --- a/frontend/src/app/main/ui/workspace.cljs +++ b/frontend/src/app/main/ui/workspace.cljs @@ -99,10 +99,10 @@ i/loader-pencil]) (mf/defc workspace - [{:keys [project-id file-id page-id layout] :as props}] + [{:keys [project-id file-id page-id layout-name] :as props}] (mf/use-effect - (mf/deps layout) - #(st/emit! (dw/initialize-layout layout))) + (mf/deps layout-name) + #(st/emit! (dw/initialize-layout layout-name))) (mf/use-effect (mf/deps project-id file-id)