From 686b6f851a8a74dcc48e2a903554a35f1fb8152e Mon Sep 17 00:00:00 2001 From: Itay Brenner Date: Mon, 8 Sep 2025 15:27:39 -0300 Subject: [PATCH] fix: Fixes SentryScreenFrames use after being converted to Swift --- packages/core/ios/RNSentry.mm | 16 +++------ packages/core/ios/SentryScreenFramesWrapper.h | 10 ++++++ packages/core/ios/SentryScreenFramesWrapper.m | 35 +++++++++++++++++++ 3 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 packages/core/ios/SentryScreenFramesWrapper.h create mode 100644 packages/core/ios/SentryScreenFramesWrapper.m diff --git a/packages/core/ios/RNSentry.mm b/packages/core/ios/RNSentry.mm index 8d65efc5b3..eaf743bfff 100644 --- a/packages/core/ios/RNSentry.mm +++ b/packages/core/ios/RNSentry.mm @@ -29,7 +29,6 @@ #import #import #import -#import #import // This guard prevents importing Hermes in JSC apps @@ -57,6 +56,7 @@ #import "RNSentryExperimentalOptions.h" #import "RNSentryVersion.h" #import "SentrySDKWrapper.h" +#import "SentryScreenFramesWrapper.h" static bool hasFetchedAppStart; @@ -580,21 +580,15 @@ - (void)stopObserving #if TARGET_OS_IPHONE || TARGET_OS_MACCATALYST if (PrivateSentrySDKOnly.isFramesTrackingRunning) { - SentryScreenFrames *frames = PrivateSentrySDKOnly.currentScreenFrames; - - if (frames == nil) { + if (![SentryScreenFramesWrapper canTrackFrames]) { resolve(nil); return; } - NSNumber *total = [NSNumber numberWithLong:frames.total]; - NSNumber *frozen = [NSNumber numberWithLong:frames.frozen]; - NSNumber *slow = [NSNumber numberWithLong:frames.slow]; - resolve(@ { - @"totalFrames" : total, - @"frozenFrames" : frozen, - @"slowFrames" : slow, + @"totalFrames" : [SentryScreenFramesWrapper totalFrames], + @"frozenFrames" : [SentryScreenFramesWrapper frozenFrames], + @"slowFrames" : [SentryScreenFramesWrapper slowFrames], }); } else { resolve(nil); diff --git a/packages/core/ios/SentryScreenFramesWrapper.h b/packages/core/ios/SentryScreenFramesWrapper.h new file mode 100644 index 0000000000..b4d4ef07a4 --- /dev/null +++ b/packages/core/ios/SentryScreenFramesWrapper.h @@ -0,0 +1,10 @@ +#import + +@interface SentryScreenFramesWrapper : NSObject + ++ (BOOL)canTrackFrames; ++ (NSNumber *)totalFrames; ++ (NSNumber *)frozenFrames; ++ (NSNumber *)slowFrames; + +@end diff --git a/packages/core/ios/SentryScreenFramesWrapper.m b/packages/core/ios/SentryScreenFramesWrapper.m new file mode 100644 index 0000000000..1238b117c7 --- /dev/null +++ b/packages/core/ios/SentryScreenFramesWrapper.m @@ -0,0 +1,35 @@ +#import "SentryScreenFramesWrapper.h" +@import Sentry; + +@implementation SentryScreenFramesWrapper + ++ (BOOL)canTrackFrames +{ + return PrivateSentrySDKOnly.currentScreenFrames != nil; +} + ++ (NSNumber *)totalFrames +{ + if (![self canTrackFrames]) { + return nil; + } + return [NSNumber numberWithLong:PrivateSentrySDKOnly.currentScreenFrames.total]; +} + ++ (NSNumber *)frozenFrames +{ + if (![self canTrackFrames]) { + return nil; + } + return [NSNumber numberWithLong:PrivateSentrySDKOnly.currentScreenFrames.frozen]; +} + ++ (NSNumber *)slowFrames +{ + if (![self canTrackFrames]) { + return nil; + } + return [NSNumber numberWithLong:PrivateSentrySDKOnly.currentScreenFrames.slow]; +} + +@end