Skip to content

Commit 3384bd7

Browse files
authored
Merge pull request #917 from OneSignal/fix/external_user_id_in_set_email
Removing duplicate checks for set_external_user_id
2 parents ceda099 + 10a3d52 commit 3384bd7

File tree

3 files changed

+11
-38
lines changed

3 files changed

+11
-38
lines changed

iOS_SDK/OneSignalSDK/Source/OSStateSynchronizer.m

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -200,16 +200,6 @@ - (void)setExternalUserId:(NSString *)externalId withExternalIdAuthHashToken:(NS
200200
withAppId:appId];
201201
}
202202

203-
// Make sure this is not a duplicate request, if the email and push channels are aligned correctly with the same external id
204-
if (![OneSignal shouldUpdateExternalUserId:externalId withRequests:requests]) {
205-
// Use callback to return success for both cases here, since push and
206-
// email (if email is not setup, email is not included) have been set already
207-
let results = [OneSignal getDuplicateExternalUserIdResponse:externalId withRequests:requests];
208-
if (successBlock)
209-
successBlock(results);
210-
return;
211-
}
212-
213203
[OneSignalClient.sharedClient executeSimultaneousRequests:requests withCompletion:^(NSDictionary<NSString *,NSDictionary *> *results) {
214204
if (results[OS_PUSH] && results[OS_PUSH][OS_SUCCESS] && [results[OS_PUSH][OS_SUCCESS] boolValue]) {
215205
[OneSignalUserDefaults.initStandard saveStringForKey:OSUD_EXTERNAL_USER_ID withValue:externalId];

iOS_SDK/OneSignalSDK/Source/OneSignal.m

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2773,24 +2773,6 @@ + (BOOL)shouldUpdateExternalUserId:(NSString*)externalId withRequests:(NSDiction
27732773
return updateExternalUserId || updateEmailExternalUserId;
27742774
}
27752775

2776-
+ (NSMutableDictionary*)getDuplicateExternalUserIdResponse:(NSString*)externalId withRequests:(NSDictionary*)requests {
2777-
NSMutableDictionary *results = [NSMutableDictionary new];
2778-
[OneSignal onesignal_Log:ONE_S_LL_WARN message:[NSString stringWithFormat:@"Attempted to set external user id, but %@ is already set", externalId]];
2779-
2780-
results[@"push"] = @{
2781-
@"success" : @(true)
2782-
};
2783-
2784-
// Make sure to only add email if email was attempted
2785-
if (requests[@"email"]) {
2786-
results[@"email"] = @{
2787-
@"success" : @(true)
2788-
};
2789-
}
2790-
2791-
return results;
2792-
}
2793-
27942776
/*
27952777
Start of outcome module
27962778
*/

iOS_SDK/OneSignalSDK/UnitTests/UnitTests.m

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2323,9 +2323,9 @@ - (void)testSetExternalUserIdWithRegistration {
23232323
[OneSignal setExternalUserId:TEST_EXTERNAL_USER_ID];
23242324

23252325
[UnitTestCommonMethods initOneSignal_andThreadWait];
2326-
2327-
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequest[@"external_user_id"], TEST_EXTERNAL_USER_ID);
2328-
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequestType, NSStringFromClass([OSRequestRegisterUser class]));
2326+
let registerUserRequest = OneSignalClientOverrider.executedRequests[1];
2327+
XCTAssertEqualObjects(registerUserRequest.parameters[@"external_user_id"], TEST_EXTERNAL_USER_ID);
2328+
XCTAssertEqualObjects(NSStringFromClass([registerUserRequest class]), NSStringFromClass([OSRequestRegisterUser class]));
23292329
}
23302330

23312331
- (void)testSetExternalUserIdAfterRegistration {
@@ -2354,33 +2354,33 @@ - (void)testRemoveExternalUserId {
23542354
}
23552355

23562356
// Tests to make sure that the SDK will not send an external ID if it already successfully sent the same ID
2357-
- (void)testDoesntSendExistingExternalUserIdAfterRegistration {
2357+
- (void)testDoesSendExistingExternalUserIdAfterRegistration {
23582358
[OneSignal setExternalUserId:TEST_EXTERNAL_USER_ID];
23592359

23602360
[UnitTestCommonMethods initOneSignal_andThreadWait];
23612361

2362-
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequestType, NSStringFromClass([OSRequestRegisterUser class]));
2362+
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequestType, NSStringFromClass([OSRequestUpdateExternalUserId class]));
23632363

23642364
[OneSignal setExternalUserId:TEST_EXTERNAL_USER_ID];
23652365

23662366
// the PUT request to set external ID should not happen since the external ID
23672367
// is the same as it was during registration
2368-
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequestType, NSStringFromClass([OSRequestRegisterUser class]));
2368+
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequestType, NSStringFromClass([OSRequestUpdateExternalUserId class]));
23692369
}
23702370

2371-
- (void)testDoesntSendExistingExternalUserIdBeforeRegistration {
2371+
- (void)testDoesSendExistingExternalUserIdBeforeRegistration {
23722372
//mimics a previous session where the external user ID was set
23732373
[OneSignalUserDefaults.initStandard saveStringForKey:OSUD_EXTERNAL_USER_ID withValue:TEST_EXTERNAL_USER_ID];
23742374

23752375
[OneSignal setExternalUserId:TEST_EXTERNAL_USER_ID];
23762376

23772377
[UnitTestCommonMethods initOneSignal_andThreadWait];
23782378

2379-
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequestType, NSStringFromClass([OSRequestRegisterUser class]));
2379+
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequestType, NSStringFromClass([OSRequestUpdateExternalUserId class]));
23802380

23812381
// the registration request should not have included external user ID
23822382
// since it had been set already to the same value in a previous session
2383-
XCTAssertNil(OneSignalClientOverrider.lastHTTPRequest[@"external_user_id"]);
2383+
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequest[@"external_user_id"], TEST_EXTERNAL_USER_ID);
23842384
}
23852385

23862386
- (void)testSetExternalUserId_forPush_withCompletion {
@@ -2441,13 +2441,14 @@ - (void)testSetExternalUserId_WithAuthToken_forPush_withCompletion_beforRegister
24412441

24422442
// 2. Init OneSignal
24432443
[UnitTestCommonMethods initOneSignal_andThreadWait];
2444+
[UnitTestCommonMethods runBackgroundThreads];
24442445

24452446
// 3. Make sure only push external id was attempted to be set since no email was set yet
24462447
XCTAssertEqual(self.CALLBACK_EXTERNAL_USER_ID, TEST_EXTERNAL_USER_ID);
24472448
XCTAssertNil(self.CALLBACK_EMAIL_EXTERNAL_USER_ID);
24482449

24492450
// 3. Make sure last request was external id and had the correct external id being used in the request payload
2450-
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequestType, NSStringFromClass([OSRequestRegisterUser class]));
2451+
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequestType, NSStringFromClass([OSRequestUpdateExternalUserId class]));
24512452
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequest[@"external_user_id"], TEST_EXTERNAL_USER_ID);
24522453
XCTAssertEqualObjects(OneSignalClientOverrider.lastHTTPRequest[@"external_user_id_auth_hash"], TEST_EXTERNAL_USER_ID_HASH_TOKEN);
24532454
}

0 commit comments

Comments
 (0)