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

Merge pull request #1924 from penpot/fix-sync

🐛 Fix some component shapes not synced
This commit is contained in:
Alejandro 2022-05-20 10:39:22 +02:00 committed by GitHub
commit 426758d9b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 8 deletions

View file

@ -67,6 +67,38 @@
(db/insert! conn :file params)
(:id file))))))
(defn repair-orphaned-components
"We have detected some cases of component instances that are not nested, but
however they have not the :component-root? attribute (so the system considers
them nested). This script fixes this adding them the attribute.
Use it with the update-file function above."
[data]
(let [update-page
(fn [page]
(prn "================= Page:" (:name page))
(letfn [(is-nested? [object]
(and (some? (:component-id object))
(nil? (:component-root? object))))
(is-instance? [object]
(some? (:shape-ref object)))
(get-parent [object]
(get (:objects page) (:parent-id object)))
(update-object [object]
(if (and (is-nested? object)
(not (is-instance? (get-parent object))))
(do
(prn "Orphan:" (:name object))
(assoc object :component-root? true))
object))]
(update page :objects d/update-vals update-object)))]
(update data :pages-index d/update-vals update-page)))
;; (defn check-image-shapes
;; [{:keys [data] :as file} stats]
;; (println "=> analizing file:" (:name file) (:id file))

View file

@ -549,18 +549,19 @@
(:shapes shape-main))
only-inst (fn [changes child-inst]
(when-not (and omit-touched?
(contains? (:touched shape-inst)
:shapes-group))
(if-not (and omit-touched?
(contains? (:touched shape-inst)
:shapes-group))
(remove-shape changes
child-inst
container
omit-touched?)))
omit-touched?)
changes))
only-main (fn [changes child-main]
(when-not (and omit-touched?
(contains? (:touched shape-inst)
:shapes-group))
(if-not (and omit-touched?
(contains? (:touched shape-inst)
:shapes-group))
(add-shape-to-instance changes
child-main
(d/index-of children-main
@ -570,7 +571,8 @@
root-inst
root-main
omit-touched?
set-remote-synced?)))
set-remote-synced?)
changes))
both (fn [changes child-inst child-main]
(generate-sync-shape-direct-recursive changes