From 64cdfad75e331f774748dea13282bc0dead15540 Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Wed, 4 Jan 2023 10:30:13 -0500 Subject: [PATCH] [User Model] alpha bug fixes * Remember device's push subscription ID in config and ensure that push subscription is returned in IUserManager.pushSubscription. * Add TransferSubscriptionOperation --- .../sdktest/model/MainActivityViewModel.java | 56 +++++++++---------- .../sdktest/util/SharedPreferenceUtil.java | 9 --- .../main/res/layout/main_activity_layout.xml | 28 +++++++++- .../core/internal/config/ConfigModel.kt | 7 +++ .../config/impl/ConfigModelStoreListener.kt | 50 ++++++++--------- .../com/onesignal/internal/OneSignalImp.kt | 21 +++++-- .../backend/ISubscriptionBackendService.kt | 12 +++- .../impl/SubscriptionBackendService.kt | 11 ++++ .../TransferSubscriptionOperation.kt | 55 ++++++++++++++++++ .../executors/LoginUserOperationExecutor.kt | 17 +++--- .../executors/RefreshUserOperationExecutor.kt | 10 +++- .../SubscriptionOperationExecutor.kt | 28 +++++++++- .../SubscriptionModelStoreListener.kt | 51 ++++++++--------- .../subscriptions/impl/SubscriptionManager.kt | 16 ++---- .../data/impl/NotificationRepository.kt | 2 +- 15 files changed, 247 insertions(+), 126 deletions(-) create mode 100644 OneSignalSDK/onesignal/core/src/main/java/com/onesignal/user/internal/operations/TransferSubscriptionOperation.kt 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 74dac0df66..f3ee1e67e0 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 @@ -86,7 +86,8 @@ public class MainActivityViewModel implements ActivityViewModel, ISubscriptionCh private RelativeLayout appIdRelativeLayout; private TextView appIdTitleTextView; private TextView appIdTextView; - private Button switchUserButton; + private Button loginUserButton; + private Button logoutUserButton; // Alias private TextView aliasTitleTextView; @@ -213,7 +214,8 @@ public ActivityViewModel onActivityCreated(Context context) { appIdTitleTextView = getActivity().findViewById(R.id.main_activity_account_details_app_id_title_text_view); appIdTextView = getActivity().findViewById(R.id.main_activity_account_details_app_id_text_view); revokeConsentButton = getActivity().findViewById(R.id.main_activity_app_revoke_consent_button); - switchUserButton = getActivity().findViewById(R.id.main_activity_switch_user_button); + loginUserButton = getActivity().findViewById(R.id.main_activity_login_user_button); + logoutUserButton = getActivity().findViewById(R.id.main_activity_logout_user_button); aliasTitleTextView = getActivity().findViewById(R.id.main_activity_aliases_title_text_view); noAliasesTextView = getActivity().findViewById(R.id.main_activity_aliases_no_aliases_text_view); @@ -301,7 +303,8 @@ public ActivityViewModel setupInterfaceElements() { font.applyFont(privacyConsentAllowButton, font.saralaBold); font.applyFont(appIdTitleTextView, font.saralaBold); font.applyFont(appIdTextView, font.saralaRegular); - font.applyFont(switchUserButton, font.saralaBold); + font.applyFont(loginUserButton, font.saralaBold); + font.applyFont(logoutUserButton, font.saralaBold); font.applyFont(aliasTitleTextView, font.saralaBold); font.applyFont(noAliasesTextView, font.saralaBold); font.applyFont(emailHeaderTextView, font.saralaBold); @@ -401,37 +404,28 @@ public void onScrollChanged() { private void setupAppLayout() { revokeConsentButton.setOnClickListener(v -> togglePrivacyConsent(false)); - if(SharedPreferenceUtil.getCachedIsLoggedIn(context)) { - switchUserButton.setText(R.string.logout_user); - } - - switchUserButton.setOnClickListener(v -> { - if(SharedPreferenceUtil.getCachedIsLoggedIn(context)) { - OneSignal.logout(Continue.with(r -> { - SharedPreferenceUtil.cacheIsLoggedIn(context, false); - switchUserButton.setText(R.string.login_user); - refreshState(); - })); - } - else { - dialog.createUpdateAlertDialog("", Dialog.DialogAction.LOGIN, ProfileUtil.FieldType.EXTERNAL_USER_ID, new UpdateAlertDialogCallback() { - @Override - public void onSuccess(String update) { - if (update != null && !update.isEmpty()) { - OneSignal.login(update, Continue.with(r -> { - SharedPreferenceUtil.cacheIsLoggedIn(context, true); - switchUserButton.setText(R.string.logout_user); - refreshState(); - })); - } + loginUserButton.setOnClickListener(v -> { + dialog.createUpdateAlertDialog("", Dialog.DialogAction.LOGIN, ProfileUtil.FieldType.EXTERNAL_USER_ID, new UpdateAlertDialogCallback() { + @Override + public void onSuccess(String update) { + if (update != null && !update.isEmpty()) { + OneSignal.login(update, Continue.with(r -> { + refreshState(); + })); } + } - @Override - public void onFailure() { + @Override + public void onFailure() { - } - }); - } + } + }); + }); + + logoutUserButton.setOnClickListener(v -> { + OneSignal.logout(Continue.with(r -> { + refreshState(); + })); }); } diff --git a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/util/SharedPreferenceUtil.java b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/util/SharedPreferenceUtil.java index 28c84ccd7f..5cb286d7bf 100644 --- a/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/util/SharedPreferenceUtil.java +++ b/Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/util/SharedPreferenceUtil.java @@ -14,7 +14,6 @@ public class SharedPreferenceUtil { public static final String USER_EXTERNAL_USER_ID_SHARED_PREF = "USER_EXTERNAL_USER_ID_SHARED_PREF"; private static final String LOCATION_SHARED_PREF = "LOCATION_SHARED_PREF"; private static final String IN_APP_MESSAGING_PAUSED_PREF = "IN_APP_MESSAGING_PAUSED_PREF"; - private static final String IS_LOGGED_IN = "IS_LOGGED_IN"; private static SharedPreferences getSharedPreference(Context context) { return context.getSharedPreferences(APP_SHARED_PREFS, Context.MODE_PRIVATE); @@ -44,10 +43,6 @@ public static boolean getCachedInAppMessagingPausedStatus(Context context) { return getSharedPreference(context).getBoolean(IN_APP_MESSAGING_PAUSED_PREF, true); } - public static boolean getCachedIsLoggedIn(Context context) { - return getSharedPreference(context).getBoolean(IS_LOGGED_IN, false); - } - public static void cacheOneSignalAppId(Context context, String appId) { getSharedPreference(context).edit().putString(OS_APP_ID_SHARED_PREF, appId).apply(); } @@ -67,8 +62,4 @@ public static void cacheLocationSharedStatus(Context context, boolean subscribed public static void cacheInAppMessagingPausedStatus(Context context, boolean paused) { getSharedPreference(context).edit().putBoolean(IN_APP_MESSAGING_PAUSED_PREF, paused).apply(); } - - public static void cacheIsLoggedIn(Context context, boolean isLoggedIn) { - getSharedPreference(context).edit().putBoolean(IS_LOGGED_IN, isLoggedIn).apply(); - } } 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 5b65e5b0f5..ee4ce93cb5 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 @@ -245,6 +245,8 @@ android:visibility="visible"/> + +