From 8a81b02bccd95cf260bb3ea1947da50ec8f145b3 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Wed, 26 Mar 2025 11:19:22 +0800 Subject: [PATCH] use deferred input for view search --- deps/db/src/logseq/db/frontend/view.cljs | 2 +- src/main/frontend/components/views.cljs | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/deps/db/src/logseq/db/frontend/view.cljs b/deps/db/src/logseq/db/frontend/view.cljs index ed94be5bad..a49c21ce48 100644 --- a/deps/db/src/logseq/db/frontend/view.cljs +++ b/deps/db/src/logseq/db/frontend/view.cljs @@ -393,7 +393,7 @@ (if (or (= sorting* :logseq.property/empty-placeholder) (empty? sorting*)) [{:id :block/updated-at, :asc? false}] sorting*)) - filtered-entities (if (seq filters) + filtered-entities (if (or (seq filters) (not (string/blank? input))) (filter (fn [row] (row-matched? db row filters input)) entities) entities) group-by-page? (= group-by-property-ident :block/page) diff --git a/src/main/frontend/components/views.cljs b/src/main/frontend/components/views.cljs index d5733475ac..0a416ca459 100644 --- a/src/main/frontend/components/views.cljs +++ b/src/main/frontend/components/views.cljs @@ -613,9 +613,9 @@ {:placeholder "Type to search" :auto-focus true :value input - :onChange (fn [e] - (let [value (util/evalue e)] - (on-change value))) + :on-change (fn [e] + (let [value (util/evalue e)] + (on-change value))) :on-key-down (fn [e] (when (= "Escape" (util/ekey e)) (set-show-input! false) @@ -1245,9 +1245,8 @@ (defn- run-effects! [{:keys [load-view-data] :as option} {:keys [data]} input *scroller-ref gallery?] (hooks/use-effect! - (fn [] - (load-view-data input)) - [input]) + (fn [] (load-view-data input)) + [(hooks/use-debounced-value input 300)]) (hooks/use-effect! (fn [] @@ -1498,7 +1497,7 @@ (rum/defc ^:large-vars/cleanup-todo view-inner < rum/static [view-entity {:keys [view-parent data set-data! columns add-new-object! foldable-options] :as option*} *scroller-ref] - (let [[input set-input!] (rum/use-state "") + (let [[input set-input!] (hooks/use-state "") option (assoc option* :properties (-> (remove #{:id :select} (map :id columns)) (conj :block/uuid :block/name)