@@ -651,23 +651,21 @@ - (MPIdentityApiRequest *)MPIdentityApiRequestFromDict:(NSDictionary *)dict {
651651 }
652652 MPIdentityApiRequest *request = [MPIdentityApiRequest requestWithEmptyUser ];
653653
654- if (dict[@" userIdentities" ] && dict[@" userIdentities" ] != [NSNull null ]) {
655- NSDictionary *identities = dict[@" userIdentities" ];
656- for (NSString *key in identities) {
654+ for (NSString *key in dict) {
655+ id value = dict[key];
656+ if (value == [NSNull null ]) {
657+ continue ;
658+ }
659+
660+ if ([key isEqualToString: @" email" ]) {
661+ request.email = (NSString *)value;
662+ } else if ([key isEqualToString: @" customerId" ]) {
663+ request.customerId = (NSString *)value;
664+ } else if ([RNMParticle isNumericIdentityKey: key]) {
657665 MPIdentity identityType = (MPIdentity)[key integerValue ];
658- NSString *value = identities[key];
659- [request setIdentity: value identityType: identityType];
666+ [request setIdentity: (NSString *)value identityType: identityType];
660667 }
661668 }
662-
663- if (dict[@" customerId" ] && dict[@" customerId" ] != [NSNull null ]) {
664- request.customerId = dict[@" customerId" ];
665- }
666-
667- if (dict[@" email" ] && dict[@" email" ] != [NSNull null ]) {
668- request.email = dict[@" email" ];
669- }
670-
671669 return request;
672670}
673671
@@ -727,6 +725,17 @@ - (void)performIdentityRequest:(NSDictionary *)identityRequest callback:(RCTResp
727725}
728726#endif
729727
728+ + (BOOL )isNumericIdentityKey : (NSString *)key {
729+ static NSCharacterSet *numericSet = nil ;
730+ static dispatch_once_t onceToken;
731+ dispatch_once (&onceToken, ^{
732+ numericSet = [NSCharacterSet decimalDigitCharacterSet ];
733+ });
734+
735+ NSCharacterSet *keyCharacterSet = [NSCharacterSet characterSetWithCharactersInString: key];
736+ return [numericSet isSupersetOfSet: keyCharacterSet];
737+ }
738+
730739@end
731740
732741// RCTConvert category methods for mParticle types
@@ -1087,27 +1096,27 @@ + (MPCommerceEventAction)MPCommerceEventAction:(NSNumber *)json {
10871096 return action;
10881097}
10891098
1099+
10901100+ (MPIdentityApiRequest *)MPIdentityApiRequest : (id )json {
10911101 NSDictionary *dict = json;
10921102 MPIdentityApiRequest *request = [MPIdentityApiRequest requestWithEmptyUser ];
10931103
1094- if (dict[@" userIdentities" ] && dict[@" userIdentities" ] != [NSNull null ]) {
1095- NSDictionary *identities = dict[@" userIdentities" ];
1096- for (NSString *key in identities) {
1104+ for (NSString *key in dict) {
1105+ id value = dict[key];
1106+ if (value == [NSNull null ]) {
1107+ continue ;
1108+ }
1109+
1110+ if ([key isEqualToString: @" email" ]) {
1111+ request.email = (NSString *)value;
1112+ } else if ([key isEqualToString: @" customerId" ]) {
1113+ request.customerId = (NSString *)value;
1114+ } else if ([RNMParticle isNumericIdentityKey: key]) {
10971115 MPIdentity identityType = (MPIdentity)[key integerValue ];
1098- NSString *value = identities[key];
1099- [request setIdentity: value identityType: identityType];
1116+ [request setIdentity: (NSString *)value identityType: identityType];
11001117 }
11011118 }
11021119
1103- if (dict[@" customerId" ] && dict[@" customerId" ] != [NSNull null ]) {
1104- request.customerId = dict[@" customerId" ];
1105- }
1106-
1107- if (dict[@" email" ] && dict[@" email" ] != [NSNull null ]) {
1108- request.email = dict[@" email" ];
1109- }
1110-
11111120 return request;
11121121}
11131122
0 commit comments