* Auto-heal missing CLI socket listener * Add Sentry socket listener breadcrumbs and failure capture
45 lines
1.4 KiB
Swift
45 lines
1.4 KiB
Swift
import Sentry
|
|
|
|
/// Add a Sentry breadcrumb for user-action context in hang/crash reports.
|
|
func sentryBreadcrumb(_ message: String, category: String = "ui", data: [String: Any]? = nil) {
|
|
guard TelemetrySettings.enabledForCurrentLaunch else { return }
|
|
let crumb = Breadcrumb(level: .info, category: category)
|
|
crumb.message = message
|
|
crumb.data = data
|
|
SentrySDK.addBreadcrumb(crumb)
|
|
}
|
|
|
|
private func sentryCaptureMessage(
|
|
_ message: String,
|
|
level: SentryLevel,
|
|
category: String,
|
|
data: [String: Any]?,
|
|
contextKey: String?
|
|
) {
|
|
guard TelemetrySettings.enabledForCurrentLaunch else { return }
|
|
_ = SentrySDK.capture(message: message) { scope in
|
|
scope.setLevel(level)
|
|
scope.setTag(value: category, key: "category")
|
|
if let data {
|
|
scope.setContext(value: data, key: contextKey ?? category)
|
|
}
|
|
}
|
|
}
|
|
|
|
func sentryCaptureWarning(
|
|
_ message: String,
|
|
category: String = "ui",
|
|
data: [String: Any]? = nil,
|
|
contextKey: String? = nil
|
|
) {
|
|
sentryCaptureMessage(message, level: .warning, category: category, data: data, contextKey: contextKey)
|
|
}
|
|
|
|
func sentryCaptureError(
|
|
_ message: String,
|
|
category: String = "ui",
|
|
data: [String: Any]? = nil,
|
|
contextKey: String? = nil
|
|
) {
|
|
sentryCaptureMessage(message, level: .error, category: category, data: data, contextKey: contextKey)
|
|
}
|