From 5cbcdb77c90e0c7dba6d5b1e70c51f98f95daeaf Mon Sep 17 00:00:00 2001 From: Florian Schroedl Date: Wed, 27 Nov 2024 11:29:04 +0100 Subject: [PATCH] Fix token set deletion --- common/src/app/common/types/tokens_lib.cljc | 27 ++++++++++--------- .../common_tests/types/tokens_lib_test.cljc | 6 ++--- frontend/src/app/main/data/tokens.cljs | 2 +- .../ui/workspace/tokens/context_menu.cljs | 2 +- .../app/main/ui/workspace/tokens/form.cljs | 2 +- 5 files changed, 19 insertions(+), 20 deletions(-) diff --git a/common/src/app/common/types/tokens_lib.cljc b/common/src/app/common/types/tokens_lib.cljc index b65ba63ae..9aa6392b4 100644 --- a/common/src/app/common/types/tokens_lib.cljc +++ b/common/src/app/common/types/tokens_lib.cljc @@ -215,20 +215,20 @@ (defn split-token-set-path [path] (split-path path set-separator)) -(defn set-full-name->prefixed-full-path [set-full-name] - (-> (split-token-set-path set-full-name) +(defn set-full-name->prefixed-full-path [set-full-name-string] + (-> (split-token-set-path set-full-name-string) (set-full-path->set-prefixed-full-path))) (defn get-token-set-prefixed-path [token-set] (let [path (get-path token-set set-separator)] (set-full-path->set-prefixed-full-path path))) -(defn set-name->prefixed-set-name [set-name] - (-> (set-full-name->prefixed-full-path set-name) +(defn set-name-string->prefixed-set-path-string [set-name-string] + (-> (set-full-name->prefixed-full-path set-name-string) (join-set-path))) -(defn prefixed-set-full-path->set-name-name [set-path] - (->> (split-token-set-path set-path) +(defn prefixed-set-path-string->set-name-string [set-path-string] + (->> (split-token-set-path set-path-string) (map (fn [path-part] (or (-> (split-set-str-path-prefix path-part) (second)) @@ -318,7 +318,7 @@ (vals tokens)) (get-set-prefixed-path-string [_] - (set-name->prefixed-set-name name)) + (set-name-string->prefixed-set-path-string name)) (get-tokens-tree [_] (tokens-tree tokens)) @@ -668,18 +668,19 @@ When `before-set-name` is nil, move set to bottom") active-themes))) this))) - (delete-set-path [_ set-path] - (let [path (split-token-set-path set-path) - set-node (get-in sets path) - set-group? (not (instance? TokenSet set-node))] - (TokensLib. (d/dissoc-in sets path) + (delete-set-path [_ prefixed-set-name] + (let [prefixed-set-path (split-token-set-path prefixed-set-name) + set-node (get-in sets prefixed-set-path) + set-group? (not (instance? TokenSet set-node)) + set-name-string (prefixed-set-path-string->set-name-string prefixed-set-name)] + (TokensLib. (d/dissoc-in sets prefixed-set-path) ;; TODO: When deleting a set-group, also deactivate the child sets (if set-group? themes (walk/postwalk (fn [form] (if (instance? TokenTheme form) - (disable-set form set-path) + (disable-set form set-name-string) form)) themes)) active-themes))) diff --git a/common/test/common_tests/types/tokens_lib_test.cljc b/common/test/common_tests/types/tokens_lib_test.cljc index cab60fc8f..89148a4e5 100644 --- a/common/test/common_tests/types/tokens_lib_test.cljc +++ b/common/test/common_tests/types/tokens_lib_test.cljc @@ -100,7 +100,6 @@ (->> (ctob/move-set-before tokens-lib set-name before-set-name) (ctob/get-ordered-set-names) (into [])))] - ;; TODO Nested moving doesn't work as expected (t/testing "regular moving" (t/is (= ["A" "Move" "B"] (move "Move" "B"))) (t/is (= ["B" "A" "Move"] (move "A" "Move")))) @@ -241,11 +240,10 @@ (ctob/delete-set-path "S-not-existing-set")) token-set' (ctob/get-set tokens-lib' "updated-name") - ;;token-theme' (ctob/get-theme tokens-lib' "" "test-token-theme") - ] + token-theme' (ctob/get-theme tokens-lib' "" "test-token-theme")] (t/is (= (ctob/set-count tokens-lib') 0)) - ;; (t/is (= (:sets token-theme') #{})) TODO: fix this + (t/is (= (:sets token-theme') #{})) (t/is (nil? token-set')))) (t/deftest active-themes-set-names diff --git a/frontend/src/app/main/data/tokens.cljs b/frontend/src/app/main/data/tokens.cljs index 3c7208d1c..7eb1b8687 100644 --- a/frontend/src/app/main/data/tokens.cljs +++ b/frontend/src/app/main/data/tokens.cljs @@ -100,7 +100,7 @@ (ptk/reify ::set-selected-token-set-path-from-name ptk/UpdateEvent (update [_ state] - (->> (ctob/set-name->prefixed-set-name token-set-name) + (->> (ctob/set-name-string->prefixed-set-path-string token-set-name) (wtts/assoc-selected-token-set-path state))))) (defn create-token-theme [token-theme] diff --git a/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs b/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs index 1bbae23c9..6af2c3704 100644 --- a/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs @@ -207,7 +207,7 @@ (defn default-actions [{:keys [token selected-token-set-path]}] (let [{:keys [modal]} (wtty/get-token-properties token)] [{:title "Delete Token" - :action #(st/emit! (dt/delete-token (ctob/prefixed-set-full-path->set-name-name selected-token-set-path) (:name token)))} + :action #(st/emit! (dt/delete-token (ctob/prefixed-set-path-string->set-name-string selected-token-set-path) (:name token)))} {:title "Duplicate Token" :action #(st/emit! (dt/duplicate-token (:name token)))} {:title "Edit Token" diff --git a/frontend/src/app/main/ui/workspace/tokens/form.cljs b/frontend/src/app/main/ui/workspace/tokens/form.cljs index 320995e91..0b089a277 100644 --- a/frontend/src/app/main/ui/workspace/tokens/form.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/form.cljs @@ -352,7 +352,7 @@ Token names should only contain letters and digits separated by . characters.")} (fn [e] (dom/prevent-default e) (modal/hide!) - (st/emit! (dt/delete-token (ctob/prefixed-set-full-path->set-name-name selected-token-set-path) (:name token))))) + (st/emit! (dt/delete-token (ctob/prefixed-set-path-string->set-name-string selected-token-set-path) (:name token))))) on-cancel (mf/use-fn