瀏覽代碼

Fix/system chan loop broken (#3254)

improve: caught error to avoid broken for events consumer looper

fix: unwaitted promise
Charlie 3 年之前
父節點
當前提交
eb2cf2d5a7
共有 2 個文件被更改,包括 10 次插入3 次删除
  1. 1 1
      src/main/frontend/fs/node.cljs
  2. 9 2
      src/main/frontend/handler/events.cljs

+ 1 - 1
src/main/frontend/fs/node.cljs

@@ -69,7 +69,7 @@
           (when (util/electron?)
             (debug/set-ack-step! path :saved-successfully)
             (debug/ack-file-write! path))
-          (let [disk-content (encrypt/decrypt disk-content)]
+          (p/let [disk-content (encrypt/decrypt disk-content)]
             (state/pub-event! [:file/not-matched-from-disk path disk-content content])))
 
         :else

+ 9 - 2
src/main/frontend/handler/events.cljs

@@ -173,7 +173,7 @@
   (state/clear-edit!)
   (when-let [repo (state/get-current-repo)]
     (when (and disk-content db-content
-               (not= (string/trim disk-content) (string/trim db-content)))
+               (not= (util/trim-safe disk-content) (util/trim-safe db-content)))
       (state/set-modal! #(diff/local-file repo path disk-content db-content)))))
 
 (defmethod handle :modal/display-file-version [[_ path content hash]]
@@ -226,6 +226,13 @@
   (let [chan (state/get-events-chan)]
     (async/go-loop []
       (let [payload (async/<! chan)]
-        (handle payload))
+        (try
+          (handle payload)
+          (catch js/Error error
+            (let [type :handle-system-events/failed]
+              (js/console.error (str type) (clj->js payload) "\n" error)
+              (state/pub-event! [:instrument {:type    type
+                                              :payload payload
+                                              :error error}])))))
       (recur))
     chan))