From e0baf4b05c6dcf02d2a75f03b2ebf128b69f4e21 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Mon, 6 Sep 2021 22:18:45 +0800 Subject: [PATCH] fix: close file watcher when exit the app --- src/electron/electron/core.cljs | 2 ++ src/electron/electron/fs_watcher.cljs | 9 ++++++++- src/main/frontend/fs/watcher_handler.cljs | 5 +---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/electron/electron/core.cljs b/src/electron/electron/core.cljs index dcd486111..3e908655e 100644 --- a/src/electron/electron/core.cljs +++ b/src/electron/electron/core.cljs @@ -7,6 +7,7 @@ [clojure.string :as string] [promesa.core :as p] [cljs-bean.core :as bean] + [electron.fs-watcher :as fs-watcher] ["fs-extra" :as fs] ["path" :as path] ["os" :as os] @@ -245,6 +246,7 @@ (.on app "window-all-closed" (fn [] (try + (fs-watcher/close-watcher!) (search/close!) (catch js/Error e (js/console.error e))) diff --git a/src/electron/electron/fs_watcher.cljs b/src/electron/electron/fs_watcher.cljs index 17daf6812..d80890211 100644 --- a/src/electron/electron/fs_watcher.cljs +++ b/src/electron/electron/fs_watcher.cljs @@ -11,6 +11,7 @@ ;; 1. https://github.com/Axosoft/nsfw (defonce polling-interval 5000) +(defonce file-watcher (atom nil)) (defonce file-watcher-chan "file-watcher") (defn send-file-watcher! [^js win type payload] @@ -31,8 +32,9 @@ :binaryInterval polling-interval :persistent true :disableGlobbing true - + :usePolling false :awaitWriteFinish true}))] + (reset! file-watcher watcher) ;; TODO: batch sender (.on watcher "add" (fn [path] @@ -61,3 +63,8 @@ (.on app "quit" #(.close watcher)) true))) + +(defn close-watcher! + [] + (when-let [watcher @file-watcher] + (.close watcher))) diff --git a/src/main/frontend/fs/watcher_handler.cljs b/src/main/frontend/fs/watcher_handler.cljs index dc2ecd950..6d0d5daa9 100644 --- a/src/main/frontend/fs/watcher_handler.cljs +++ b/src/main/frontend/fs/watcher_handler.cljs @@ -49,10 +49,7 @@ (js/console.warn "Can't get file in the db: " path) (and (= "change" type) - ;; ignore truncate - (not (string/blank? content)) - (not= (string/trim content) - (string/trim (or (db/get-file repo path) "")))) + (not= (string/trim content) (string/trim db-content))) (p/let [_ (file-handler/alter-file repo path content {:re-render-root? true :from-disk? true})] (set-missing-block-ids! content)