From 3b9a895f62e7779439cd0f2d8b0f8dffa8547d76 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 22 Jun 2026 11:29:05 +0200 Subject: [PATCH] :bug: Fix incorrect events handling on webgl render toggle From the workspace main menu --- frontend/src/app/main/data/event.cljs | 2 ++ .../src/app/main/ui/workspace/main_menu.cljs | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/frontend/src/app/main/data/event.cljs b/frontend/src/app/main/data/event.cljs index 77e537c685..4df5c2335b 100644 --- a/frontend/src/app/main/data/event.cljs +++ b/frontend/src/app/main/data/event.cljs @@ -399,6 +399,7 @@ (fn [_] ;; Start the event collection pipeline (->> (rx/merge + (rx/filter (ptk/type? ::force-persist) stream) (->> (rx/from-atom buffer) (rx/filter #(pos? (count %))) (rx/debounce 2000)) @@ -416,6 +417,7 @@ (rx/map (constantly chunk)))))) (rx/take-until stopper) (rx/subs! (fn [chunk] + (st/emit! (ptk/data-event ::chunk-persisted {:chunk chunk})) (swap! buffer remove-from-buffer (count chunk))) (fn [cause] (l/error :hint "unexpected error on audit persistence" :cause cause)) diff --git a/frontend/src/app/main/ui/workspace/main_menu.cljs b/frontend/src/app/main/ui/workspace/main_menu.cljs index 8b87b01d5a..bc46580707 100644 --- a/frontend/src/app/main/ui/workspace/main_menu.cljs +++ b/frontend/src/app/main/ui/workspace/main_menu.cljs @@ -44,6 +44,7 @@ [app.util.i18n :as i18n :refer [tr]] [app.util.keyboard :as kbd] [beicon.v2.core :as rx] + [potok.v2.core :as ptk] [rumext.v2 :as mf])) (mf/defc shortcuts* @@ -936,17 +937,24 @@ ev-name (if (= next-renderer :wasm) "enable-webgl-rendering" "disable-webgl-rendering")] + (if (cf/external-feature-flag "renderer-hard-reload" "test") ;; Bare RPC + hard reload: skips `du/update-profile-props`, so ;; `features/recompute-features` is not run here; bootstrap ;; after reload resolves render-wasm/v1 from the saved profile. (do - (st/emit! (ev/event {::ev/name ev-name - ::ev/origin "workspace:menu"})) - (->> (rp/cmd! :update-profile-props {:props {:renderer next-renderer}}) - (rx/subs! (fn [_] (dom/reload-current-window true)) + (->> (rx/zip + (rp/cmd! :update-profile-props {:props {:renderer next-renderer}}) + (rx/filter (ptk/type? ::ev/chunk-persisted) st/stream)) + (rx/timeout 2000 (rx/of :timeout)) + (rx/subs! (fn [_] + (dom/reload-current-window true)) (fn [_] - (st/emit! (ntf/error (tr "errors.generic"))))))) + (st/emit! (ntf/error (tr "errors.generic")))))) + (st/emit! (ev/event {::ev/name ev-name + ::ev/origin "workspace:menu"}) + (ptk/data-event ::ev/force-persist {}))) + ;; `update-profile-props` WatchEvent calls ;; `features/recompute-features`. (st/emit! (ev/event {::ev/name ev-name