|
|
@@ -147,44 +147,53 @@
|
|
|
|
|
|
(defn main
|
|
|
[]
|
|
|
- (.on app "window-all-closed" (fn [] (.quit app)))
|
|
|
- (.on app "ready"
|
|
|
- (fn []
|
|
|
- (let [^js win (create-main-window)
|
|
|
- _ (reset! *win win)
|
|
|
- *quitting? (atom false)]
|
|
|
- (.. logger (info (str "Logseq App(" (.getVersion app) ") Starting... ")))
|
|
|
-
|
|
|
- (vreset! *setup-fn
|
|
|
- (fn []
|
|
|
- (let [t0 (setup-updater! win)
|
|
|
- t1 (setup-interceptor!)
|
|
|
- t2 (setup-app-manager! win)
|
|
|
- tt (handler/set-ipc-handler! win)]
|
|
|
-
|
|
|
- (vreset! *teardown-fn
|
|
|
- #(doseq [f [t0 t1 t2 tt]]
|
|
|
- (and f (f)))))))
|
|
|
-
|
|
|
- ;; setup effects
|
|
|
- (@*setup-fn)
|
|
|
-
|
|
|
- ;; main window events
|
|
|
- (.on win "close" (fn [e]
|
|
|
- (.preventDefault e)
|
|
|
- (let [web-contents (. win -webContents)]
|
|
|
- (.send web-contents "persistent-dbs"))
|
|
|
- (async/go
|
|
|
- ;; FIXME: What if persistence failed?
|
|
|
- (let [_ (async/<! state/persistent-dbs-chan)]
|
|
|
- (if (or @*quitting? (not mac?))
|
|
|
- (when-let [win @*win]
|
|
|
- (destroy-window! win)
|
|
|
- (reset! *win nil))
|
|
|
- (do (.preventDefault ^js/Event e)
|
|
|
- (.hide win)))))))
|
|
|
- (.on app "before-quit" (fn [_e] (reset! *quitting? true)))
|
|
|
- (.on app "activate" #(if @*win (.show win)))))))
|
|
|
+ (if-not (.requestSingleInstanceLock app)
|
|
|
+ (.quit app)
|
|
|
+ (do
|
|
|
+ (.on app "second-instance"
|
|
|
+ (fn [_event _commandLine _workingDirectory]
|
|
|
+ (when-let [win @*win]
|
|
|
+ (when (.isMinimized win)
|
|
|
+ (.restore win))
|
|
|
+ (.focus win))))
|
|
|
+ (.on app "window-all-closed" (fn [] (.quit app)))
|
|
|
+ (.on app "ready"
|
|
|
+ (fn []
|
|
|
+ (let [^js win (create-main-window)
|
|
|
+ _ (reset! *win win)
|
|
|
+ *quitting? (atom false)]
|
|
|
+ (.. logger (info (str "Logseq App(" (.getVersion app) ") Starting... ")))
|
|
|
+
|
|
|
+ (vreset! *setup-fn
|
|
|
+ (fn []
|
|
|
+ (let [t0 (setup-updater! win)
|
|
|
+ t1 (setup-interceptor!)
|
|
|
+ t2 (setup-app-manager! win)
|
|
|
+ tt (handler/set-ipc-handler! win)]
|
|
|
+
|
|
|
+ (vreset! *teardown-fn
|
|
|
+ #(doseq [f [t0 t1 t2 tt]]
|
|
|
+ (and f (f)))))))
|
|
|
+
|
|
|
+ ;; setup effects
|
|
|
+ (@*setup-fn)
|
|
|
+
|
|
|
+ ;; main window events
|
|
|
+ (.on win "close" (fn [e]
|
|
|
+ (.preventDefault e)
|
|
|
+ (let [web-contents (. win -webContents)]
|
|
|
+ (.send web-contents "persistent-dbs"))
|
|
|
+ (async/go
|
|
|
+ ;; FIXME: What if persistence failed?
|
|
|
+ (let [_ (async/<! state/persistent-dbs-chan)]
|
|
|
+ (if (or @*quitting? (not mac?))
|
|
|
+ (when-let [win @*win]
|
|
|
+ (destroy-window! win)
|
|
|
+ (reset! *win nil))
|
|
|
+ (do (.preventDefault ^js/Event e)
|
|
|
+ (.hide win)))))))
|
|
|
+ (.on app "before-quit" (fn [_e] (reset! *quitting? true)))
|
|
|
+ (.on app "activate" #(if @*win (.show win)))))))))
|
|
|
|
|
|
(defn start []
|
|
|
(js/console.log "Main - start")
|