0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-22 14:57:01 -05:00

🐛 Add correct feature check on manifest reading

Instead on the file save operation so we can raise
exception if something does not match without processing
the whole file
This commit is contained in:
Andrey Antukh 2025-02-19 11:56:28 +01:00
parent 5f61254a75
commit 7d0c19fcc7
2 changed files with 10 additions and 8 deletions

View file

@ -513,12 +513,11 @@
(assoc :ignore-sync-until (dt/plus timestamp (dt/duration {:seconds 5})))
(update :features
(fn [features]
(let [features (cfeat/check-supported-features! features)]
(-> (::features cfg #{})
(set/union features)
;; We never want to store
;; frontend-only features on file
(set/difference cfeat/frontend-only-features))))))]
(-> (::features cfg #{})
(set/union features)
;; We never want to store
;; frontend-only features on file
(set/difference cfeat/frontend-only-features)))))]
(when (contains? cf/flags :file-schema-validation)
(fval/validate-file-schema! file))

View file

@ -875,14 +875,17 @@
:manifest manifest))
;; Check if all files referenced on manifest are present
(doseq [{file-id :id} (:files manifest)]
(doseq [{file-id :id features :features} (:files manifest)]
(let [path (str "files/" file-id ".json")]
(when-not (get-zip-entry input path)
(ex/raise :type :validation
:code :invalid-binfile-v3
:hint "some files referenced on manifest not found"
:path path
:file-id file-id))))
:file-id file-id))
(cfeat/check-supported-features! features)))
(events/tap :progress {:section :manifest})