mirror of
https://github.com/penpot/penpot.git
synced 2025-12-12 06:24:17 +01: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:
@@ -513,12 +513,11 @@
|
|||||||
(assoc :ignore-sync-until (dt/plus timestamp (dt/duration {:seconds 5})))
|
(assoc :ignore-sync-until (dt/plus timestamp (dt/duration {:seconds 5})))
|
||||||
(update :features
|
(update :features
|
||||||
(fn [features]
|
(fn [features]
|
||||||
(let [features (cfeat/check-supported-features! features)]
|
(-> (::features cfg #{})
|
||||||
(-> (::features cfg #{})
|
(set/union features)
|
||||||
(set/union features)
|
;; We never want to store
|
||||||
;; We never want to store
|
;; frontend-only features on file
|
||||||
;; frontend-only features on file
|
(set/difference cfeat/frontend-only-features)))))]
|
||||||
(set/difference cfeat/frontend-only-features))))))]
|
|
||||||
|
|
||||||
(when (contains? cf/flags :file-schema-validation)
|
(when (contains? cf/flags :file-schema-validation)
|
||||||
(fval/validate-file-schema! file))
|
(fval/validate-file-schema! file))
|
||||||
|
|||||||
@@ -875,14 +875,17 @@
|
|||||||
:manifest manifest))
|
:manifest manifest))
|
||||||
|
|
||||||
;; Check if all files referenced on manifest are present
|
;; 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")]
|
(let [path (str "files/" file-id ".json")]
|
||||||
|
|
||||||
(when-not (get-zip-entry input path)
|
(when-not (get-zip-entry input path)
|
||||||
(ex/raise :type :validation
|
(ex/raise :type :validation
|
||||||
:code :invalid-binfile-v3
|
:code :invalid-binfile-v3
|
||||||
:hint "some files referenced on manifest not found"
|
:hint "some files referenced on manifest not found"
|
||||||
:path path
|
:path path
|
||||||
:file-id file-id))))
|
:file-id file-id))
|
||||||
|
|
||||||
|
(cfeat/check-supported-features! features)))
|
||||||
|
|
||||||
(events/tap :progress {:section :manifest})
|
(events/tap :progress {:section :manifest})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user