Skip to content

Commit a706821

Browse files
Merge 846f4b2 into 13b68d9
2 parents 13b68d9 + 846f4b2 commit a706821

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed

packages/core/ios/RNSentry.mm

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -641,24 +641,40 @@ - (NSDictionary *)fetchNativeStackFramesBy:(NSArray<NSNumber *> *)instructionsAd
641641
RCT_EXPORT_METHOD(setUser : (NSDictionary *)userKeys otherUserKeys : (NSDictionary *)userDataKeys)
642642
{
643643
[SentrySDK configureScope:^(SentryScope *_Nonnull scope) {
644-
if (nil == userKeys && nil == userDataKeys) {
644+
// we can safelly ignore userDataKeys since if original JS user was null userKeys will be null
645+
if ([[NSNull null] isEqual:userKeys] || nil == userKeys) {
645646
[scope setUser:nil];
646-
} else {
647+
} else if ([userKeys isKindOfClass:NSDictionary.class]) {
647648
SentryUser *userInstance = [[SentryUser alloc] init];
648649

649-
if (nil != userKeys) {
650-
[userInstance setUserId:userKeys[@"id"]];
651-
[userInstance setIpAddress:userKeys[@"ip_address"]];
652-
[userInstance setEmail:userKeys[@"email"]];
653-
[userInstance setUsername:userKeys[@"username"]];
654-
[userInstance setSegment:userKeys[@"segment"]];
650+
id userId = [userKeys valueForKey:@"id"];
651+
if ([userId isKindOfClass:NSString.class]) {
652+
[userInstance setUserId:userId];
653+
}
654+
id ipAddress = [userKeys valueForKey:@"ip_address"];
655+
if ([ipAddress isKindOfClass:NSString.class]) {
656+
[userInstance setIpAddress:ipAddress];
657+
}
658+
id email = [userKeys valueForKey:@"email"];
659+
if ([email isKindOfClass:NSString.class]) {
660+
[userInstance setEmail:email];
661+
}
662+
id username = [userKeys valueForKey:@"username"];
663+
if ([username isKindOfClass:NSString.class]) {
664+
[userInstance setUsername:username];
665+
}
666+
id segment = [userKeys valueForKey:@"segment"];
667+
if ([segment isKindOfClass:NSString.class]) {
668+
[userInstance setSegment:segment];
655669
}
656670

657-
if (nil != userDataKeys) {
671+
if ([userDataKeys isKindOfClass:NSDictionary.class]) {
658672
[userInstance setData:userDataKeys];
659673
}
660674

661675
[scope setUser:userInstance];
676+
} else {
677+
NSLog(@"[RNSentry] Method setUser received unexpected type of userKeys.");
662678
}
663679
}];
664680
}

0 commit comments

Comments
 (0)