Skip to content

Commit 651fa05

Browse files
authored
Merge pull request #447 from Iterable/jay/MOB-4439-update-email
[MOB-4439] add update email with auth token
2 parents 6605f8f + 1fba386 commit 651fa05

File tree

2 files changed

+46
-26
lines changed

2 files changed

+46
-26
lines changed

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

+13-3
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,15 @@ public void trackPurchase(double total, @NonNull List<CommerceItem> items, @Null
560560
* @param newEmail New email
561561
*/
562562
public void updateEmail(final @NonNull String newEmail) {
563-
updateEmail(newEmail, null, null);
563+
updateEmail(newEmail, null, null, null);
564+
}
565+
566+
public void updateEmail(final @NonNull String newEmail, final @NonNull String authToken) {
567+
updateEmail(newEmail, authToken, null, null);
568+
}
569+
570+
public void updateEmail(final @NonNull String newEmail, final @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
571+
updateEmail(newEmail, null, successHandler, failureHandler);
564572
}
565573

566574
/**
@@ -570,14 +578,15 @@ public void updateEmail(final @NonNull String newEmail) {
570578
* @param successHandler Success handler. Called when the server returns a success code.
571579
* @param failureHandler Failure handler. Called when the server call failed.
572580
*/
573-
public void updateEmail(final @NonNull String newEmail, final @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
581+
public void updateEmail(final @NonNull String newEmail, final @Nullable String authToken, final @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
574582
if (!checkSDKInitialization()) {
575583
IterableLogger.e(TAG, "The Iterable SDK must be initialized with email or userId before " +
576584
"calling updateEmail");
577585
if (failureHandler != null) {
578586
failureHandler.onFailure("The Iterable SDK must be initialized with email or " +
579587
"userId before calling updateEmail", null);
580588
}
589+
581590
return;
582591
}
583592

@@ -586,13 +595,14 @@ public void updateEmail(final @NonNull String newEmail, final @Nullable Iterable
586595
public void onSuccess(@NonNull JSONObject data) {
587596
if (_email != null) {
588597
_email = newEmail;
598+
_authToken = authToken;
589599
}
590600

591601
storeAuthData();
592602
getAuthManager().requestNewAuthToken(false);
603+
593604
if (successHandler != null) {
594605
successHandler.onSuccess(data);
595-
596606
}
597607
}
598608
}, failureHandler);

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

+33-23
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.util.Base64;
44

5+
import androidx.annotation.Nullable;
56
import androidx.annotation.VisibleForTesting;
67

78
import com.iterable.iterableapi.util.Future;
@@ -34,35 +35,44 @@ public class IterableAuthManager {
3435
}
3536

3637
public synchronized void requestNewAuthToken(boolean hasFailedPriorAuth) {
38+
requestNewAuthToken(hasFailedPriorAuth, null);
39+
}
40+
41+
public synchronized void requestNewAuthToken(boolean hasFailedPriorAuth, @Nullable final IterableHelper.SuccessAuthHandler onSuccess) {
3742
if (authHandler != null) {
3843
if (!pendingAuth) {
3944
if (!(this.hasFailedPriorAuth && hasFailedPriorAuth)) {
4045
this.hasFailedPriorAuth = hasFailedPriorAuth;
4146
pendingAuth = true;
4247
Future.runAsync(new Callable<String>() {
43-
@Override
44-
public String call() throws Exception {
45-
return authHandler.onAuthTokenRequested();
46-
}
47-
}).onSuccess(new Future.SuccessCallback<String>() {
48-
@Override
49-
public void onSuccess(String authToken) {
50-
if (authToken != null) {
51-
queueExpirationRefresh(authToken);
52-
}
53-
IterableApi.getInstance().setAuthToken(authToken);
54-
pendingAuth = false;
55-
reSyncAuth();
56-
}
57-
})
58-
.onFailure(new Future.FailureCallback() {
59-
@Override
60-
public void onFailure(Throwable throwable) {
61-
IterableLogger.e(TAG, "Error while requesting Auth Token", throwable);
62-
pendingAuth = false;
63-
reSyncAuth();
64-
}
65-
});
48+
@Override
49+
public String call() throws Exception {
50+
return authHandler.onAuthTokenRequested();
51+
}
52+
}).onSuccess(new Future.SuccessCallback<String>() {
53+
@Override
54+
public void onSuccess(String authToken) {
55+
if (authToken != null) {
56+
queueExpirationRefresh(authToken);
57+
}
58+
59+
IterableApi.getInstance().setAuthToken(authToken);
60+
pendingAuth = false;
61+
reSyncAuth();
62+
63+
if (onSuccess != null) {
64+
onSuccess(authToken);
65+
}
66+
}
67+
})
68+
.onFailure(new Future.FailureCallback() {
69+
@Override
70+
public void onFailure(Throwable throwable) {
71+
IterableLogger.e(TAG, "Error while requesting Auth Token", throwable);
72+
pendingAuth = false;
73+
reSyncAuth();
74+
}
75+
});
6676
}
6777
} else if (!hasFailedPriorAuth) {
6878
//setFlag to resync auth after current auth returns

0 commit comments

Comments
 (0)