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