mirror of
https://github.com/penpot/penpot.git
synced 2025-08-07 14:38:33 +02:00
⚡ Add minor efficiency improvements to tokens import export
This commit is contained in:
parent
efe204c346
commit
91b6d498fe
1 changed files with 36 additions and 30 deletions
|
@ -385,12 +385,15 @@
|
||||||
:active-theme-tokens active-theme-tokens
|
:active-theme-tokens active-theme-tokens
|
||||||
:tokens []}])]))
|
:tokens []}])]))
|
||||||
|
|
||||||
(mf/defc import-export-button
|
(mf/defc import-export-button*
|
||||||
{::mf/wrap-props false}
|
[]
|
||||||
[{:keys []}]
|
(let [input-ref (mf/use-ref)
|
||||||
(let [show-menu* (mf/use-state false)
|
|
||||||
|
show-menu* (mf/use-state false)
|
||||||
show-menu? (deref show-menu*)
|
show-menu? (deref show-menu*)
|
||||||
can-edit? (:can-edit (deref refs/permissions))
|
|
||||||
|
can-edit?
|
||||||
|
(mf/use-ctx ctx/can-edit?)
|
||||||
|
|
||||||
open-menu
|
open-menu
|
||||||
(mf/use-fn
|
(mf/use-fn
|
||||||
|
@ -404,34 +407,37 @@
|
||||||
(dom/stop-propagation event)
|
(dom/stop-propagation event)
|
||||||
(reset! show-menu* false)))
|
(reset! show-menu* false)))
|
||||||
|
|
||||||
input-ref (mf/use-ref)
|
|
||||||
on-display-file-explorer
|
on-display-file-explorer
|
||||||
(mf/use-fn
|
(mf/use-fn #(dom/click (mf/ref-val input-ref)))
|
||||||
#(.click (mf/ref-val input-ref)))
|
|
||||||
|
|
||||||
on-import
|
on-import
|
||||||
(fn [event]
|
(mf/use-fn
|
||||||
(let [file (-> event .-target .-files (aget 0))]
|
(fn [event]
|
||||||
(->> (wapi/read-file-as-text file)
|
(let [file (-> (dom/get-target event)
|
||||||
(sd/process-json-stream)
|
(dom/get-files)
|
||||||
(rx/subs! (fn [lib]
|
(first))]
|
||||||
(st/emit! (ptk/event ::ev/event {::ev/name "import-tokens"}))
|
(->> (wapi/read-file-as-text file)
|
||||||
(st/emit! (dt/import-tokens-lib lib)))
|
(sd/process-json-stream)
|
||||||
(fn [err]
|
(rx/subs! (fn [lib]
|
||||||
(js/console.error err)
|
(st/emit! (ptk/data-event ::ev/event {::ev/name "import-tokens"})
|
||||||
(st/emit! (ntf/show {:content (wte/humanize-errors [(ex-data err)])
|
(dt/import-tokens-lib lib)))
|
||||||
:type :toast
|
(fn [err]
|
||||||
:level :error})))))
|
(js/console.error err)
|
||||||
(set! (.-value (mf/ref-val input-ref)) "")))
|
(st/emit! (ntf/show {:content (wte/humanize-errors [(ex-data err)])
|
||||||
|
:type :toast
|
||||||
|
:level :error})))))
|
||||||
|
(-> (mf/ref-val input-ref)
|
||||||
|
(dom/set-value! "")))))
|
||||||
|
|
||||||
on-export (fn []
|
on-export
|
||||||
(st/emit! (ptk/event ::ev/event {::ev/name "export-tokens"}))
|
(mf/use-fn
|
||||||
(let [tokens-json (some-> (deref refs/tokens-lib)
|
(fn []
|
||||||
(ctob/encode-dtcg)
|
(st/emit! (ptk/data-event ::ev/event {::ev/name "export-tokens"}))
|
||||||
(clj->js)
|
(let [tokens-json (some-> (deref refs/tokens-lib)
|
||||||
(js/JSON.stringify nil 2))]
|
(ctob/encode-dtcg)
|
||||||
(->> (wapi/create-blob (or tokens-json "{}") "application/json")
|
(json/encode :key-fn identity))]
|
||||||
(dom/trigger-download "tokens.json"))))]
|
(->> (wapi/create-blob (or tokens-json "{}") "application/json")
|
||||||
|
(dom/trigger-download "tokens.json")))))]
|
||||||
|
|
||||||
[:div {:class (stl/css :import-export-button-wrapper)}
|
[:div {:class (stl/css :import-export-button-wrapper)}
|
||||||
(when can-edit?
|
(when can-edit?
|
||||||
|
@ -478,4 +484,4 @@
|
||||||
:on-lost-pointer-capture on-lost-pointer-capture-pages
|
:on-lost-pointer-capture on-lost-pointer-capture-pages
|
||||||
:on-pointer-move on-pointer-move-pages}]
|
:on-pointer-move on-pointer-move-pages}]
|
||||||
[:> tokens-tab* {:tokens-lib tokens-lib}]]
|
[:> tokens-tab* {:tokens-lib tokens-lib}]]
|
||||||
[:& import-export-button]]))
|
[:> import-export-button*]]))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue