0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-10 06:41:40 -05:00

Use active sets tokens for form

This commit is contained in:
Florian Schroedl 2024-08-21 15:36:40 +02:00
parent 6c6be35292
commit 8264da3a2a
2 changed files with 15 additions and 10 deletions

View file

@ -99,10 +99,10 @@ Token names should only contain letters and digits separated by . characters.")}
empty-input? (p/rejected nil)
direct-self-reference? (p/rejected :error/token-direct-self-reference)
:else (let [token-id (or (:id token) (random-uuid))
new-tokens (update tokens token-id merge {:id token-id
new-tokens (update tokens token-name merge {:id token-id
:value input
:name token-name})]
(-> (sd/resolve-tokens+ new-tokens #_ {:debug? true})
(-> (sd/resolve-tokens+ new-tokens {:names-map? true})
(p/then
(fn [resolved-tokens]
(let [{:keys [errors resolved-value] :as resolved-token} (get resolved-tokens token-name)]
@ -139,11 +139,15 @@ Token names should only contain letters and digits separated by . characters.")}
timeout))))]
debounced-resolver-callback))
(defonce form-token-cache-atom (atom nil))
(mf/defc form
{::mf/wrap-props false}
[{:keys [token token-type] :as _args}]
(let [tokens (mf/deref refs/workspace-tokens)
resolved-tokens (sd/use-resolved-tokens tokens)
(let [tokens (mf/deref refs/get-active-theme-sets-tokens)
resolved-tokens (sd/use-resolved-tokens tokens {:names-map? true
:cache-atom form-token-cache-atom})
_ (js/console.log "resolved-tokens" resolved-tokens)
token-path (mf/use-memo
(mf/deps (:name token))
#(wtt/token-name->path (:name token)))

View file

@ -107,11 +107,12 @@
This hook will return the unresolved tokens as state until they are processed,
then the state will be updated with the resolved tokens."
[tokens & {:keys [cache-atom]
:or {cache-atom !tokens-cache}}]
[tokens & {:keys [cache-atom _names-map?]
:or {cache-atom !tokens-cache}
:as config}]
(let [tokens-state (mf/use-state (get @cache-atom tokens))]
(mf/use-effect
(mf/deps tokens)
(mf/deps tokens config)
(fn []
(let [cached (get @cache-atom tokens)]
(cond
@ -120,7 +121,7 @@
;; Get the cached entry
(some? cached) (reset! tokens-state cached)
;; No cached entry, start processing
:else (let [promise+ (resolve-tokens+ tokens)]
:else (let [promise+ (resolve-tokens+ tokens config)]
(swap! cache-atom assoc tokens promise+)
(p/then promise+ (fn [resolved-tokens]
(swap! cache-atom assoc tokens resolved-tokens)