mirror of
https://github.com/penpot/penpot.git
synced 2025-06-11 04:21:40 +02:00
🐛 Fix some problems with error handling
This commit is contained in:
parent
dea866d3a3
commit
6eea633ca9
4 changed files with 24 additions and 9 deletions
|
@ -321,8 +321,9 @@
|
||||||
children]])]))
|
children]])]))
|
||||||
|
|
||||||
(mf/defc menu-tree
|
(mf/defc menu-tree
|
||||||
[{:keys [selected-shapes submenu-offset submenu-direction type] :as context-data}]
|
[{:keys [selected-shapes submenu-offset submenu-direction type errors] :as context-data}]
|
||||||
(let [entries (if (seq selected-shapes)
|
(let [entries (if (and (not (some? errors))
|
||||||
|
(seq selected-shapes))
|
||||||
(if (some? type)
|
(if (some? type)
|
||||||
(submenu-actions-selection-actions context-data)
|
(submenu-actions-selection-actions context-data)
|
||||||
(selection-actions context-data))
|
(selection-actions context-data))
|
||||||
|
@ -343,7 +344,7 @@
|
||||||
:selected? selected?}])])))
|
:selected? selected?}])])))
|
||||||
|
|
||||||
(mf/defc token-context-menu-tree
|
(mf/defc token-context-menu-tree
|
||||||
[{:keys [width direction] :as mdata}]
|
[{:keys [width direction errors] :as mdata}]
|
||||||
(let [objects (mf/deref refs/workspace-page-objects)
|
(let [objects (mf/deref refs/workspace-page-objects)
|
||||||
selected (mf/deref refs/selected-shapes)
|
selected (mf/deref refs/selected-shapes)
|
||||||
selected-shapes (into [] (keep (d/getf objects)) selected)
|
selected-shapes (into [] (keep (d/getf objects)) selected)
|
||||||
|
@ -354,6 +355,7 @@
|
||||||
[:& menu-tree {:submenu-offset width
|
[:& menu-tree {:submenu-offset width
|
||||||
:submenu-direction direction
|
:submenu-direction direction
|
||||||
:token token
|
:token token
|
||||||
|
:errors errors
|
||||||
:selected-token-set-path selected-token-set-path
|
:selected-token-set-path selected-token-set-path
|
||||||
:selected-shapes selected-shapes}]]))
|
:selected-shapes selected-shapes}]]))
|
||||||
|
|
||||||
|
|
|
@ -82,6 +82,7 @@
|
||||||
(st/emit! (dt/show-token-context-menu
|
(st/emit! (dt/show-token-context-menu
|
||||||
{:type :token
|
{:type :token
|
||||||
:position (dom/get-client-position event)
|
:position (dom/get-client-position event)
|
||||||
|
:errors (:errors token)
|
||||||
:token-name (:name token)}))))
|
:token-name (:name token)}))))
|
||||||
|
|
||||||
on-toggle-open-click (mf/use-fn
|
on-toggle-open-click (mf/use-fn
|
||||||
|
@ -120,6 +121,7 @@
|
||||||
[:> icon-button* {:on-click on-popover-open-click
|
[:> icon-button* {:on-click on-popover-open-click
|
||||||
:variant "ghost"
|
:variant "ghost"
|
||||||
:icon "add"
|
:icon "add"
|
||||||
|
;; TODO: This needs translation
|
||||||
:aria-label (str "Add token: " title)}]]
|
:aria-label (str "Add token: " title)}]]
|
||||||
(when open?
|
(when open?
|
||||||
[:& cmm/asset-section-block {:role :content}
|
[:& cmm/asset-section-block {:role :content}
|
||||||
|
|
|
@ -174,6 +174,7 @@
|
||||||
[err]
|
[err]
|
||||||
(let [[header-1 header-2 & errors] (str/split err "\n")]
|
(let [[header-1 header-2 & errors] (str/split err "\n")]
|
||||||
(when (and
|
(when (and
|
||||||
|
;; TODO: This needs translations
|
||||||
(= header-1 "Error: ")
|
(= header-1 "Error: ")
|
||||||
(= header-2 "Reference Errors:"))
|
(= header-2 "Reference Errors:"))
|
||||||
errors)))
|
errors)))
|
||||||
|
@ -206,10 +207,11 @@
|
||||||
|
|
||||||
;; === Errors
|
;; === Errors
|
||||||
|
|
||||||
(defn humanize-errors [{:keys [errors value] :as _token}]
|
(defn humanize-errors [{:keys [errors] :as token}]
|
||||||
(->> (map (fn [err]
|
(->> (map (fn [err]
|
||||||
(case err
|
(case (:error/code err)
|
||||||
:error.style-dictionary/missing-reference (str "Could not resolve reference token with the name: " value)
|
;; TODO: This needs translations
|
||||||
|
:error.style-dictionary/missing-reference (str "Could not resolve reference token with the name: " (:error/value err))
|
||||||
nil))
|
nil))
|
||||||
errors)
|
errors)
|
||||||
(str/join "\n")))
|
(str/join "\n")))
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
[app.main.ui.ds.foundations.utilities.token.token-status :refer [token-status-icon*]]
|
[app.main.ui.ds.foundations.utilities.token.token-status :refer [token-status-icon*]]
|
||||||
[app.main.ui.workspace.tokens.style-dictionary :as sd]
|
[app.main.ui.workspace.tokens.style-dictionary :as sd]
|
||||||
[app.main.ui.workspace.tokens.token :as wtt]
|
[app.main.ui.workspace.tokens.token :as wtt]
|
||||||
|
[app.util.dom :as dom]
|
||||||
[app.util.i18n :refer [tr]]
|
[app.util.i18n :refer [tr]]
|
||||||
[cuerdas.core :as str]
|
[cuerdas.core :as str]
|
||||||
[rumext.v2 :as mf]))
|
[rumext.v2 :as mf]))
|
||||||
|
@ -21,6 +22,13 @@
|
||||||
(wtt/resolved-value-hex theme-token))
|
(wtt/resolved-value-hex theme-token))
|
||||||
|
|
||||||
color (or color (wtt/resolved-value-hex token))
|
color (or color (wtt/resolved-value-hex token))
|
||||||
|
on-click
|
||||||
|
(mf/use-callback
|
||||||
|
(mf/deps errors? on-click)
|
||||||
|
(fn [event]
|
||||||
|
(dom/stop-propagation event)
|
||||||
|
(when (and (not (seq errors)) on-click)
|
||||||
|
(on-click event))))
|
||||||
|
|
||||||
token-status-id (cond
|
token-status-id (cond
|
||||||
half-applied
|
half-applied
|
||||||
|
@ -35,14 +43,15 @@
|
||||||
:token-pill-invalid-applied (and full-applied errors?))
|
:token-pill-invalid-applied (and full-applied errors?))
|
||||||
:type "button"
|
:type "button"
|
||||||
:title (cond
|
:title (cond
|
||||||
errors? (sd/humanize-errors token)
|
errors? (if (nil? theme-token)
|
||||||
|
(tr "workspace.token-set.not-active")
|
||||||
|
(sd/humanize-errors token))
|
||||||
:else (->> [(str "Token: " name)
|
:else (->> [(str "Token: " name)
|
||||||
(tr "workspace.token.original-value" value)
|
(tr "workspace.token.original-value" value)
|
||||||
(tr "workspace.token.resolved-value" resolved-value)]
|
(tr "workspace.token.resolved-value" resolved-value)]
|
||||||
(str/join "\n")))
|
(str/join "\n")))
|
||||||
:on-click on-click
|
:on-click on-click
|
||||||
:on-context-menu on-context-menu
|
:on-context-menu on-context-menu}
|
||||||
:disabled errors?}
|
|
||||||
(cond
|
(cond
|
||||||
errors?
|
errors?
|
||||||
[:> icon*
|
[:> icon*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue