Browse Source

feat: enable optional sentry error tracking

Tienson Qin 4 years ago
parent
commit
514fd0ea0b

+ 0 - 1
resources/electron.html

@@ -26,7 +26,6 @@
   <title>Logseq: A local-first knowledge base</title>
   <meta content="logseq" property="og:site_name">
   <meta content="A local-first knowledge base which can be synced using Git." name="description">
-  <script crossorigin="anonymous" defer onload="Sentry.init({dsn: 'https://[email protected]/5311485'});" src="https://asset.logseq.com/static/js/sentry.min.js">
   </script>
 </head>
 <body>

+ 8 - 0
src/main/frontend/components/settings.cljs

@@ -144,6 +144,7 @@
         current-repo (state/get-current-repo)
         enable-journals? (state/enable-journals? current-repo)
         enable-encryption? (state/enable-encryption? current-repo)
+        sentry-disabled? (state/sub :sentry/disabled?)
         enable-git-auto-push? (state/enable-git-auto-push? current-repo)
         enable-block-time? (state/enable-block-time?)
         show-brackets? (state/show-brackets?)
@@ -344,6 +345,13 @@
           [:div.ver version]
           (if (util/electron?) (app-updater))]]
 
+        (toggle "disable_sentry"
+                (t :settings-page/disable-sentry)
+                sentry-disabled?
+                (fn []
+                  (let [value (not sentry-disabled?)]
+                    (state/set-sentry-disabled! value))))
+
         [:div.it.sm:grid.sm:grid-cols-3.sm:gap-4.sm:items-start
          [:label.block.text-sm.font-medium.leading-5.opacity-70
           {:for "developer_mode"}

+ 1 - 0
src/main/frontend/dicts.cljs

@@ -202,6 +202,7 @@
         :content/click-to-edit "Click to edit"
         :settings-page/edit-config-edn "Edit config.edn (for current repo)"
         :settings-page/show-brackets "Show brackets"
+        :settings-page/disable-sentry "Disable Sentry.io (for error tracking)"
         :settings-page/custom-date-format "Preferred journal format"
         :settings-page/preferred-file-format "Preferred file format"
         :settings-page/preferred-workflow "Preferred workflow"

+ 5 - 4
src/main/frontend/handler.cljs

@@ -137,10 +137,11 @@
 
 (defn init-sentry
   []
-  (let [cfg
-        {:dsn "https://[email protected]/5311485"
-         :release (util/format "logseq@%s" version/version)}]
-    (.init js/window.Sentry (clj->js cfg))))
+  (when-not (state/sentry-disabled?)
+    (let [cfg
+          {:dsn "https://[email protected]/5311485"
+           :release (util/format "logseq@%s" version/version)}]
+      (.init js/window.Sentry (clj->js cfg)))))
 
 (defn on-load-events
   []

+ 12 - 0
src/main/frontend/state.cljs

@@ -29,6 +29,7 @@
     :repo/changed-files nil
     :nfs/user-granted? {}
     :nfs/refreshing? nil
+    :sentry/disabled? (storage/get "sentry-disabled")
     ;; TODO: how to detect the network reliably?
     :network/online? true
     :indexeddb/support? true
@@ -1215,6 +1216,17 @@
   [value]
   (set-state! :block/component-editing-mode? value))
 
+(defn sentry-disabled?
+  []
+  (:sentry/disabled? @state))
+
+(defn set-sentry-disabled!
+  [value]
+  (set-state! :sentry/disabled? value)
+  (storage/set "sentry-disabled" value)
+  (when value
+    (.close js/window.Sentry)))
+
 (defn get-editor-args
   []
   (:editor/args @state))