mirror of
https://github.com/penpot/penpot.git
synced 2025-07-25 18:27:18 +02:00
✨ Catch invalid name errors in json
This commit is contained in:
parent
25950bb5a5
commit
d26464c810
4 changed files with 43 additions and 14 deletions
|
@ -12,6 +12,11 @@
|
|||
{:error/code :error.import/invalid-json-data
|
||||
:error/fn #(tr "workspace.token.invalid-json")}
|
||||
|
||||
:error.import/invalid-token-name
|
||||
{:error/code :error.import/invalid-json-data
|
||||
:error/fn #(tr "workspace.token.invalid-json-token-name")
|
||||
:error/detail #(tr "workspace.token.invalid-json-token-name-detail" %)}
|
||||
|
||||
:error.import/style-dictionary-reference-errors
|
||||
{:error/code :error.import/style-dictionary-reference-errors
|
||||
:error/fn #(str (tr "workspace.token.import-error") "\n\n" (first %))
|
||||
|
@ -80,4 +85,6 @@
|
|||
(->> errors
|
||||
(map (fn [err]
|
||||
(when (:error/detail err)
|
||||
((:error/detail err) (:error/value err)))))))
|
||||
((:error/detail err) (:error/value err)))))
|
||||
(filter some?)
|
||||
(seq)))
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
[app.main.ui.workspace.tokens.tinycolor :as tinycolor]
|
||||
[app.main.ui.workspace.tokens.token :as wtt]
|
||||
[app.main.ui.workspace.tokens.warnings :as wtw]
|
||||
[app.util.i18n :refer [tr]]
|
||||
[app.util.time :as dt]
|
||||
[beicon.v2.core :as rx]
|
||||
[cuerdas.core :as str]
|
||||
|
@ -265,6 +264,16 @@
|
|||
(= header-2 "Reference Errors:"))
|
||||
errors)))
|
||||
|
||||
(defn name-error
|
||||
"Extracts name error out of malli schema error during import."
|
||||
[err]
|
||||
(let [schema-error (some-> (ex-data err)
|
||||
(get-in [:app.common.schema/explain :errors])
|
||||
(first))
|
||||
name-error? (= (:in schema-error) [:name])]
|
||||
(when name-error?
|
||||
(wte/error-ex-info :error.import/invalid-token-name (:value schema-error) err))))
|
||||
|
||||
(defn process-json-stream
|
||||
([data-stream]
|
||||
(process-json-stream nil data-stream))
|
||||
|
@ -296,7 +305,9 @@
|
|||
(ctob/decode-dtcg-json (ctob/ensure-tokens-lib nil) json-data))
|
||||
|
||||
(catch js/Error e
|
||||
(throw (wte/error-ex-info :error.import/invalid-json-data json-data e)))))))
|
||||
(let [err (or (name-error e)
|
||||
(wte/error-ex-info :error.import/invalid-json-data json-data e))]
|
||||
(throw err)))))))
|
||||
(rx/mapcat (fn [tokens-lib]
|
||||
(try
|
||||
(-> (ctob/get-all-tokens tokens-lib)
|
||||
|
@ -311,17 +322,6 @@
|
|||
(catch js/Error e
|
||||
(p/rejected (wte/error-ex-info :error.import/style-dictionary-unknown-error "" e))))))))))
|
||||
|
||||
;; === Errors
|
||||
|
||||
(defn humanize-errors [{:keys [errors] :as token}]
|
||||
(->> (map (fn [err]
|
||||
(case (:error/code err)
|
||||
;; TODO: This needs translations
|
||||
:error.style-dictionary/missing-reference (tr "workspace.token.token-not-resolved" (:error/value err))
|
||||
nil))
|
||||
errors)
|
||||
(str/join "\n")))
|
||||
|
||||
;; === Hooks
|
||||
|
||||
(defonce !tokens-cache (atom nil))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue