From 6d6f624d09553a9dc899e815d6f673e5d0d613a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?andr=C3=A9s=20gonz=C3=A1lez?= Date: Thu, 21 May 2026 13:17:14 +0200 Subject: [PATCH] :sparkles: Track WebGL rendering toggle events (#9683) (#9772) * :sparkles: Track WebGL rendering toggle events (#9683) * :paperclip: Normalize workspace menu events origin * :paperclip: Normalize event origin for profile settings page --------- Co-authored-by: Andrey Antukh --- .../src/app/main/ui/settings/options.cljs | 7 +++- .../app/main/ui/settings/subscription.cljs | 4 +-- .../src/app/main/ui/workspace/main_menu.cljs | 36 ++++++++++--------- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/frontend/src/app/main/ui/settings/options.cljs b/frontend/src/app/main/ui/settings/options.cljs index 7a2fc59413..43d5374476 100644 --- a/frontend/src/app/main/ui/settings/options.cljs +++ b/frontend/src/app/main/ui/settings/options.cljs @@ -8,6 +8,7 @@ (:require-macros [app.main.style :as stl]) (:require [app.config :as cf] + [app.main.data.event :as ev] [app.main.data.notifications :as ntf] [app.main.data.profile :as du] [app.main.refs :as refs] @@ -95,7 +96,11 @@ handle-render-change (mf/use-fn (fn [enabled?] - (st/emit! (du/update-profile-props {:renderer (if enabled? :wasm :svg)}) + (st/emit! (ev/event {::ev/name (if enabled? + "enable-webgl-rendering" + "disable-webgl-rendering") + ::ev/origin "settings"}) + (du/update-profile-props {:renderer (if enabled? :wasm :svg)}) (ntf/success (tr (if enabled? "webgl.toast.webgl-render-enabled" "webgl.toast.webgl-render-disabled"))))))] diff --git a/frontend/src/app/main/ui/settings/subscription.cljs b/frontend/src/app/main/ui/settings/subscription.cljs index 81726702d5..6b4f3e2ab7 100644 --- a/frontend/src/app/main/ui/settings/subscription.cljs +++ b/frontend/src/app/main/ui/settings/subscription.cljs @@ -430,7 +430,7 @@ (mf/deps subscription-editors nitrate-license) (fn [subscription-type current-subscription] (st/emit! (ev/event {::ev/name "open-subscription-modal" - ::ev/origin "settings:in-app"})) + ::ev/origin "settings"})) (if (= subscription-type "nitrate") (st/emit! (dnt/show-nitrate-popup :nitrate-dialog {:nitrate-license nitrate-license})) (st/emit! @@ -461,7 +461,7 @@ (st/emit! (ev/event {::ev/name "open-subscription-modal" - ::ev/origin "settings:from-pricing-page"}) + ::ev/origin "settings"}) (modal/show :management-dialog {:subscription-type (if (= params-subscription "subscription-to-penpot-unlimited") "unlimited" diff --git a/frontend/src/app/main/ui/workspace/main_menu.cljs b/frontend/src/app/main/ui/workspace/main_menu.cljs index ecd4b186bc..90ca611c41 100644 --- a/frontend/src/app/main/ui/workspace/main_menu.cljs +++ b/frontend/src/app/main/ui/workspace/main_menu.cljs @@ -63,21 +63,21 @@ (mf/use-fn (fn [] (st/emit! (ev/event {::ev/name "explore-help-center-click" - ::ev/origin "workspace-menu:in-app"})) + ::ev/origin "workspace:menu"})) (dom/open-new-window "https://help.penpot.app"))) nav-to-community (mf/use-fn (fn [] (st/emit! (ev/event {::ev/name "explore-community-click" - ::ev/origin "workspace-menu:in-app"})) + ::ev/origin "workspace:menu"})) (dom/open-new-window "https://community.penpot.app"))) nav-to-youtube (mf/use-fn (fn [] (st/emit! (ev/event {::ev/name "explore-tutorials-click" - ::ev/origin "workspace-menu:in-app"})) + ::ev/origin "workspace:menu"})) (dom/open-new-window "https://www.youtube.com/c/Penpot"))) nav-to-templates @@ -91,14 +91,14 @@ (mf/use-fn (fn [] (st/emit! (ev/event {::ev/name "explore-github-repository-click" - ::ev/origin "workspace-menu:in-app"})) + ::ev/origin "workspace:menu"})) (dom/open-new-window "https://github.com/penpot/penpot"))) nav-to-terms (mf/use-fn (fn [] (st/emit! (ev/event {::ev/name "explore-terms-service-click" - ::ev/origin "workspace-menu:in-app"})) + ::ev/origin "workspace:menu"})) (dom/open-new-window "https://penpot.app/terms"))) nav-to-feedback @@ -119,7 +119,7 @@ (st/emit! (-> (dw/toggle-layout-flag :shortcuts) - (vary-meta assoc ::ev/origin "workspace-header"))))) + (vary-meta assoc ::ev/origin "workspace:menu"))))) show-release-notes (mf/use-fn @@ -347,7 +347,7 @@ (r/set-resize-type! :bottom) (st/emit! (dw/remove-layout-flag :textpalette) (-> (dw/toggle-layout-flag :colorpalette) - (vary-meta assoc ::ev/origin "workspace-menu"))))) + (vary-meta assoc ::ev/origin "workspace:menu"))))) toggle-text-palette (mf/use-fn @@ -355,7 +355,7 @@ (r/set-resize-type! :bottom) (st/emit! (dw/remove-layout-flag :colorpalette) (-> (dw/toggle-layout-flag :textpalette) - (vary-meta assoc ::ev/origin "workspace-menu")))))] + (vary-meta assoc ::ev/origin "workspace:menu")))))] [:> dropdown-menu* {:show true :class (stl/css :base-menu :sub-menu :pos-3) @@ -629,7 +629,7 @@ (mf/deps file) (fn [_] (st/emit! (-> (fexp/open-export-dialog [file]) - (with-meta {::ev/origin "workspace"}))))) + (with-meta {::ev/origin "workspace:menu"}))))) on-export-file-key-down (mf/use-fn @@ -809,7 +809,7 @@ (mf/use-fn (fn [] (st/emit! (ev/event {::ev/name "manage-mpc-option" - ::ev/origin "workspace-menu"})) + ::ev/origin "workspace:menu"})) (dom/open-new-window "/#/settings/integrations"))) on-nav-to-integrations-key-down @@ -824,10 +824,10 @@ (if mcp-connected? (st/emit! (mcp/user-disconnect-mcp) (ev/event {::ev/name "disconnect-mcp-plugin" - ::ev/origin "workspace-menu"})) + ::ev/origin "workspace:menu"})) (st/emit! (mcp/connect-mcp) (ev/event {::ev/name "connect-mcp-plugin" - ::ev/origin "workspace-menu"}))))) + ::ev/origin "workspace:menu"}))))) on-toggle-mcp-plugin-key-down (mf/use-fn @@ -910,7 +910,7 @@ (mf/use-fn (fn [] (st/emit! (ev/event {::ev/name "explore-pricing-click" - ::ev/origin "workspace-menu"})) + ::ev/origin "workspace:menu"})) (dom/open-new-window "https://penpot.app/pricing"))) toggle-flag @@ -922,7 +922,7 @@ (keyword))] (st/emit! (-> (dw/toggle-layout-flag flag) - (vary-meta assoc ::ev/origin "workspace-menu"))) + (vary-meta assoc ::ev/origin "workspace:menu"))) (reset! show-menu* false) (reset! selected-sub-menu* nil)))) @@ -939,7 +939,11 @@ (dom/stop-propagation event) (let [renderer (or (-> profile :props :renderer) :svg) next-renderer (if (= renderer :wasm) :svg :wasm)] - (st/emit! (du/update-profile-props {:renderer next-renderer}) + (st/emit! (ev/event {::ev/name (if (= next-renderer :wasm) + "enable-webgl-rendering" + "disable-webgl-rendering") + ::ev/origin "workspace:menu"}) + (du/update-profile-props {:renderer next-renderer}) (ntf/success (tr (if (= next-renderer :wasm) "webgl.toast.webgl-render-enabled" "webgl.toast.webgl-render-disabled"))))))) @@ -973,7 +977,7 @@ :icon i/menu}] [:> dropdown-menu* {:show show-menu? - :id "workspace-menu" + :id "workspace:menu" :on-close close-menu :class (stl/css :base-menu :menu)} [:> dropdown-menu-item* {:class (stl/css :base-menu-item :menu-item)