fix: graph unlink is not executed on all the windows

pull/3545/head
Tienson Qin 2021-12-21 22:49:24 +08:00
parent 96b9ccb457
commit 94a401140c
4 changed files with 24 additions and 9 deletions

View File

@ -319,6 +319,10 @@
(defmethod handle :quitAndInstall [] (defmethod handle :quitAndInstall []
(.quitAndInstall autoUpdater)) (.quitAndInstall autoUpdater))
(defmethod handle :graphUnlinked [^js win [_ repo]]
(doseq [window (win/get-all-windows)]
(utils/send-to-renderer window "graphUnlinked" (bean/->clj repo))))
(defmethod handle :default [args] (defmethod handle :default [args]
(println "Error: no ipc handler for: " (bean/->js args))) (println "Error: no ipc handler for: " (bean/->js args)))

View File

@ -77,7 +77,9 @@
(.getFocusedWindow BrowserWindow)) (.getFocusedWindow BrowserWindow))
(defn send-to-renderer (defn send-to-renderer
[kind payload] ([kind payload]
(when-let [window (get-focused-window)] (send-to-renderer (get-focused-window) kind payload))
([window kind payload]
(when window
(.. ^js window -webContents (.. ^js window -webContents
(send kind (bean/->js payload))))) (send kind (bean/->js payload))))))

View File

@ -8,6 +8,7 @@
[electron.ipc :as ipc] [electron.ipc :as ipc]
[frontend.handler.notification :as notification] [frontend.handler.notification :as notification]
[frontend.handler.metadata :as metadata-handler] [frontend.handler.metadata :as metadata-handler]
[frontend.handler.repo :as repo-handler]
[frontend.ui :as ui] [frontend.ui :as ui]
[frontend.db.persist :as db-persist])) [frontend.db.persist :as db-persist]))
@ -59,6 +60,11 @@
comp [:div (str payload)]] comp [:div (str payload)]]
(notification/show! comp type false)))) (notification/show! comp type false))))
(js/window.apis.on "graphUnlinked"
(fn [data]
(let [repo (bean/->clj data)]
(repo-handler/remove-repo! repo))))
(js/window.apis.on "setGitUsernameAndEmail" (js/window.apis.on "setGitUsernameAndEmail"
(fn [] (fn []
(state/pub-event! [:modal/set-git-username-and-email]))) (state/pub-event! [:modal/set-git-username-and-email])))

View File

@ -30,7 +30,8 @@
[shadow.resource :as rc] [shadow.resource :as rc]
[clojure.set :as set] [clojure.set :as set]
[frontend.mobile.util :as mobile] [frontend.mobile.util :as mobile]
[frontend.db.persist :as db-persist])) [frontend.db.persist :as db-persist]
[electron.ipc :as ipc]))
;; Project settings should be checked in two situations: ;; Project settings should be checked in two situations:
;; 1. User changes the config.edn directly in logseq.com (fn: alter-file) ;; 1. User changes the config.edn directly in logseq.com (fn: alter-file)
@ -537,10 +538,12 @@
[{:keys [id url] :as repo}] [{:keys [id url] :as repo}]
;; (spec/validate :repos/repo repo) ;; (spec/validate :repos/repo repo)
(let [delete-db-f (fn [] (let [delete-db-f (fn []
(let [graph-exists? (db/get-conn url)]
(db/remove-conn! url) (db/remove-conn! url)
(db-persist/delete-graph! url) (db-persist/delete-graph! url)
(search/remove-db! url) (search/remove-db! url)
(state/delete-repo! repo))] (state/delete-repo! repo)
(when graph-exists? (ipc/ipc "graphUnlinked" repo))))]
(if (or (config/local-db? url) (= url "local")) (if (or (config/local-db? url) (= url "local"))
(p/let [_ (idb/clear-local-db! url)] ; clear file handles (p/let [_ (idb/clear-local-db! url)] ; clear file handles
(delete-db-f)) (delete-db-f))