mirror of
https://github.com/logseq/logseq.git
synced 2026-05-28 14:39:48 +00:00
fix: addresses ipc errors in general
This commit is contained in:
@@ -514,29 +514,21 @@
|
||||
(string? command) command
|
||||
:else nil)))
|
||||
|
||||
(defn- <encode-main-ipc-result
|
||||
[result]
|
||||
(if (or (p/promise? result)
|
||||
(instance? js/Promise result))
|
||||
(p/let [result' result]
|
||||
(sqlite-util/write-transit-str result'))
|
||||
(sqlite-util/write-transit-str result)))
|
||||
|
||||
(defn set-ipc-handler! [window]
|
||||
(let [main-channel "main"]
|
||||
(.handle ipcMain main-channel
|
||||
(fn [^js event args-js]
|
||||
(let [message* (volatile! nil)]
|
||||
(try
|
||||
(let [message (decode-main-ipc-message args-js)
|
||||
_ (vreset! message* message)
|
||||
result (handle (or (utils/get-win-from-sender event) window) message)]
|
||||
(<encode-main-ipc-result result))
|
||||
(catch :default e
|
||||
(let [command (command-name @message*)]
|
||||
(when-not (contains? #{"mkdir" "stat"} command)
|
||||
(logger/error "IPC error: " {:event event
|
||||
:args args-js}
|
||||
e)))
|
||||
e)))))
|
||||
(->
|
||||
(p/let [message (decode-main-ipc-message args-js)
|
||||
_ (vreset! message* message)
|
||||
result (handle (or (utils/get-win-from-sender event) window) message)]
|
||||
(sqlite-util/write-transit-str result))
|
||||
(p/catch (fn [e]
|
||||
(let [command (command-name @message*)]
|
||||
(when-not (contains? #{"mkdir" "stat"} command)
|
||||
(logger/error "IPC error: " {:event event
|
||||
:args args-js}
|
||||
e)))
|
||||
(throw e)))))))
|
||||
#(.removeHandler ipcMain main-channel)))
|
||||
|
||||
@@ -11,13 +11,12 @@
|
||||
(sqlite-util/read-transit-str result)
|
||||
result))
|
||||
|
||||
;; TODO: handle errors
|
||||
(defn ipc
|
||||
[& args]
|
||||
(when (util/electron?)
|
||||
(p/let [payload (sqlite-util/write-transit-str (vec args))
|
||||
result (js/window.apis.doAction payload)]
|
||||
(maybe-read-transit result))))
|
||||
maybe-result-str (js/window.apis.doAction payload)]
|
||||
(maybe-read-transit maybe-result-str))))
|
||||
|
||||
(defn invoke
|
||||
[channel & args]
|
||||
|
||||
Reference in New Issue
Block a user