From d66729f17c78bd6623ef0a9342f9c96bba51fad1 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Thu, 23 Apr 2026 16:37:32 +0000 Subject: [PATCH] :zap: Extract pure state-update callbacks from versions-toolbox* to namespace level Eight callbacks that only emit fixed Potok events with no meaningful deps were hoisted out of the component as defn- functions: - on-create-version - on-edit-version - on-cancel-version-edition - on-rename-version - on-delete-version - on-pin-version - on-lock-version - on-unlock-version These no longer need mf/use-fn wrappers since namespace-level functions have stable identity across renders, avoiding unnecessary callback recreation on each render cycle. --- .../main/ui/workspace/sidebar/versions.cljs | 70 +++++++++---------- 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/sidebar/versions.cljs b/frontend/src/app/main/ui/workspace/sidebar/versions.cljs index 96c0e1068e..8a63d189aa 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/versions.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/versions.cljs @@ -85,6 +85,38 @@ [event] (-> event dom/get-current-target (dom/get-data "id") uuid/parse)) +(defn- on-create-version + [] + (st/emit! (dwv/create-version))) + +(defn- on-edit-version + [id _event] + (st/emit! (dwv/update-versions-state {:editing id}))) + +(defn- on-cancel-version-edition + [_id _event] + (st/emit! (dwv/update-versions-state {:editing nil}))) + +(defn- on-rename-version + [id label] + (st/emit! (dwv/rename-version id label))) + +(defn- on-delete-version + [id] + (st/emit! (dwv/delete-version id))) + +(defn- on-pin-version + [id] + (st/emit! (dwv/pin-version id))) + +(defn- on-lock-version + [id] + (st/emit! (dwv/lock-version id))) + +(defn- on-unlock-version + [id] + (st/emit! (dwv/unlock-version id))) + (mf/defc version-entry* {::mf/private true} [{:keys [entry current-profile on-preview on-restore on-delete on-rename on-lock on-unlock on-edit on-cancel-edit is-editing]}] @@ -310,25 +342,6 @@ (= (:filter state) (:profile-id %))))) (group-snapshots))) - on-create-version - (mf/use-fn - (fn [] (st/emit! (dwv/create-version)))) - - on-edit-version - (mf/use-fn - (fn [id _event] - (st/emit! (dwv/update-versions-state {:editing id})))) - - on-cancel-version-edition - (mf/use-fn - (fn [_id _event] - (st/emit! (dwv/update-versions-state {:editing nil})))) - - on-rename-version - (mf/use-fn - (fn [id label] - (st/emit! (dwv/rename-version id label)))) - on-preview-version (mf/use-fn (fn [id] @@ -361,25 +374,6 @@ ::ev/origin "workspace:sidebar" :type "autosaved-version"})))) - on-delete-version - (mf/use-fn - (fn [id] - (st/emit! (dwv/delete-version id)))) - - on-pin-version - (mf/use-fn - (fn [id] (st/emit! (dwv/pin-version id)))) - - on-lock-version - (mf/use-fn - (fn [id] - (st/emit! (dwv/lock-version id)))) - - on-unlock-version - (mf/use-fn - (fn [id] - (st/emit! (dwv/unlock-version id)))) - on-change-filter (mf/use-fn (fn [filter]