From aedd8cc11ea8ad0b3816a80652df6cf3eb4452ea Mon Sep 17 00:00:00 2001 From: "alonso.torres" Date: Wed, 3 Dec 2025 17:01:38 +0100 Subject: [PATCH] :bug: Fix problem when renaming variants in plugins --- frontend/src/app/main/data/workspace.cljs | 40 ++++++++++++++++++- .../main/ui/workspace/sidebar/layer_name.cljs | 11 +---- frontend/src/app/plugins/shape.cljs | 2 +- 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index c3d0990d6e..c550c150a5 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -20,7 +20,9 @@ [app.common.path-names :as cpn] [app.common.transit :as t] [app.common.types.component :as ctc] + [app.common.types.components-list :as ctkl] [app.common.types.shape :as cts] + [app.common.types.variant :as ctv] [app.common.uuid :as uuid] [app.main.data.changes :as dch] [app.main.data.comments :as dcmt] @@ -551,7 +553,6 @@ component-id (:component-id shape) undo-id (js/Symbol)] - (when valid? (if (ctc/is-variant-container? shape) ;; Rename the full variant when it is a variant container @@ -566,6 +567,43 @@ (dwl/rename-component component-id clean-name)) (dwu/commit-undo-transaction undo-id)))))))))) +(defn rename-shape-or-variant + ([id name] + (rename-shape-or-variant nil nil id name)) + ([file-id page-id id name] + (ptk/reify ::rename-shape-or-variant + ptk/WatchEvent + (watch [_ state _] + (let [file-id (d/nilv file-id (:current-file-id state)) + page-id (d/nilv page-id (:current-page-id state)) + + file-data (dsh/lookup-file-data state file-id) + shape + (-> (dsh/lookup-page-objects state file-id page-id) + (get id)) + + is-variant? (ctc/is-variant? shape) + variant-id (when is-variant? (:variant-id shape)) + variant-name (when is-variant? (:variant-name shape)) + component-id (:component-id shape) + component (ctkl/get-component file-data (:component-id shape)) + variant-properties (:variant-properties component)] + (cond + (and variant-name (ctv/valid-properties-formula? name)) + (rx/of (dwva/update-properties-names-and-values + component-id variant-id variant-properties (ctv/properties-formula->map name)) + (dwva/remove-empty-properties variant-id) + (dwva/update-error component-id)) + + variant-name + (rx/of (dwva/update-properties-names-and-values + component-id variant-id variant-properties {}) + (dwva/remove-empty-properties variant-id) + (dwva/update-error component-id name)) + + :else + (rx/of (end-rename-shape id name)))))))) + ;; --- Update Selected Shapes attrs (defn update-selected-shapes diff --git a/frontend/src/app/main/ui/workspace/sidebar/layer_name.cljs b/frontend/src/app/main/ui/workspace/sidebar/layer_name.cljs index 144e27a2e6..642b3d27f5 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layer_name.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/layer_name.cljs @@ -11,7 +11,6 @@ [app.common.data.macros :as dm] [app.common.types.variant :as ctv] [app.main.data.workspace :as dw] - [app.main.data.workspace.variants :as dwv] [app.main.store :as st] [app.util.debug :as dbg] [app.util.dom :as dom] @@ -69,15 +68,7 @@ name (str/trim (dom/get-value name-input))] (on-stop-edit) (reset! edition* false) - (if variant-name - (if (ctv/valid-properties-formula? name) - (st/emit! (dwv/update-properties-names-and-values component-id variant-id variant-properties (ctv/properties-formula->map name)) - (dwv/remove-empty-properties variant-id) - (dwv/update-error component-id)) - (st/emit! (dwv/update-properties-names-and-values component-id variant-id variant-properties {}) - (dwv/remove-empty-properties variant-id) - (dwv/update-error component-id name))) - (st/emit! (dw/end-rename-shape shape-id name)))))) + (st/emit! (dw/rename-shape-or-variant shape-id name))))) cancel-edit (mf/use-fn diff --git a/frontend/src/app/plugins/shape.cljs b/frontend/src/app/plugins/shape.cljs index b047954397..c7bdbb3866 100644 --- a/frontend/src/app/plugins/shape.cljs +++ b/frontend/src/app/plugins/shape.cljs @@ -218,7 +218,7 @@ (u/display-not-valid :name value) :else - (st/emit! (dw/end-rename-shape id value)))))} + (st/emit! (dw/rename-shape-or-variant file-id page-id id value)))))} :blocked {:this true