diff --git a/CHANGELOG.md b/CHANGELOG.md index dae12f15062..5864a914e07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Unreleased + +### Fixes + +- Sentry Replay Serialized Breadcrumbs include level name ([#4141](https://github.com/getsentry/sentry-cocoa/pull/4141)) + ## 8.30.0 ### Features diff --git a/Sources/Sentry/SentryLevelHelper.m b/Sources/Sentry/SentryLevelHelper.m index b27ed2365d7..fbabe8f0902 100644 --- a/Sources/Sentry/SentryLevelHelper.m +++ b/Sources/Sentry/SentryLevelHelper.m @@ -1,11 +1,12 @@ #import "SentryLevelHelper.h" #import "SentryBreadcrumb+Private.h" +#import "SentryLevelMapper.h" @implementation SentryLevelHelper -+ (NSUInteger)breadcrumbLevel:(SentryBreadcrumb *)breadcrumb ++ (NSString *_Nonnull)breadcrumbLevel:(SentryBreadcrumb *)breadcrumb { - return breadcrumb.level; + return nameForSentryLevel(breadcrumb.level); } @end diff --git a/Sources/Sentry/SentrySessionReplayIntegration.m b/Sources/Sentry/SentrySessionReplayIntegration.m index ad919f34555..e1ed4e0ca62 100644 --- a/Sources/Sentry/SentrySessionReplayIntegration.m +++ b/Sources/Sentry/SentrySessionReplayIntegration.m @@ -8,6 +8,7 @@ # import "SentryFileManager.h" # import "SentryGlobalEventProcessor.h" # import "SentryHub+Private.h" +# import "SentryLevelMapper.h" # import "SentryNSNotificationCenterWrapper.h" # import "SentryOptions.h" # import "SentryRandom.h" @@ -254,7 +255,7 @@ - (SentryTouchTracker *)getTouchTracker return [[SentryRRWebBreadcrumbEvent alloc] initWithTimestamp:timestamp category:category message:message - level:level + level:nameForSentryLevel(level) data:data]; } diff --git a/Sources/Sentry/include/SentryLevelHelper.h b/Sources/Sentry/include/SentryLevelHelper.h index e599cfe6298..36e8d8ec7cf 100644 --- a/Sources/Sentry/include/SentryLevelHelper.h +++ b/Sources/Sentry/include/SentryLevelHelper.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN */ @interface SentryLevelHelper : NSObject -+ (NSUInteger)breadcrumbLevel:(SentryBreadcrumb *)breadcrumb; ++ (NSString *_Nonnull)breadcrumbLevel:(SentryBreadcrumb *)breadcrumb; @end diff --git a/Sources/Swift/Integrations/SessionReplay/RRWeb/SentryRRWebBreadcrumbEvent.swift b/Sources/Swift/Integrations/SessionReplay/RRWeb/SentryRRWebBreadcrumbEvent.swift index 0b7fa8cf469..40c812415ca 100644 --- a/Sources/Swift/Integrations/SessionReplay/RRWeb/SentryRRWebBreadcrumbEvent.swift +++ b/Sources/Swift/Integrations/SessionReplay/RRWeb/SentryRRWebBreadcrumbEvent.swift @@ -2,9 +2,9 @@ import Foundation class SentryRRWebBreadcrumbEvent: SentryRRWebCustomEvent { - init(timestamp: Date, category: String, message: String? = nil, level: SentryLevel = .none, data: [String: Any]? = nil) { - - var payload: [String: Any] = ["type": "default", "category": category, "level": level.rawValue, "timestamp": timestamp.timeIntervalSince1970 ] + init(timestamp: Date, category: String, message: String? = nil, level: String = "none", data: [String: Any]? = nil) { + + var payload: [String: Any] = ["type": "default", "category": category, "level": level, "timestamp": timestamp.timeIntervalSince1970 ] if let message = message { payload["message"] = message diff --git a/Sources/Swift/Integrations/SessionReplay/SentrySRDefaultBreadcrumbConverter.swift b/Sources/Swift/Integrations/SessionReplay/SentrySRDefaultBreadcrumbConverter.swift index 5a1324f27d1..471007423a7 100644 --- a/Sources/Swift/Integrations/SessionReplay/SentrySRDefaultBreadcrumbConverter.swift +++ b/Sources/Swift/Integrations/SessionReplay/SentrySRDefaultBreadcrumbConverter.swift @@ -83,7 +83,7 @@ class SentrySRDefaultBreadcrumbConverter: NSObject, SentryReplayBreadcrumbConver return SentryRRWebSpanEvent(timestamp: startTimestamp, endTimestamp: timestamp, operation: "resource.http", description: description, data: data) } - private func getLevel(breadcrumb: Breadcrumb) -> SentryLevel { - return SentryLevel(rawValue: SentryLevelHelper.breadcrumbLevel(breadcrumb)) ?? .none + private func getLevel(breadcrumb: Breadcrumb) -> String { + return SentryLevelHelper.breadcrumbLevel(breadcrumb) } } diff --git a/Tests/SentryTests/Integrations/SessionReplay/SentrySRDefaultBreadcrumbConverterTests.swift b/Tests/SentryTests/Integrations/SessionReplay/SentrySRDefaultBreadcrumbConverterTests.swift index 60befc92bb9..bc4789ad201 100644 --- a/Tests/SentryTests/Integrations/SessionReplay/SentrySRDefaultBreadcrumbConverterTests.swift +++ b/Tests/SentryTests/Integrations/SessionReplay/SentrySRDefaultBreadcrumbConverterTests.swift @@ -147,4 +147,16 @@ class SentrySRDefaultBreadcrumbConverterTests: XCTestCase { XCTAssertEqual(payload["message"] as? String, "Custom message") XCTAssertEqual(payloadData["SomeInfo"] as? String, "Info") } + + func testSerializedSRBreadcrumbLevelIsString() throws { + let sut = SentrySRDefaultBreadcrumbConverter() + let breadcrumb = Breadcrumb() + breadcrumb.level = .error + + let result = try XCTUnwrap(sut.convert(from: breadcrumb) as? SentryRRWebBreadcrumbEvent) + let crumbData = try XCTUnwrap(result.data) + let payload = try XCTUnwrap(crumbData["payload"] as? [String: Any]) + + XCTAssertEqual(payload["level"] as! String, "error") + } }