mirror of
https://github.com/penpot/penpot.git
synced 2026-04-28 12:48:31 +00:00
🎉 Store chosen renderer in user profile
This commit is contained in:
parent
12549df65c
commit
46b81f4302
@ -48,6 +48,7 @@
|
||||
(def schema:props
|
||||
[:map {:title "ProfileProps"}
|
||||
[:plugins {:optional true} schema:plugin-registry]
|
||||
[:renderer {:optional true} [::sm/one-of #{:svg :wasm}]]
|
||||
[:mcp-enabled {:optional true} ::sm/boolean]
|
||||
[:newsletter-updates {:optional true} ::sm/boolean]
|
||||
[:newsletter-news {:optional true} ::sm/boolean]
|
||||
|
||||
@ -89,28 +89,36 @@
|
||||
(st/emit! (rt/nav :settings-feedback)))
|
||||
|
||||
(mf/defc webgl-settings*
|
||||
[{:keys [is-render-enabled]}]
|
||||
[:section {:class (stl/css :webgl-container)}
|
||||
[:header {:class (stl/css :webgl-header)}
|
||||
[:> heading* {:class (stl/css :title) :level 2 :typography t/title-large} (tr "dashboard.webgl-switch.title")]
|
||||
[:> text* {:as "span" :class (stl/css :beta) :typography t/body-small} (tr "dashboard.webgl-switch.beta")]]
|
||||
[:> text* {:class (stl/css :description) :typography t/body-medium} (tr "dashboard.webgl-switch.description")]
|
||||
[:form {:class (stl/css :webgl-form)}
|
||||
[:> heading* {:level 3 :typography t/headline-small} (tr "dashboard.webgl-switch.status")]
|
||||
[:> switch* {:label (if is-render-enabled (tr "dashboard.webgl-switch.enabled") (tr "dashboard.webgl-switch.disabled"))
|
||||
:default-checked is-render-enabled}]]
|
||||
[:> text* {:typography t/body-medium :class (stl/css :feedback)} [:a {:href "#" :on-click go-settings-feedback :class (stl/css :link)} (tr "dashboard.webgl-switch.feedback") [:> icon* {:icon-id "arrow-up-right" :size "s"}]]]])
|
||||
[{:keys [renderer]}]
|
||||
(let [wasm-renderer? (= renderer :wasm)
|
||||
handle-render-change
|
||||
(mf/use-fn
|
||||
(fn [enabled?]
|
||||
(st/emit! (du/update-profile-props {:renderer (if enabled? :wasm :svg)}))))]
|
||||
[:section {:class (stl/css :webgl-container)}
|
||||
[:header {:class (stl/css :webgl-header)}
|
||||
[:> heading* {:class (stl/css :title) :level 2 :typography t/title-large} (tr "dashboard.webgl-switch.title")]
|
||||
[:> text* {:as "span" :class (stl/css :beta) :typography t/body-small} (tr "dashboard.webgl-switch.beta")]]
|
||||
[:> text* {:class (stl/css :description) :typography t/body-medium} (tr "dashboard.webgl-switch.description")]
|
||||
[:form {:class (stl/css :webgl-form)}
|
||||
[:> heading* {:level 3 :typography t/headline-small} (tr "dashboard.webgl-switch.status")]
|
||||
[:> switch* {:label (if wasm-renderer? (tr "dashboard.webgl-switch.enabled") (tr "dashboard.webgl-switch.disabled"))
|
||||
:default-checked wasm-renderer?
|
||||
:on-change handle-render-change}]]
|
||||
[:> text* {:typography t/body-medium :class (stl/css :feedback)} [:a {:href "#" :on-click go-settings-feedback :class (stl/css :link)} (tr "dashboard.webgl-switch.feedback") [:> icon* {:icon-id "arrow-up-right" :size "s"}]]]]))
|
||||
|
||||
(mf/defc options-page
|
||||
[]
|
||||
(mf/use-effect
|
||||
#(dom/set-html-title (tr "title.settings.options")))
|
||||
(let [profile (mf/deref refs/profile)
|
||||
renderer (or (-> profile :props :renderer) :svg)]
|
||||
(mf/use-effect
|
||||
#(dom/set-html-title (tr "title.settings.options")))
|
||||
|
||||
[:div {:class (stl/css :dashboard-settings)}
|
||||
[:*
|
||||
[:div {:class (stl/css :form-container) :data-testid "settings-form"}
|
||||
[:h2 (tr "labels.settings")]
|
||||
[:& options-form {}]]
|
||||
(when (contains? cf/flags :render-switch)
|
||||
[:> webgl-settings* {:is-render-enabled true}])]])
|
||||
[:div {:class (stl/css :dashboard-settings)}
|
||||
[:*
|
||||
[:div {:class (stl/css :form-container) :data-testid "settings-form"}
|
||||
[:h2 (tr "labels.settings")]
|
||||
[:& options-form {}]]
|
||||
(when (contains? cf/flags :render-switch)
|
||||
[:> webgl-settings* {:renderer renderer}])]]))
|
||||
|
||||
|
||||
@ -227,7 +227,9 @@
|
||||
{::mf/private true
|
||||
::mf/wrap [mf/memo]}
|
||||
[{:keys [layout profile toggle-flag on-close toggle-theme toggle-render]}]
|
||||
(let [show-nudge-options
|
||||
(let [renderer (or (-> profile :props :renderer) :svg)
|
||||
|
||||
show-nudge-options
|
||||
(mf/use-fn
|
||||
#(modal/show! {:type :nudge-option}))]
|
||||
|
||||
@ -329,7 +331,9 @@
|
||||
(when (kbd/enter? event)
|
||||
(toggle-render event)))}
|
||||
[:span {:class (stl/css :item-name)}
|
||||
(tr "workspace.header.menu.enable-webgl")]])]))
|
||||
(if (= renderer :wasm)
|
||||
(tr "workspace.header.menu.disable-webgl")
|
||||
(tr "workspace.header.menu.enable-webgl"))]])]))
|
||||
|
||||
(mf/defc view-menu*
|
||||
{::mf/private true
|
||||
@ -901,8 +905,9 @@
|
||||
(mf/use-fn
|
||||
(fn [event]
|
||||
(dom/stop-propagation event)
|
||||
(js/console.log "toggle-render")
|
||||
#_(st/emit! (toggle-render))))
|
||||
(let [renderer (or (-> profile :props :renderer) :svg)
|
||||
next-renderer (if (= renderer :wasm) :svg :wasm)]
|
||||
(st/emit! (du/update-profile-props {:renderer next-renderer})))))
|
||||
|
||||
open-plugins-manager
|
||||
(mf/use-fn
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user