Skip to content

Commit 62ac73e

Browse files
Ayyanchiradevcsomnicg“Akshay
authored
[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 fa121af commit 62ac73e

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;
@@ -278,6 +280,8 @@ private void completeUserLogin() {
278280

279281
if (config.autoPushRegistration) {
280282
registerForPush();
283+
} else if (_setUserSuccessCallbackHandler != null) {
284+
_setUserSuccessCallbackHandler.onSuccess(new JSONObject()); // passing blank json object here as onSuccess is @Nonnull
281285
}
282286

283287
getInAppManager().syncInApp();
@@ -471,7 +475,7 @@ protected void registerDeviceToken(@Nullable String email, @Nullable String user
471475
IterableLogger.e(TAG, "registerDeviceToken: applicationName is null, check that pushIntegrationName is set in IterableConfig");
472476
}
473477

474-
apiClient.registerDeviceToken(email, userId, authToken, applicationName, deviceToken, dataFields, deviceAttributes);
478+
apiClient.registerDeviceToken(email, userId, authToken, applicationName, deviceToken, dataFields, deviceAttributes, _setUserSuccessCallbackHandler, _setUserFailureCallbackHandler);
475479
}
476480
//endregion
477481

@@ -573,10 +577,18 @@ public IterableAttributionInfo getAttributionInfo() {
573577
}
574578

575579
public void setEmail(@Nullable String email) {
576-
setEmail(email, null);
580+
setEmail(email, null, null, null);
581+
}
582+
583+
public void setEmail(@Nullable String email, @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
584+
setEmail(email, null, successHandler, failureHandler);
577585
}
578586

579587
public void setEmail(@Nullable String email, @Nullable String authToken) {
588+
setEmail(email, authToken, null, null);
589+
}
590+
591+
public void setEmail(@Nullable String email, @Nullable String authToken, @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
580592
//Only if passed in same non-null email
581593
if (_email != null && _email.equals(email)) {
582594
checkAndUpdateAuthToken(authToken);
@@ -591,16 +603,26 @@ public void setEmail(@Nullable String email, @Nullable String authToken) {
591603

592604
_email = email;
593605
_userId = null;
606+
_setUserSuccessCallbackHandler = successHandler;
607+
_setUserFailureCallbackHandler = failureHandler;
594608
storeAuthData();
595609

596610
onLogin(authToken);
597611
}
598612

599613
public void setUserId(@Nullable String userId) {
600-
setUserId(userId, null);
614+
setUserId(userId, null, null, null);
615+
}
616+
617+
public void setUserId(@Nullable String userId, @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
618+
setUserId(userId, null, successHandler, failureHandler);
601619
}
602620

603621
public void setUserId(@Nullable String userId, @Nullable String authToken) {
622+
setUserId(userId, authToken, null, null);
623+
}
624+
625+
public void setUserId(@Nullable String userId, @Nullable String authToken, @Nullable IterableHelper.SuccessHandler successHandler, @Nullable IterableHelper.FailureHandler failureHandler) {
604626
//If same non null userId is passed
605627
if (_userId != null && _userId.equals(userId)) {
606628
checkAndUpdateAuthToken(authToken);
@@ -615,6 +637,8 @@ public void setUserId(@Nullable String userId, @Nullable String authToken) {
615637

616638
_email = null;
617639
_userId = userId;
640+
_setUserSuccessCallbackHandler = successHandler;
641+
_setUserFailureCallbackHandler = failureHandler;
618642
storeAuthData();
619643

620644
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
@@ -413,7 +413,7 @@ protected void disableToken(@Nullable String email, @Nullable String userId, @Nu
413413
}
414414
}
415415

416-
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) {
416+
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) {
417417
Context context = authProvider.getContext();
418418
JSONObject requestJSON = new JSONObject();
419419
try {
@@ -444,7 +444,7 @@ protected void registerDeviceToken(@Nullable String email, @Nullable String user
444444
requestJSON.put(IterableConstants.KEY_PREFER_USER_ID, true);
445445
}
446446

447-
sendPostRequest(IterableConstants.ENDPOINT_REGISTER_DEVICE_TOKEN, requestJSON, authToken);
447+
sendPostRequest(IterableConstants.ENDPOINT_REGISTER_DEVICE_TOKEN, requestJSON, authToken, successHandler, failureHandler);
448448
} catch (JSONException e) {
449449
IterableLogger.e(TAG, "registerDeviceToken: exception", e);
450450
}

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;
@@ -161,6 +164,42 @@ public void testUpdateEmailPersistence() throws Exception {
161164
assertEquals("[email protected]", IterableApi.getInstance().getEmail());
162165
}
163166

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

0 commit comments

Comments
 (0)