From 85ac199d813460d057f61ef60f0be5ad991e8d49 Mon Sep 17 00:00:00 2001 From: Pablo Alba Date: Wed, 29 Nov 2023 11:54:18 +0100 Subject: [PATCH] :bug: Fix user can rename a component with only spaces inside a group --- frontend/src/app/main/data/workspace.cljs | 14 ++++++++----- .../app/main/data/workspace/libraries.cljs | 21 ++++++++++++------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 1d3eb97f13..4cbfa451a0 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -701,19 +701,23 @@ (watch [_ state _] (when-let [shape-id (dm/get-in state [:workspace-local :shape-for-rename])] (let [shape (wsh/lookup-shape state shape-id) - name (cfh/clean-path name)] + name (str/trim name) + clean-name (cfh/clean-path name) + valid? (and (not (str/ends-with? name "/")) + (string? clean-name) + (not (str/blank? clean-name)))] (rx/concat ;; Remove rename state from workspace local state (rx/of #(update % :workspace-local dissoc :shape-for-rename)) ;; Rename the shape if string is not empty/blank - (when (and (string? name) (not (str/blank? name))) - (rx/of (update-shape shape-id {:name name}))) + (when valid? + (rx/of (update-shape shape-id {:name clean-name}))) ;; Update the component in case if shape is a main instance - (when (and (string? name) (not (str/blank? name)) (:main-instance shape)) + (when (and valid? (:main-instance shape)) (when-let [component-id (:component-id shape)] - (rx/of (dwl/rename-component component-id name))))))))))) + (rx/of (dwl/rename-component component-id clean-name))))))))))) ;; --- Update Selected Shapes attrs diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs index fa23060a13..5fc21fc0df 100644 --- a/frontend/src/app/main/data/workspace/libraries.cljs +++ b/frontend/src/app/main/data/workspace/libraries.cljs @@ -404,16 +404,21 @@ (ptk/reify ::rename-component-and-main-instance ptk/WatchEvent (watch [_ state _] - (when-let [component (dm/get-in state [:workspace-data :components component-id])] - (let [name (cfh/clean-path name) - shape-id (:main-instance-id component) - page-id (:main-instance-page component)] - (rx/concat - (rx/of (rename-component component-id name)) + (let [name (str/trim name) + clean-name (cfh/clean-path name) + valid? (and (not (str/ends-with? name "/")) + (string? clean-name) + (not (str/blank? clean-name))) + component (dm/get-in state [:workspace-data :components component-id])] + (when (and valid? component) + (let [shape-id (:main-instance-id component) + page-id (:main-instance-page component)] + (rx/concat + (rx/of (rename-component component-id clean-name)) ;; NOTE: only when components-v2 is enabled - (when (and shape-id page-id) - (rx/of (dch/update-shapes [shape-id] #(assoc % :name name) {:page-id page-id :stack-undo? true}))))))))) + (when (and shape-id page-id) + (rx/of (dch/update-shapes [shape-id] #(assoc % :name clean-name) {:page-id page-id :stack-undo? true})))))))))) (defn duplicate-component "Create a new component copied from the one with the given id."