mirror of
https://github.com/logseq/logseq.git
synced 2026-05-24 12:44:22 +00:00
improve(sentry): filter setInterval exceptions for sentry
This commit is contained in:
@@ -2,10 +2,11 @@
|
||||
(:require [frontend.version :refer [version]]
|
||||
[frontend.util :as util]
|
||||
[frontend.config :as config]
|
||||
[medley.core :as medley]
|
||||
["@sentry/react" :as Sentry]
|
||||
[frontend.mobile.util :as mobile-util]))
|
||||
|
||||
(goog-define SENTRY-DSN "")
|
||||
(goog-define SENTRY-DSN "https://dc09d27243b9492bbe15e0dd279ad7de@o416451.ingest.sentry.io/5311485")
|
||||
|
||||
(def config
|
||||
{:dsn SENTRY-DSN
|
||||
@@ -33,14 +34,26 @@
|
||||
(when-let [[_ _ query-and-fragment]
|
||||
(re-matches #"file://.*?/(app/electron|static/index)\.html(.*)" (.. event -request -url))]
|
||||
(set! (.. event -request -url) (str "http://localhost/electron.html" query-and-fragment)))
|
||||
(doseq [value (.. event -exception -values)]
|
||||
(doseq [frame (.. value -stacktrace -frames)]
|
||||
(when (not-empty (.. frame -filename))
|
||||
(when-let [[_ filename]
|
||||
(re-matches #"file://.*?/app/(js/.*\.js)" (.. frame -filename))]
|
||||
(set! (.. frame -filename) (str "/static/" filename))
|
||||
;; NOTE: No idea of why there's a 2-line offset.
|
||||
(set! (.. frame -lineno) (- (.. frame -lineno) 2))))))
|
||||
|
||||
(let [*filtered (volatile! [])
|
||||
^js values (.. event -exception -values)]
|
||||
(doseq [[idx value] (medley/indexed values)]
|
||||
(let [mf (some-> value (.. -mechanism -data -function))]
|
||||
(when (contains? #{"setInterval"} mf)
|
||||
(vswap! *filtered conj idx))
|
||||
|
||||
(doseq [frame (.. value -stacktrace -frames)]
|
||||
(when (not-empty (.. frame -filename))
|
||||
(when-let [[_ filename]
|
||||
(re-matches #"file://.*?/app/(js/.*\.js)" (.. frame -filename))]
|
||||
(set! (.. frame -filename) (str "/static/" filename))
|
||||
;; NOTE: No idea of why there's a 2-line offset.
|
||||
(set! (.. frame -lineno) (- (.. frame -lineno) 2)))))))
|
||||
|
||||
;; remove filtered events
|
||||
(when-let [filtered (seq @*filtered)]
|
||||
(doseq [k filtered]
|
||||
(js-delete values k))))
|
||||
(catch :default e
|
||||
(js/console.error e)))
|
||||
event)})
|
||||
|
||||
Reference in New Issue
Block a user