improve(sentry): filter setInterval exceptions for sentry

This commit is contained in:
charlie
2023-02-15 00:04:35 +08:00
committed by Tienson Qin
parent d6531780d6
commit 29bc71798b

View File

@@ -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)})