12
12
import androidx .annotation .RestrictTo ;
13
13
import androidx .annotation .VisibleForTesting ;
14
14
15
+ import com .iterable .iterableapi .util .DeviceInfoUtils ;
16
+
15
17
import org .json .JSONException ;
16
18
import org .json .JSONObject ;
17
19
@@ -39,6 +41,8 @@ public class IterableApi {
39
41
private IterableNotificationData _notificationData ;
40
42
private String _deviceId ;
41
43
private boolean _firstForegroundHandled ;
44
+ private IterableHelper .SuccessHandler _setUserSuccessCallbackHandler ;
45
+ private IterableHelper .FailureHandler _setUserFailureCallbackHandler ;
42
46
43
47
IterableApiClient apiClient = new IterableApiClient (new IterableApiAuthProvider ());
44
48
private @ Nullable IterableInAppManager inAppManager ;
@@ -291,6 +295,8 @@ private void completeUserLogin() {
291
295
292
296
if (config .autoPushRegistration ) {
293
297
registerForPush ();
298
+ } else if (_setUserSuccessCallbackHandler != null ) {
299
+ _setUserSuccessCallbackHandler .onSuccess (new JSONObject ()); // passing blank json object here as onSuccess is @Nonnull
294
300
}
295
301
296
302
getInAppManager ().syncInApp ();
@@ -478,7 +484,7 @@ protected void registerDeviceToken(@Nullable String email, @Nullable String user
478
484
IterableLogger .e (TAG , "registerDeviceToken: applicationName is null, check that pushIntegrationName is set in IterableConfig" );
479
485
}
480
486
481
- apiClient .registerDeviceToken (email , userId , authToken , applicationName , deviceToken , dataFields , deviceAttributes );
487
+ apiClient .registerDeviceToken (email , userId , authToken , applicationName , deviceToken , dataFields , deviceAttributes , _setUserSuccessCallbackHandler , _setUserFailureCallbackHandler );
482
488
}
483
489
//endregion
484
490
@@ -519,6 +525,17 @@ public static void initialize(@NonNull Context context, @NonNull String apiKey,
519
525
520
526
loadLastSavedConfiguration (context );
521
527
IterablePushNotificationUtil .processPendingAction (context );
528
+ if (DeviceInfoUtils .isFireTV (context .getPackageManager ())) {
529
+ try {
530
+ JSONObject dataFields = new JSONObject ();
531
+ JSONObject deviceDetails = new JSONObject ();
532
+ DeviceInfoUtils .populateDeviceDetails (deviceDetails , context , sharedInstance .getDeviceId ());
533
+ dataFields .put (IterableConstants .KEY_FIRETV , deviceDetails );
534
+ sharedInstance .apiClient .updateUser (dataFields , false );
535
+ } catch (JSONException e ) {
536
+ IterableLogger .e (TAG , "initialize: exception" , e );
537
+ }
538
+ }
522
539
}
523
540
524
541
public static void setContext (Context context ) {
@@ -571,10 +588,18 @@ public IterableAttributionInfo getAttributionInfo() {
571
588
}
572
589
573
590
public void setEmail (@ Nullable String email ) {
574
- setEmail (email , null );
591
+ setEmail (email , null , null , null );
592
+ }
593
+
594
+ public void setEmail (@ Nullable String email , @ Nullable IterableHelper .SuccessHandler successHandler , @ Nullable IterableHelper .FailureHandler failureHandler ) {
595
+ setEmail (email , null , successHandler , failureHandler );
575
596
}
576
597
577
598
public void setEmail (@ Nullable String email , @ Nullable String authToken ) {
599
+ setEmail (email , authToken , null , null );
600
+ }
601
+
602
+ public void setEmail (@ Nullable String email , @ Nullable String authToken , @ Nullable IterableHelper .SuccessHandler successHandler , @ Nullable IterableHelper .FailureHandler failureHandler ) {
578
603
//Only if passed in same non-null email
579
604
if (_email != null && _email .equals (email )) {
580
605
checkAndUpdateAuthToken (authToken );
@@ -589,16 +614,26 @@ public void setEmail(@Nullable String email, @Nullable String authToken) {
589
614
590
615
_email = email ;
591
616
_userId = null ;
617
+ _setUserSuccessCallbackHandler = successHandler ;
618
+ _setUserFailureCallbackHandler = failureHandler ;
592
619
storeAuthData ();
593
620
594
621
onLogin (authToken );
595
622
}
596
623
597
624
public void setUserId (@ Nullable String userId ) {
598
- setUserId (userId , null );
625
+ setUserId (userId , null , null , null );
626
+ }
627
+
628
+ public void setUserId (@ Nullable String userId , @ Nullable IterableHelper .SuccessHandler successHandler , @ Nullable IterableHelper .FailureHandler failureHandler ) {
629
+ setUserId (userId , null , successHandler , failureHandler );
599
630
}
600
631
601
632
public void setUserId (@ Nullable String userId , @ Nullable String authToken ) {
633
+ setUserId (userId , authToken , null , null );
634
+ }
635
+
636
+ public void setUserId (@ Nullable String userId , @ Nullable String authToken , @ Nullable IterableHelper .SuccessHandler successHandler , @ Nullable IterableHelper .FailureHandler failureHandler ) {
602
637
//If same non null userId is passed
603
638
if (_userId != null && _userId .equals (userId )) {
604
639
checkAndUpdateAuthToken (authToken );
@@ -613,6 +648,8 @@ public void setUserId(@Nullable String userId, @Nullable String authToken) {
613
648
614
649
_email = null ;
615
650
_userId = userId ;
651
+ _setUserSuccessCallbackHandler = successHandler ;
652
+ _setUserFailureCallbackHandler = failureHandler ;
616
653
storeAuthData ();
617
654
618
655
onLogin (authToken );
0 commit comments