From 36f4d74f7fffbf7b9c9e67b85c8499f6fc40925b Mon Sep 17 00:00:00 2001 From: Krystof Woldrich Date: Fri, 8 Nov 2024 22:43:25 +0100 Subject: [PATCH 1/2] fix(replay): MaskAll* set to false should unmask all --- .../RNSentryReplayOptionsTests.swift | 34 +++++++++++++++++-- packages/core/ios/RNSentryReplay.m | 4 +-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift b/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift index 18a329ebec..de21603af8 100644 --- a/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift +++ b/packages/core/RNSentryCocoaTester/RNSentryCocoaTesterTests/RNSentryReplayOptionsTests.swift @@ -67,8 +67,8 @@ final class RNSentryReplayOptions: XCTestCase { XCTAssertEqual(replayOptions.count, 5) XCTAssertNotNil(replayOptions["sessionSampleRate"]) XCTAssertNotNil(replayOptions["errorSampleRate"]) - XCTAssertNotNil(replayOptions["redactAllImages"]) - XCTAssertNotNil(replayOptions["redactAllText"]) + XCTAssertNotNil(replayOptions["maskAllImages"]) + XCTAssertNotNil(replayOptions["maskAllText"]) XCTAssertNotNil(replayOptions["maskedViewClasses"]) } @@ -133,6 +133,21 @@ final class RNSentryReplayOptions: XCTestCase { XCTAssertEqual(ObjectIdentifier(actualOptions.experimental.sessionReplay.maskedViewClasses[0]), ObjectIdentifier(NSClassFromString("RCTImageView")!)) } + func testMaskAllImagesFalse() { + let optionsDict = ([ + "dsn": "https://abc@def.ingest.sentry.io/1234567", + "_experiments": [ "replaysOnErrorSampleRate": 0.75 ], + "mobileReplayOptions": [ "maskAllImages": false ] + ] as NSDictionary).mutableCopy() as! NSMutableDictionary + + RNSentryReplay.updateOptions(optionsDict) + + let actualOptions = try! Options(dict: optionsDict as! [String: Any]) + + XCTAssertEqual(actualOptions.experimental.sessionReplay.maskAllImages, false) + XCTAssertEqual(actualOptions.experimental.sessionReplay.maskedViewClasses.count, 0) + } + func testMaskAllText() { let optionsDict = ([ "dsn": "https://abc@def.ingest.sentry.io/1234567", @@ -152,4 +167,19 @@ final class RNSentryReplayOptions: XCTestCase { XCTAssertEqual(ObjectIdentifier(actualOptions.experimental.sessionReplay.maskedViewClasses[1]), ObjectIdentifier(NSClassFromString("RCTParagraphComponentView")!)) } + func testMaskAllTextFalse() { + let optionsDict = ([ + "dsn": "https://abc@def.ingest.sentry.io/1234567", + "_experiments": [ "replaysOnErrorSampleRate": 0.75 ], + "mobileReplayOptions": [ "maskAllText": false ] + ] as NSDictionary).mutableCopy() as! NSMutableDictionary + + RNSentryReplay.updateOptions(optionsDict) + + let actualOptions = try! Options(dict: optionsDict as! [String: Any]) + + XCTAssertEqual(actualOptions.experimental.sessionReplay.maskAllText, false) + XCTAssertEqual(actualOptions.experimental.sessionReplay.maskedViewClasses.count, 0) + } + } diff --git a/packages/core/ios/RNSentryReplay.m b/packages/core/ios/RNSentryReplay.m index ca63fb9dde..9cb17d612a 100644 --- a/packages/core/ios/RNSentryReplay.m +++ b/packages/core/ios/RNSentryReplay.m @@ -28,8 +28,8 @@ + (void)updateOptions:(NSMutableDictionary *)options @"sessionReplay" : @ { @"sessionSampleRate" : experiments[@"replaysSessionSampleRate"] ?: [NSNull null], @"errorSampleRate" : experiments[@"replaysOnErrorSampleRate"] ?: [NSNull null], - @"redactAllImages" : replayOptions[@"maskAllImages"] ?: [NSNull null], - @"redactAllText" : replayOptions[@"maskAllText"] ?: [NSNull null], + @"maskAllImages" : replayOptions[@"maskAllImages"] ?: [NSNull null], + @"maskAllText" : replayOptions[@"maskAllText"] ?: [NSNull null], @"maskedViewClasses" : [RNSentryReplay getReplayRNRedactClasses:replayOptions], } } From 4a5112224a62ce540f09ee687fb1d112a88099d9 Mon Sep 17 00:00:00 2001 From: Krystof Woldrich Date: Fri, 8 Nov 2024 22:46:56 +0100 Subject: [PATCH 2/2] add changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c58c4d372..745d90ce34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ - Enhanced accuracy of time-to-display spans. ([#4189](https://github.com/getsentry/sentry-react-native/pull/4189)) - Fix Replay redacting of RN Classes on iOS ([#4243](https://github.com/getsentry/sentry-react-native/pull/4243)) - Speed up getBinaryImages for finishing transactions and capturing events ([#4194](https://github.com/getsentry/sentry-react-native/pull/4194)) +- Replay `maskAll*` set to `false` on iOS kept all masked ([#4257](https://github.com/getsentry/sentry-react-native/pull/4257)) ### Dependencies