diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java index 3050d96fc4..37d0b6c542 100644 --- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java +++ b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java @@ -6,9 +6,10 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.multidex.MultiDexApplication; - import com.onesignal.Continue; +import com.onesignal.IUserJwtInvalidatedListener; import com.onesignal.OneSignal; +import com.onesignal.UserJwtInvalidatedEvent; import com.onesignal.inAppMessages.IInAppMessageClickListener; import com.onesignal.inAppMessages.IInAppMessageClickEvent; import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent; @@ -140,6 +141,13 @@ public void onUserStateChange(@NonNull UserChangedState state) { } }); + OneSignal.addUserJwtInvalidatedListner(new IUserJwtInvalidatedListener() { + @Override + public void onUserJwtInvalidated(@NonNull UserJwtInvalidatedEvent event) { + Log.v(Tag.LOG_TAG, "onUserJwtInvalidated fired with ID:" + event.getExternalId()); + } + }); + OneSignal.getInAppMessages().setPaused(true); OneSignal.getLocation().setShared(false); diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/model/MainActivityViewModel.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/model/MainActivityViewModel.java index 58069a298c..dc84e28a9e 100644 --- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/model/MainActivityViewModel.java +++ b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/model/MainActivityViewModel.java @@ -18,6 +18,7 @@ import android.view.View; import android.view.ViewTreeObserver; import android.widget.Button; +import android.widget.EditText; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.Switch; @@ -83,6 +84,10 @@ public class MainActivityViewModel implements ActivityViewModel, IPushSubscripti private Button loginUserButton; private Button logoutUserButton; + // JWT + private Button invalidateJwtButton; + private Button updateJwtButton; + // Alias private TextView aliasTitleTextView; private RecyclerView aliasesRecyclerView; @@ -211,6 +216,9 @@ public ActivityViewModel onActivityCreated(Context context) { loginUserButton = getActivity().findViewById(R.id.main_activity_login_user_button); logoutUserButton = getActivity().findViewById(R.id.main_activity_logout_user_button); + invalidateJwtButton = getActivity().findViewById(R.id.main_activity_invalidate_jwt_button); + updateJwtButton = getActivity().findViewById(R.id.main_activity_update_jwt_button); + aliasTitleTextView = getActivity().findViewById(R.id.main_activity_aliases_title_text_view); noAliasesTextView = getActivity().findViewById(R.id.main_activity_aliases_no_aliases_text_view); addAliasButton = getActivity().findViewById(R.id.main_activity_add_alias_button); @@ -422,6 +430,7 @@ public void onFailure() { } private void setupUserLayout() { + setupJWTLayout(); setupAliasLayout(); setupEmailLayout(); setupSMSLayout(); @@ -430,6 +439,28 @@ private void setupUserLayout() { setupTriggersLayout(); } + private void setupJWTLayout() { + invalidateJwtButton.setOnClickListener(v -> { + OneSignal.updateUserJwt(OneSignal.getUser().getExternalId(), ""); + }); + updateJwtButton.setOnClickListener(v -> { + dialog.createUpdateAlertDialog("", Dialog.DialogAction.UPDATE, ProfileUtil.FieldType.JWT, new UpdateAlertDialogCallback() { + @Override + public void onSuccess(String update) { + if (update != null && !update.isEmpty()) { + OneSignal.updateUserJwt(OneSignal.getUser().getExternalId(), update); + refreshState(); + } + } + + @Override + public void onFailure() { + + } + }); + }); + } + private void setupAliasLayout() { setupAliasesRecyclerView(); addAliasButton.setOnClickListener(v -> dialog.createAddPairAlertDialog("Add Alias", ProfileUtil.FieldType.ALIAS, new AddPairAlertDialogCallback() { diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/util/ProfileUtil.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/util/ProfileUtil.java index 9a026c5f47..c48edd4d4f 100644 --- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/util/ProfileUtil.java +++ b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/util/ProfileUtil.java @@ -13,6 +13,7 @@ public enum FieldType { ALIAS("Alias"), EMAIL("Email"), SMS("SMS"), + JWT("JWT"), EXTERNAL_USER_ID("External User Id"), TAG("Tags"), @@ -97,6 +98,10 @@ public static boolean isSMSValid(TextInputLayout smsTextInputLayout) { return true; } + private static boolean isJWTValid(TextInputLayout jwtTextInputLayout) { + return !jwtTextInputLayout.getEditText().toString().isEmpty(); + } + private static boolean isExternalUserIdValid(TextInputLayout externalUserIdTextInputLayout) { externalUserIdTextInputLayout.setErrorEnabled(false); if (externalUserIdTextInputLayout.getEditText() != null) { @@ -137,6 +142,8 @@ static boolean isContentValid(FieldType field, TextInputLayout alertDialogTextIn return isEmailValid(alertDialogTextInputLayout); case SMS: return isSMSValid(alertDialogTextInputLayout); + case JWT: + return isJWTValid(alertDialogTextInputLayout); case EXTERNAL_USER_ID: return isExternalUserIdValid(alertDialogTextInputLayout); case TAG: diff --git a/Examples/OneSignalDemo/app/src/main/res/layout/main_activity_layout.xml b/Examples/OneSignalDemo/app/src/main/res/layout/main_activity_layout.xml index ee4ce93cb5..f3eb64a051 100644 --- a/Examples/OneSignalDemo/app/src/main/res/layout/main_activity_layout.xml +++ b/Examples/OneSignalDemo/app/src/main/res/layout/main_activity_layout.xml @@ -152,20 +152,20 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start|center_vertical" - android:gravity="start|center_vertical" - android:layout_marginBottom="4dp" android:layout_marginStart="12dp" android:layout_marginLeft="12dp" + android:layout_marginBottom="4dp" + android:gravity="start|center_vertical" android:text="@string/app" android:textColor="@color/colorDarkText" /> @@ -226,23 +226,23 @@ android:layout_width="match_parent" android:layout_height="56dp" android:layout_gravity="center" - android:gravity="center" android:layout_marginStart="12dp" android:layout_marginTop="4dp" android:layout_marginEnd="12dp" android:layout_marginBottom="12dp" - android:orientation="vertical" - android:background="@color/colorPrimary"> + android:background="@color/colorPrimary" + android:gravity="center" + android:orientation="vertical">