mirror of
https://github.com/penpot/penpot.git
synced 2025-01-24 07:29:08 -05:00
🐛 Add migration for fix some inconsistencies on page data.
This commit is contained in:
parent
185e06ed79
commit
455b0efa71
2 changed files with 57 additions and 0 deletions
|
@ -95,3 +95,33 @@
|
||||||
[{:v1 (alength (blob/encode data {:version 1}))
|
[{:v1 (alength (blob/encode data {:version 1}))
|
||||||
:v2 (alength (blob/encode data {:version 2}))
|
:v2 (alength (blob/encode data {:version 2}))
|
||||||
:v3 (alength (blob/encode data {:version 3}))}]))
|
:v3 (alength (blob/encode data {:version 3}))}]))
|
||||||
|
|
||||||
|
(defn update-page-1
|
||||||
|
[data]
|
||||||
|
(letfn [(find-empty-groups [objects]
|
||||||
|
(->> (vals objects)
|
||||||
|
(filter (fn [shape]
|
||||||
|
(and (= :group (:type shape))
|
||||||
|
(or (empty? (:shapes shape))
|
||||||
|
(every? (fn [child-id]
|
||||||
|
(not (contains? objects child-id)))
|
||||||
|
(:shapes shape))))))
|
||||||
|
(map :id)))
|
||||||
|
|
||||||
|
(update-page [[page-id page]]
|
||||||
|
(let [objects (:objects page)
|
||||||
|
eids (find-empty-groups objects)]
|
||||||
|
|
||||||
|
(map (fn [id]
|
||||||
|
{:type :del-obj
|
||||||
|
:page-id page-id
|
||||||
|
:id id})
|
||||||
|
eids)))]
|
||||||
|
(loop [i 0 data data]
|
||||||
|
(let [changes (mapcat update-page (:pages-index data))]
|
||||||
|
(prn "==== loop " i " ====")
|
||||||
|
(clojure.pprint/pprint changes)
|
||||||
|
(if (seq changes)
|
||||||
|
(recur (inc i)
|
||||||
|
(app.common.pages.changes/process-changes data changes))
|
||||||
|
data)))))
|
||||||
|
|
|
@ -222,3 +222,30 @@
|
||||||
(update :pages-index #(d/mapm clean-container %))
|
(update :pages-index #(d/mapm clean-container %))
|
||||||
(d/update-when :components #(d/mapm clean-container %)))))
|
(d/update-when :components #(d/mapm clean-container %)))))
|
||||||
|
|
||||||
|
(defmethod migrate 9
|
||||||
|
[data]
|
||||||
|
(letfn [(find-empty-groups [objects]
|
||||||
|
(->> (vals objects)
|
||||||
|
(filter (fn [shape]
|
||||||
|
(and (= :group (:type shape))
|
||||||
|
(or (empty? (:shapes shape))
|
||||||
|
(every? (fn [child-id]
|
||||||
|
(not (contains? objects child-id)))
|
||||||
|
(:shapes shape))))))
|
||||||
|
(map :id)))
|
||||||
|
|
||||||
|
(update-page [[page-id page]]
|
||||||
|
(let [objects (:objects page)
|
||||||
|
eids (find-empty-groups objects)]
|
||||||
|
|
||||||
|
(map (fn [id]
|
||||||
|
{:type :del-obj
|
||||||
|
:page-id page-id
|
||||||
|
:id id})
|
||||||
|
eids)))]
|
||||||
|
|
||||||
|
(loop [data data]
|
||||||
|
(let [changes (mapcat update-page (:pages-index data))]
|
||||||
|
(if (seq changes)
|
||||||
|
(recur (cp/process-changes data changes))
|
||||||
|
data)))))
|
||||||
|
|
Loading…
Add table
Reference in a new issue