mirror of
https://github.com/penpot/penpot.git
synced 2025-03-18 10:41:29 -05:00
🐛 Fix backend shape validation after changes apply
This commit is contained in:
parent
390f2b35fc
commit
8ca6055935
1 changed files with 21 additions and 18 deletions
|
@ -240,25 +240,28 @@
|
|||
;; Changes Processing Impl
|
||||
|
||||
(defn validate-shapes!
|
||||
[data objects items]
|
||||
(letfn [(validate-shape! [[page-id {:keys [id] :as shape}]]
|
||||
(when-not (= shape (dm/get-in data [:pages-index page-id :objects id]))
|
||||
;; If object has changed verify is correct
|
||||
(dm/verify! (cts/shape? shape))))]
|
||||
[data-old data-new items]
|
||||
(letfn [(validate-shape! [[page-id id]]
|
||||
(let [shape-old (dm/get-in data-old [:pages-index page-id :objects id])
|
||||
shape-new (dm/get-in data-new [:pages-index page-id :objects id])]
|
||||
|
||||
(let [lookup (d/getf objects)]
|
||||
(->> (into #{} (map :page-id) items)
|
||||
(mapcat (fn [page-id]
|
||||
(filter #(= page-id (:page-id %)) items)))
|
||||
(mapcat (fn [{:keys [type id page-id] :as item}]
|
||||
(sequence
|
||||
(comp (keep lookup)
|
||||
(map (partial vector page-id)))
|
||||
(case type
|
||||
(:add-obj :mod-obj :del-obj) (cons id nil)
|
||||
(:mov-objects :reg-objects) (:shapes item)
|
||||
nil))))
|
||||
(run! validate-shape!)))))
|
||||
;; If object has changed verify is correct
|
||||
(when (and (some? shape-old)
|
||||
(some? shape-new)
|
||||
(not= shape-old shape-new))
|
||||
(dm/verify! (cts/shape? shape-new)))))]
|
||||
|
||||
(->> (into #{} (map :page-id) items)
|
||||
(mapcat (fn [page-id]
|
||||
(filter #(= page-id (:page-id %)) items)))
|
||||
(mapcat (fn [{:keys [type id page-id] :as item}]
|
||||
(sequence
|
||||
(map (partial vector page-id))
|
||||
(case type
|
||||
(:add-obj :mod-obj :del-obj) (cons id nil)
|
||||
(:mov-objects :reg-objects) (:shapes item)
|
||||
nil))))
|
||||
(run! validate-shape!))))
|
||||
|
||||
(defmulti process-change (fn [_ change] (:type change)))
|
||||
(defmulti process-operation (fn [_ _ op] (:type op)))
|
||||
|
|
Loading…
Add table
Reference in a new issue