From ef7c42765a8003ae4dedb61c22aa80d06d1cf9b7 Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Tue, 28 Apr 2020 22:09:54 +0300 Subject: [PATCH] NY-9820: New account creation confirmation message --- .../data/data_impl/SocialLoginDetailsImpl.kt | 7 ++ .../data_interfaces/ISocialLoginDetails.kt | 3 +- .../mvp/presenters/BaseLoginPresenter.java | 4 + .../mvp/presenters/InfoPresenter.kt | 4 + .../mvp/presenters/LoginPresenter.java | 6 +- .../ui/fragments/signin/InfoFragment.java | 47 +++++++++-- .../communicator/utils/DialogFactory.java | 79 ++++++++++++++++++- app/src/main/res/values-en/strings.xml | 6 ++ app/src/main/res/values-es/strings.xml | 6 ++ app/src/main/res/values-ko/strings.xml | 6 ++ app/src/main/res/values-zh-rCN/strings.xml | 6 ++ app/src/main/res/values-zh/strings.xml | 6 ++ app/src/main/res/values/strings.xml | 6 +- 13 files changed, 170 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/data/data_impl/SocialLoginDetailsImpl.kt b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/data/data_impl/SocialLoginDetailsImpl.kt index e203b51184..4b035926a2 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/data/data_impl/SocialLoginDetailsImpl.kt +++ b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/data/data_impl/SocialLoginDetailsImpl.kt @@ -15,17 +15,22 @@ class SocialLoginDetailsImpl() : ISocialLoginDetails { override var avatar: String? = null override var firstName: String? = null override var lastName: String? = null + override var isPending: Boolean = true + override var isSocial: Boolean = false constructor(parcel: Parcel) : this() { avatar = parcel.readString() firstName = parcel.readString() lastName = parcel.readString() + isPending = (parcel.readInt() > 0) + isSocial = (parcel.readInt() > 0) } constructor(data: NYNSocialLoginDetails?) : this() { avatar = data?.pictureUrl firstName = data?.firstName lastName = data?.lastName + isSocial = true } constructor(data: IAccount?) : this() { @@ -48,6 +53,8 @@ class SocialLoginDetailsImpl() : ISocialLoginDetails { parcel.writeString(avatar) parcel.writeString(firstName) parcel.writeString(lastName) + parcel.writeInt(if (isPending) 1 else 0) + parcel.writeInt(if (isSocial) 1 else 0) } override fun describeContents(): Int { diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/data/data_interfaces/ISocialLoginDetails.kt b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/data/data_interfaces/ISocialLoginDetails.kt index 07eabbea41..f149f4248a 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/data/data_interfaces/ISocialLoginDetails.kt +++ b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/data/data_interfaces/ISocialLoginDetails.kt @@ -10,5 +10,6 @@ interface ISocialLoginDetails :Parcelable{ var firstName: String? var lastName: String? var avatar: String? - + var isPending: Boolean + var isSocial: Boolean } \ No newline at end of file diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/BaseLoginPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/BaseLoginPresenter.java index 6606a4d820..5e88205d4a 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/BaseLoginPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/BaseLoginPresenter.java @@ -1,6 +1,7 @@ package com.nynja.mobile.communicator.mvp.presenters; import com.nynja.mobile.communicator.data.sdk.data.data_impl.AccountImpl; +import com.nynja.mobile.communicator.data.sdk.data.data_impl.SocialLoginDetailsImpl; import com.nynja.mobile.communicator.data.sdk.data.data_interfaces.ISocialLoginDetails; import com.nynja.mobile.communicator.mvp.view.ErrorMvpView; import com.nynja.mobile.communicator.utils.StringUtils; @@ -23,6 +24,9 @@ public class BaseLoginPresenter extends BaseErrorPresent mDataManager.getAuthCodeReceiverClient().stop(); if (pending) { mDataProvider.saveAccount(account); + if (socialLoginDetails == null) { + socialLoginDetails = new SocialLoginDetailsImpl(account); + } mRouter.backToAndNavigate(new Screen(SignInNavigator.SIGN_IN), new Screen[]{ new Screen(SignInNavigator.INFO, socialLoginDetails)}); } else { diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/InfoPresenter.kt b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/InfoPresenter.kt index b8464bd529..832d5025b7 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/InfoPresenter.kt +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/InfoPresenter.kt @@ -56,6 +56,10 @@ class InfoPresenter : BaseLoginPresenter() { mRouter.newRootScreen(NynjaNavigator.MAIN) } + fun backToLogin() { + mRouter.exit(); + } + private var userAvatar: String? = null private val mResultListener = ResultListener { resultData -> diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/LoginPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/LoginPresenter.java index 4e494a069e..50c80fff47 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/LoginPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/LoginPresenter.java @@ -171,13 +171,13 @@ public class LoginPresenter extends BaseLoginPresenter implements Soc if (mDataManager.invalidProtocol) getViewState().showErrorUpdateVersionDialog(); mDataManager.getAccountSDK().attachLoginCallback(this); - mDataManager.getAccountSDK().attachCodeCallback(this); +// mDataManager.getAccountSDK().attachCodeCallback(this); } @Override public void detachView(LoginView view) { // mDataManager.getAccountSDK().detachLoginCallback(this); -// mDataManager.getAccountSDK().detachCodeCallback(this); + mDataManager.getAccountSDK().detachCodeCallback(this); mDataManager.getAccountSDK().detachManageProfileCallback(mAccountListener); super.detachView(view); } @@ -192,7 +192,7 @@ public class LoginPresenter extends BaseLoginPresenter implements Soc public void attachView(LoginView view) { super.attachView(view); // mDataManager.getAccountSDK().attachLoginCallback(this); -// mDataManager.getAccountSDK().attachCodeCallback(this); + mDataManager.getAccountSDK().attachCodeCallback(this); mDataManager.getAccountSDK().attachManageProfileCallback(mAccountListener); //addDisposable(mDataManager.subscribeToProfile() // .filter(profile -> profile.getRoster() != null) diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/signin/InfoFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/signin/InfoFragment.java index ee91283fd6..5e2db5dfa2 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/signin/InfoFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/signin/InfoFragment.java @@ -2,9 +2,13 @@ package com.nynja.mobile.communicator.ui.fragments.signin; import android.Manifest; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.support.annotation.ArrayRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.TextInputLayout; +import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -36,6 +40,10 @@ import com.nynja.mobile.communicator.utils.SpannableUtils; import com.nynja.mobile.communicator.utils.StringUtils; import com.nynja.mobile.communicator.utils.Utils; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import butterknife.BindView; import butterknife.OnCheckedChanged; import butterknife.OnClick; @@ -85,8 +93,9 @@ public class InfoFragment extends BaseFragment implements InfoView, OnBackPresse initSpannableTerms(); if (getArguments() != null) { - if (getArguments().getParcelable(KEY_SOCIAL_DATA) != null) { - ISocialLoginDetails socialLoginDetails = getArguments().getParcelable(KEY_SOCIAL_DATA); + ISocialLoginDetails socialLoginDetails = getArguments().getParcelable(KEY_SOCIAL_DATA); + boolean isSocial = (socialLoginDetails != null && socialLoginDetails.isSocial()); + if (isSocial) { if (StringUtils.isNotEmpty(socialLoginDetails.getFirstName())) { mFirstNameEt.setText(socialLoginDetails.getFirstName()); } @@ -97,8 +106,12 @@ public class InfoFragment extends BaseFragment implements InfoView, OnBackPresse mPresenter.presetAvatar(socialLoginDetails.getAvatar()); } } + boolean isPending = (socialLoginDetails != null && socialLoginDetails.isPending()); + if (isPending) { + generateContextDialog(); + } - boolean hide = (getArguments().containsKey(KEY_SOCIAL_DATA) || !mPresenter.isLoggedIn()); + boolean hide = (isSocial || !mPresenter.isLoggedIn()); mAvatarIv.setVisibility(hide ? View.GONE : View.VISIBLE); mPresenter.setSignedInUserFlag(!hide); } @@ -138,6 +151,30 @@ public class InfoFragment extends BaseFragment implements InfoView, OnBackPresse } + private void generateContextDialog() { + new Handler(Looper.getMainLooper()).post(() ->{ + String title = getString(R.string.new_account_alert_message_body) ; + DialogFactory.showModalPurchaseStoreItem(getActivity(), getString(R.string.new_account_alert_title), + title, + getString(R.string.new_account_alert_action_create_new), getString(R.string.call_no_dont_ask_me_again), + (dialogInterface, i) -> { + // positive - continue pending account creation + onResumed(); + }, + (dialogInterface, i) -> { + //negative - go back to login with different accouint + mPresenter.backToLogin(); + }); + }); + } + + private void onResumed() { + if (getActivity() instanceof BaseActivity) { + ((BaseActivity) getActivity()).setOnBackPressedListener(this); + Utils.showKeyboard(getActivity(), mUserNameEt); + } + } + private void validateUserData(InfoPresenter.UserData userData) { mPresenter.validateData(userData, mTermsOfUse.isChecked()); } @@ -339,10 +376,6 @@ public class InfoFragment extends BaseFragment implements InfoView, OnBackPresse @Override public void onResume() { super.onResume(); - if (getActivity() instanceof BaseActivity) { - ((BaseActivity) getActivity()).setOnBackPressedListener(this); - Utils.showKeyboard(getActivity(), mUserNameEt); - } } @Override public void onPause() { diff --git a/app/src/main/java/com/nynja/mobile/communicator/utils/DialogFactory.java b/app/src/main/java/com/nynja/mobile/communicator/utils/DialogFactory.java index 16df41edf1..ea23d5bb11 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/utils/DialogFactory.java +++ b/app/src/main/java/com/nynja/mobile/communicator/utils/DialogFactory.java @@ -234,7 +234,7 @@ public class DialogFactory { return dialogBuilder.create(); } - public static AlertDialog createContextPopupDialog(Activity activity, int title, + public static AlertDialog createContextPopupDialog(Activity activity, @ArrayRes List itemsRes, DialogInterface.OnClickListener onClickListener) { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity, @@ -245,9 +245,6 @@ public class DialogFactory { } dialogBuilder.setAdapter(arrayAdapter, onClickListener); AlertDialog dialog = dialogBuilder.create(); - if (title > 0) { - dialog.setTitle(title); - } ListView listView = dialog.getListView(); listView.setDivider(new ColorDrawable(ContextCompat.getColor(activity, R.color.lite_grey))); listView.setDividerHeight(1); @@ -256,6 +253,50 @@ public class DialogFactory { return dialog; } + public static AlertDialog createContextPopupDialog(Activity activity, int title, + @ArrayRes List itemsRes, + DialogInterface.OnClickListener onClickListener) { + AlertDialog dialog = createContextPopupDialog(activity, itemsRes, onClickListener); + if (title > 0) { + dialog.setTitle(title); + } + return dialog; + } + + public static AlertDialog createContextPopupDialog(Activity activity, String title, + @ArrayRes List itemsRes, + DialogInterface.OnClickListener onClickListener) { + AlertDialog dialog = createContextPopupDialog(activity, itemsRes, onClickListener); + if (StringUtils.isNotEmpty(title)) { + dialog.setTitle(title); + } + return dialog; + } + + public static AlertDialog createContextPopupDialog(Activity activity, + int title, + int message, + @ArrayRes List itemsRes, + DialogInterface.OnClickListener onClickListener) { + AlertDialog dialog = createContextPopupDialog(activity, title, itemsRes, onClickListener); + if (message > 0) { + dialog.setMessage(activity.getString(message)); + } + return dialog; + } + + public static AlertDialog createContextPopupDialog(Activity activity, + int title, + String message, + @ArrayRes List itemsRes, + DialogInterface.OnClickListener onClickListener) { + AlertDialog dialog = createContextPopupDialog(activity, title, itemsRes, onClickListener); + if (StringUtils.isNotEmpty(message)) { + dialog.setMessage(message); + } + return dialog; + } + public static AlertDialog createDialogWithCustomView(final Activity activity, String message, View customView, DialogInterface.OnClickListener yesClickListener, @@ -514,4 +555,34 @@ public class DialogFactory { return dialog; } + + public static Dialog showModalPurchaseStoreItem(Context context, + String title, + String msg, + @Nullable String positiveButtonText, + @Nullable String negativeButtonText, + @Nullable DialogInterface.OnClickListener positiveListener, + @Nullable DialogInterface.OnClickListener negativeListener) { + if (context == null) return null; + AlertDialog.Builder builder = new AlertDialog.Builder(context, + R.style.Nynja_PopupMenu_AlertDialog + /*R.style.Nynja_Dialog*/ + ); + builder.setIcon(android.R.drawable.ic_dialog_info); + builder.setTitle(title); + builder.setMessage(msg); + builder.setPositiveButton(positiveButtonText, positiveListener); + builder.setNegativeButton(negativeButtonText, negativeListener); + builder.setCancelable(false); + Dialog dialog = builder.create(); + dialog.show(); + + TextView tv = dialog.findViewById(android.R.id.message); + if (tv != null) tv.setGravity(Gravity.CENTER); + + changeMessageTextSize(dialog); + + return dialog; + } + } \ No newline at end of file diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 4d37bdf51d..9382af3534 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -1324,4 +1324,10 @@ Phone number: +%1$s Please select at least one message. + + "Create New NYNJA Account!" + Click \"Create New NYNJA Account\" below to confirm. If you already have a NYNJA account, click \"Use Another Account\" + Create New NYNJA Account + Use Another Account + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 22bd5fd832..e30e89ab3f 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1323,4 +1323,10 @@ Uploading View + + "Create New NYNJA Account!" + Click \"Create New NYNJA Account\" below to confirm. If you already have a NYNJA account, click \"Use Another Account\" + Create New NYNJA Account + Use Another Account + diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 1f467439e7..7618258bc0 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -1323,4 +1323,10 @@ Uploading View + + "Create New NYNJA Account!" + Click \"Create New NYNJA Account\" below to confirm. If you already have a NYNJA account, click \"Use Another Account\" + Create New NYNJA Account + Use Another Account + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 9e0603dfe0..6b1396940b 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1323,4 +1323,10 @@ Uploading View + + "Create New NYNJA Account!" + Click \"Create New NYNJA Account\" below to confirm. If you already have a NYNJA account, click \"Use Another Account\" + Create New NYNJA Account + Use Another Account + diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 9e0603dfe0..6b1396940b 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1323,4 +1323,10 @@ Uploading View + + "Create New NYNJA Account!" + Click \"Create New NYNJA Account\" below to confirm. If you already have a NYNJA account, click \"Use Another Account\" + Create New NYNJA Account + Use Another Account + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index db722a5096..f4ce29dee2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1325,5 +1325,9 @@ Stop sharing Stop video - + + "Create New NYNJA Account!" + Click \"Create New NYNJA Account\" below to confirm. If you already have a NYNJA account, click \"Use Another Account\" + Create New NYNJA Account + Use Another Account -- GitLab