0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-15 17:21:17 -05:00

🐛 Fix initialize layout

This commit is contained in:
Andrés Moya 2020-11-04 14:47:27 +01:00 committed by Alonso Torres
parent 1bb4511dd3
commit fd1f42dc94
3 changed files with 18 additions and 19 deletions

View file

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

View file

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

View file

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