From b677d6f819f9d00dc9c18742b0a7b24c0c491931 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Tue, 23 Aug 2022 10:24:30 +0800 Subject: [PATCH] feat: find-in-page add results --- src/electron/electron/find_in_page.cljs | 10 ++++++++-- src/electron/electron/window.cljs | 4 ---- src/main/electron/listener.cljs | 6 ++++++ src/main/frontend/components/find_in_page.cljs | 13 ++++++++++--- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/electron/electron/find_in_page.cljs b/src/electron/electron/find_in_page.cljs index 29761a664..a18101ebb 100644 --- a/src/electron/electron/find_in_page.cljs +++ b/src/electron/electron/find_in_page.cljs @@ -1,10 +1,16 @@ (ns electron.find-in-page - (:require [electron.window :as win])) + (:require [electron.utils :as utils] + [cljs-bean.core :as bean])) (defn find! [^js window search option] (when window - (.findInPage ^js (.-webContents window) search option))) + (let [contents ^js (.-webContents window)] + (.findInPage contents search option) + (.on contents "found-in-page" + (fn [_event result] + (utils/send-to-renderer window "foundInPage" (bean/->clj result)))) + true))) (defn clear! [^js window] diff --git a/src/electron/electron/window.cljs b/src/electron/electron/window.cljs index e44b38d16..239a84d9b 100644 --- a/src/electron/electron/window.cljs +++ b/src/electron/electron/window.cljs @@ -159,7 +159,3 @@ (.off win "enter-full-screen") (.off win "leave-full-screen"))) #())) - -(defn get-active-window - [] - (.getFocusedWindow BrowserWindow)) diff --git a/src/main/electron/listener.cljs b/src/main/electron/listener.cljs index b71ec9cf2..028c9384e 100644 --- a/src/main/electron/listener.cljs +++ b/src/main/electron/listener.cljs @@ -124,6 +124,12 @@ :on-error error-f}] (repo-handler/persist-db! repo handlers)))) + (js/window.apis.on "foundInPage" + (fn [data] + (let [data' (bean/->clj data)] + (state/set-state! [:ui/find-in-search :matches] data') + true))) + (js/window.apis.on "loginCallback" (fn [code] (user/login-callback code))) diff --git a/src/main/frontend/components/find_in_page.cljs b/src/main/frontend/components/find_in_page.cljs index 758142ade..635914d65 100644 --- a/src/main/frontend/components/find_in_page.cljs +++ b/src/main/frontend/components/find_in_page.cljs @@ -42,8 +42,8 @@ :node (gdom/getElement "search-in-page") :on-hide (fn [] (search-handler/electron-exit-find-in-page!))))) - [{:keys [q backward?]}] - [:div#search-in-page.flex.flex-row.absolute.top-2.right-4.shadow-lg.px-2.py-1.faster-fade-in + [{:keys [matches]}] + [:div#search-in-page.flex.flex-row.absolute.top-2.right-4.shadow-lg.px-2.py-1.faster-fade-in.items-center [:div.flex [:input#search-in-page-input.form-input.block.w-48.sm:text-sm.sm:leading-5.my-2.border-none.mr-4.outline-none {:auto-focus true @@ -51,7 +51,14 @@ :on-change (fn [e] (let [value (util/evalue e)] (state/set-state! [:ui/find-in-search :q] value) - (debounced-search)))}]] + (if (string/blank? value) + (search-handler/electron-exit-find-in-page!) + (debounced-search))))}]] + [:div.px-4.text-sm.opacity-80 + (:activeMatchOrdinal matches 0) + "/" + (:matches matches 0)] + (ui/button (ui/icon "caret-up" {:style {:font-size 18}}) :on-click (fn []