ソースを参照

refactor: simplify handlers

charlie 4 年 前
コミット
e7809900a7
2 ファイル変更23 行追加27 行削除
  1. 2 0
      externs.js
  2. 21 27
      src/main/frontend/components/block.cljs

+ 2 - 0
externs.js

@@ -17,7 +17,9 @@ dummy.getRangeAt = function() {};
 dummy.getElementsByClassName = function() {};
 dummy.containsNode = function() {};
 dummy.select = function() {};
+dummy.closest = function () {};
 dummy.setAttribute = function() {};
+dummy.getAttribute = function() {};
 dummy.font = function() {};
 dummy.measureText = function() {};
 dummy.fillStyle = function() {};

+ 21 - 27
src/main/frontend/components/block.cljs

@@ -162,34 +162,28 @@
     (let [get-block-id #(and % (.getAttribute (.closest % "[blockid]") "blockid"))
           repo (state/get-current-repo)
           local-repo? (config/local-db? repo)
-          sub-feat? (and local-repo? (config/local-asset? text))
-          ctl-handlers {:delete
-                        (fn [e]
-                          (let [target (.-target e)
-                                block-id (get-block-id target)
-                                confirm-fn (ui/make-confirm-modal
-                                            {:title         (t :asset/confirm-delete (.toLocaleLowerCase (t :text/image)))
-                                             :sub-title     (if sub-feat? :asset/physical-delete "")
-                                             :sub-checkbox? sub-feat?
-                                             :on-confirm    (fn [e {:keys [close-fn sub-selected]}]
-                                                              (close-fn)
-                                                              (editor-handler/delete-asset-of-block!
-                                                               {:block-id    block-id
-                                                                :force-local (and sub-selected (get sub-selected 0))
-                                                                :repo        repo
-                                                                :href        text}))})]
-                            (state/set-modal! confirm-fn)
-                            (util/stop e)))}]
+          sub-feat? (and local-repo? (config/local-asset? text))]
       [:div.asset-container
-       {:on-click (fn [e]
-                    (let [target (.-target e)]
-                      (some (fn [k]
-                              (let [selector (str "." (symbol k))
-                                    el (.closest target selector)]
-                                (when el
-                                  (apply (k ctl-handlers) [e])
-                                  true))) [:delete])))}
-       [[:span.ctl [:a.delete {:title "delete"} svg/trash-sm]]
+       [[:span.ctl
+         [:a.delete
+          {:title "delete"
+           :on-click
+           (fn [e]
+             (let [target (.-target e)
+                   block-id (get-block-id target)
+                   confirm-fn (ui/make-confirm-modal
+                               {:title         (t :asset/confirm-delete (.toLocaleLowerCase (t :text/image)))
+                                :sub-title     (if sub-feat? :asset/physical-delete "")
+                                :sub-checkbox? sub-feat?
+                                :on-confirm    (fn [e {:keys [close-fn sub-selected]}]
+                                                 (close-fn)
+                                                 (editor-handler/delete-asset-of-block!
+                                                  {:block-id    block-id
+                                                   :force-local (and sub-selected (get sub-selected 0))
+                                                   :repo        repo
+                                                   :href        text}))})]
+               (state/set-modal! confirm-fn)
+               (util/stop e)))} svg/trash-sm]]
         child]])))
 
 (rum/defcs asset-link < rum/reactive