Skip to content

Commit 1102f24

Browse files
Comments and changes to fix the double callback problem
1 parent ae4f949 commit 1102f24

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

iterableapi/src/main/java/com/iterable/iterableapi/IterableApi.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -405,15 +405,15 @@ private void onLogin(
405405
boolean isUnknown,
406406
@Nullable IterableHelper.FailureHandler failureHandler
407407
) {
408-
if (!isInitialized()) {
408+
if (!isInitialized()) { //todo: If we get here and it is not initialized, isn't it possible to have leftover data that was already set by setEmail?
409409
setAuthToken(null);
410410
return;
411411
}
412412

413413
getAuthManager().pauseAuthRetries(false);
414414
if (authToken != null) {
415415
setAuthToken(authToken);
416-
attemptMergeAndEventReplay(userIdOrEmail, isEmail, merge, replay, isUnknown, failureHandler);
416+
attemptMergeAndEventReplay(userIdOrEmail, isEmail, merge, replay, isUnknown, failureHandler); //todo: Why do we need to do this again if we did this on setEmail?
417417
} else {
418418
getAuthManager().requestNewAuthToken(false, data -> attemptMergeAndEventReplay(userIdOrEmail, isEmail, merge, replay, isUnknown, failureHandler));
419419
}
@@ -449,8 +449,9 @@ private void completeUserLogin(@Nullable String email, @Nullable String userId,
449449
}
450450

451451
if (config.autoPushRegistration) {
452-
registerForPush();
453-
} else if (_setUserSuccessCallbackHandler != null) {
452+
registerForPush(); //TODO: FIX, THE LOGIN NEVER CALLS THE CALLBACK IF THE AUTOPUSH REGISTRATION IS TRUE
453+
}
454+
if (_setUserSuccessCallbackHandler != null) { // todo: why is there an else if it can be both true
454455
_setUserSuccessCallbackHandler.onSuccess(new JSONObject()); // passing blank json object here as onSuccess is @Nonnull
455456
}
456457

@@ -738,7 +739,7 @@ protected void registerDeviceToken(@Nullable String email, @Nullable String user
738739
private IterableHelper.SuccessHandler getSuccessHandler() {
739740
IterableHelper.SuccessHandler wrappedSuccessHandler = null;
740741
if (_setUserSuccessCallbackHandler != null || (config.enableUnknownUserActivation && getVisitorUsageTracked() && config.identityResolution.getReplayOnVisitorToKnown())) {
741-
final IterableHelper.SuccessHandler originalSuccessHandler = _setUserSuccessCallbackHandler;
742+
final IterableHelper.SuccessHandler originalSuccessHandler = null; //todo: MAYBE THIS HAS TO DO WITH THE ERROR, IF THE PERSON IS SETTING EMAIL AND REGISTERING DEVICE TOKEN THEY WILL GET THE WRONG CALLBACK CALLED
742743
wrappedSuccessHandler = data -> {
743744
trackConsentOnDeviceRegistration();
744745

@@ -1023,6 +1024,9 @@ public void setEmail(@Nullable String email, @Nullable String authToken, @Nullab
10231024

10241025
if (_email != null && _email.equals(email)) {
10251026
checkAndUpdateAuthToken(authToken);
1027+
if (successHandler != null) {
1028+
successHandler.onSuccess(new JSONObject());
1029+
}
10261030
return;
10271031
}
10281032

@@ -1133,7 +1137,7 @@ private boolean isReplay(@Nullable IterableIdentityResolution iterableIdentityRe
11331137
private void attemptMergeAndEventReplay(@Nullable String emailOrUserId, boolean isEmail, boolean merge, boolean replay, boolean isUnknown, IterableHelper.FailureHandler failureHandler) {
11341138
if (config.enableUnknownUserActivation && getVisitorUsageTracked()) {
11351139

1136-
if (emailOrUserId != null && !emailOrUserId.equals(_userIdUnknown)) {
1140+
if (emailOrUserId != null && !emailOrUserId.equals(_userIdUnknown)) { //todo: when would the userIdUnknown be the same?
11371141
attemptAndProcessMerge(emailOrUserId, isEmail, merge, failureHandler, _userIdUnknown);
11381142
}
11391143

iterableapi/src/main/java/com/iterable/iterableapi/UnknownUserMerge.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ public class UnknownUserMerge {
55

66
void tryMergeUser(IterableApiClient apiClient, String unknownUserId, String destinationUser, boolean isEmail, boolean merge, MergeResultCallback callback) {
77
IterableLogger.v(TAG, "tryMergeUser");
8-
if (unknownUserId != null && merge) {
8+
if (unknownUserId != null && merge) { //todo: why can we try to merge and have merge false?
99
String destinationEmail = isEmail ? destinationUser : null;
1010
String destinationUserId = isEmail ? null : destinationUser;
1111
apiClient.mergeUser(null, unknownUserId, destinationEmail, destinationUserId, data -> {

0 commit comments

Comments
 (0)