Skip to content

Commit e1ee03d

Browse files
Ayyanchiradevcsomnicg“Akshay
authored andcommitted
[MOB-6055] - [OMNI CG] - Add callbacks to setting email/user id (#570)
* Change for supporting callback feature on setEmail/setUserId * fixed failuire callback * add tests for setEmail and setUserId callbacks * changed to iterablehelper callbacks * update test with iterablehelper callbacks * Update IterableApi.java * Retaining the previous method signatures --------- Co-authored-by: Hardik Mashru <[email protected]> Co-authored-by: “Akshay <“[email protected]”>
1 parent eb8348c commit e1ee03d

File tree

3 files changed

+68
-5
lines changed

3 files changed

+68
-5
lines changed

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

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public class IterableApi {
4040
private IterableNotificationData _notificationData;
4141
private String _deviceId;
4242
private boolean _firstForegroundHandled;
43+
private IterableHelper.SuccessHandler _setUserSuccessCallbackHandler;
44+
private IterableHelper.FailureHandler _setUserFailureCallbackHandler;
4345

4446
IterableApiClient apiClient = new IterableApiClient(new IterableApiAuthProvider());
4547
private @Nullable IterableInAppManager inAppManager;
@@ -317,6 +319,8 @@ private void completeUserLogin() {
317319

318320
if (config.autoPushRegistration) {
319321
registerForPush();
322+
} else if (_setUserSuccessCallbackHandler != null) {
323+
_setUserSuccessCallbackHandler.onSuccess(new JSONObject()); // passing blank json object here as onSuccess is @Nonnull
320324
}
321325

322326
getInAppManager().syncInApp();
@@ -510,7 +514,7 @@ protected void registerDeviceToken(@Nullable String email, @Nullable String user
510514
IterableLogger.e(TAG, "registerDeviceToken: applicationName is null, check that pushIntegrationName is set in IterableConfig");
511515
}
512516

513-
apiClient.registerDeviceToken(email, userId, authToken, applicationName, deviceToken, dataFields, deviceAttributes);
517+
apiClient.registerDeviceToken(email, userId, authToken, applicationName, deviceToken, dataFields, deviceAttributes, _setUserSuccessCallbackHandler, _setUserFailureCallbackHandler);
514518
}
515519
//endregion
516520

@@ -633,10 +637,18 @@ public IterableAttributionInfo getAttributionInfo() {
633637
}
634638

635639
public void setEmail(@Nullable String email) {
636-
setEmail(email, null);
640+
setEmail(email, null, null, null);
641+
}
642+
643+
public void setEmail(@Nullable String email, @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
644+
setEmail(email, null, successHandler, failureHandler);
637645
}
638646

639647
public void setEmail(@Nullable String email, @Nullable String authToken) {
648+
setEmail(email, authToken, null, null);
649+
}
650+
651+
public void setEmail(@Nullable String email, @Nullable String authToken, @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
640652
//Only if passed in same non-null email
641653
if (_email != null && _email.equals(email)) {
642654
checkAndUpdateAuthToken(authToken);
@@ -651,16 +663,26 @@ public void setEmail(@Nullable String email, @Nullable String authToken) {
651663

652664
_email = email;
653665
_userId = null;
666+
_setUserSuccessCallbackHandler = successHandler;
667+
_setUserFailureCallbackHandler = failureHandler;
654668
storeAuthData();
655669

656670
onLogin(authToken);
657671
}
658672

659673
public void setUserId(@Nullable String userId) {
660-
setUserId(userId, null);
674+
setUserId(userId, null, null, null);
675+
}
676+
677+
public void setUserId(@Nullable String userId, @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
678+
setUserId(userId, null, successHandler, failureHandler);
661679
}
662680

663681
public void setUserId(@Nullable String userId, @Nullable String authToken) {
682+
setUserId(userId, authToken, null, null);
683+
}
684+
685+
public void setUserId(@Nullable String userId, @Nullable String authToken, @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
664686
//If same non null userId is passed
665687
if (_userId != null && _userId.equals(userId)) {
666688
checkAndUpdateAuthToken(authToken);
@@ -675,6 +697,8 @@ public void setUserId(@Nullable String userId, @Nullable String authToken) {
675697

676698
_email = null;
677699
_userId = userId;
700+
_setUserSuccessCallbackHandler = successHandler;
701+
_setUserFailureCallbackHandler = failureHandler;
678702
storeAuthData();
679703

680704
onLogin(authToken);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ protected void disableToken(@Nullable String email, @Nullable String userId, @Nu
513513
}
514514
}
515515

516-
protected void registerDeviceToken(@Nullable String email, @Nullable String userId, @Nullable String authToken, @NonNull String applicationName, @NonNull String deviceToken, @Nullable JSONObject dataFields, HashMap<String, String> deviceAttributes) {
516+
protected void registerDeviceToken(@Nullable String email, @Nullable String userId, @Nullable String authToken, @NonNull String applicationName, @NonNull String deviceToken, @Nullable JSONObject dataFields, HashMap<String, String> deviceAttributes, @Nullable final IterableHelper.SuccessHandler successHandler, @Nullable final IterableHelper.FailureHandler failureHandler) {
517517
Context context = authProvider.getContext();
518518
JSONObject requestJSON = new JSONObject();
519519
try {
@@ -544,7 +544,7 @@ protected void registerDeviceToken(@Nullable String email, @Nullable String user
544544
requestJSON.put(IterableConstants.KEY_PREFER_USER_ID, true);
545545
}
546546

547-
sendPostRequest(IterableConstants.ENDPOINT_REGISTER_DEVICE_TOKEN, requestJSON, authToken);
547+
sendPostRequest(IterableConstants.ENDPOINT_REGISTER_DEVICE_TOKEN, requestJSON, authToken, successHandler, failureHandler);
548548
} catch (JSONException e) {
549549
IterableLogger.e(TAG, "registerDeviceToken: exception", e);
550550
}

iterableapi/src/test/java/com/iterable/iterableapi/IterableApiTest.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import android.app.Activity;
55
import android.net.Uri;
66

7+
import androidx.annotation.NonNull;
8+
import androidx.annotation.Nullable;
9+
710
import org.json.JSONArray;
811
import org.json.JSONException;
912
import org.json.JSONObject;
@@ -164,6 +167,42 @@ public void testUpdateEmailPersistence() throws Exception {
164167
assertEquals("[email protected]", IterableApi.getInstance().getEmail());
165168
}
166169

170+
@Test
171+
public void testSetEmailWithCallback() {
172+
IterableApi.initialize(getContext(), "apiKey");
173+
174+
String email = "[email protected]";
175+
IterableApi.getInstance().setEmail(email, null, new IterableHelper.SuccessHandler() {
176+
@Override
177+
public void onSuccess(@NonNull JSONObject data) {
178+
assertTrue(true); // callback should be called with success
179+
}
180+
}, new IterableHelper.FailureHandler() {
181+
@Override
182+
public void onFailure(@NonNull String reason, @Nullable JSONObject data) {
183+
assertTrue(false); // callback should be called with failure
184+
}
185+
});
186+
}
187+
188+
@Test
189+
public void testSetUserIdWithCallback() {
190+
IterableApi.initialize(getContext(), "apiKey");
191+
192+
String userId = "test_user_id";
193+
IterableApi.getInstance().setUserId(userId, null, new IterableHelper.SuccessHandler() {
194+
@Override
195+
public void onSuccess(@NonNull JSONObject data) {
196+
assertTrue(true); // callback should be called with success
197+
}
198+
}, new IterableHelper.FailureHandler() {
199+
@Override
200+
public void onFailure(@NonNull String reason, @Nullable JSONObject data) {
201+
assertTrue(false); // callback should be called with failure
202+
}
203+
});
204+
}
205+
167206
@Test
168207
public void testUpdateEmailWithOldEmail() throws Exception {
169208
server.enqueue(new MockResponse().setResponseCode(200).setBody("{}"));

0 commit comments

Comments
 (0)