From dfe07e0382fe4e12d08bfcb8d16804dd717580ed Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Tue, 5 May 2020 16:29:19 +0300 Subject: [PATCH] -NY-10160: [AN] Hidden option to activate VC --- .../data/db/PreferenceHelper.java | 10 ++++++- .../data/sdk/calls/ConferenceSDKModule.java | 1 + .../communicator/utils/DialogFactory.java | 29 +++++++++++++++++- .../utils/iap/InAppPurchaseManager.java | 30 +++++++++++++++---- 4 files changed, 63 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/db/PreferenceHelper.java b/app/src/main/java/com/nynja/mobile/communicator/data/db/PreferenceHelper.java index 2ad0a38996..88e72ee8c2 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/db/PreferenceHelper.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/db/PreferenceHelper.java @@ -80,7 +80,7 @@ public class PreferenceHelper { private final static String STORAGE_PREFS_VERSION = "storage_preference_version"; private final static String START_APP_TIME_VALUE = "start_app_time_value"; private final static String START_APP_TIME_VALUE_1 = "start_app_time_value_1"; - + private final static String ACTIVE_ACCOUNT_IAP_READY = "active_account_iap_ready"; private Gson mGson = new Gson(); private SharedPreferences mSharedPreferences; @@ -435,4 +435,12 @@ public class PreferenceHelper { mSharedPreferences.edit().putLong(START_APP_TIME_VALUE_1, current).apply(); } + public void setActiveAccountIAPReady(boolean ready) { + mSharedPreferences.edit().putBoolean(ACTIVE_ACCOUNT_IAP_READY, ready).apply(); + } + + public boolean isActiveAccountIAPReady() { + return (mSharedPreferences.getBoolean(ACTIVE_ACCOUNT_IAP_READY, false)); + } + } diff --git a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java index b00746dd83..127b277d0c 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java +++ b/app/src/main/java/com/nynja/mobile/communicator/data/sdk/calls/ConferenceSDKModule.java @@ -2806,6 +2806,7 @@ public class ConferenceSDKModule extends BaseSDKModule { final boolean hasRegisteredProducts = InAppPurchaseManager.getInstance(getContext()).hasRegisteredProducts(); final boolean isConferenceHasRestrictedDuration = (mActiveConference != null) ? mActiveConference.isConferenceHasRestrictedDuration() : false; return (isSamsungBuild && + !InAppPurchaseManager.getInstance(getContext()).isSettingsAlwaysAllowed() && hasRegisteredProducts && isConferenceHasRestrictedDuration); 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 ea23d5bb11..d0fdb7f1b3 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 @@ -2,6 +2,7 @@ package com.nynja.mobile.communicator.utils; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.Dialog; import android.content.Context; @@ -18,6 +19,7 @@ import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.util.TypedValue; import android.view.Gravity; +import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; @@ -29,6 +31,7 @@ import android.widget.ListView; import android.widget.TextView; import com.nynja.mobile.communicator.R; +import com.nynja.mobile.communicator.utils.iap.InAppPurchaseManager; import com.wdullaer.materialdatetimepicker.date.DatePickerDialog; import java.util.List; @@ -50,6 +53,9 @@ public class DialogFactory { private final static int MONTH_DEFAULT = 0; private final static int DAY_DEFAULT = 1; + private static long mLastMessageTouchTime = -1; + private static long mLastMessageTouchCount = 0; + public interface TextDialogListener { public void onClick(DialogInterface dialog, String text); } @@ -535,6 +541,7 @@ public class DialogFactory { result.create().show(); } + @SuppressLint("ClickableViewAccessibility") public static Dialog showPurchaseStoreItem(Context context, String msg, DialogInterface.OnClickListener positive, DialogInterface.OnClickListener negative) { if (context == null) return null; AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.Nynja_Dialog); @@ -548,7 +555,27 @@ public class DialogFactory { dialog.show(); TextView tv = dialog.findViewById(android.R.id.message); - if (tv != null) tv.setGravity(Gravity.CENTER); + if (tv != null) { + tv.setGravity(Gravity.CENTER); + tv.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View view, MotionEvent motionEvent) { + ++mLastMessageTouchCount; + if (System.currentTimeMillis() - mLastMessageTouchTime > 5000) { + mLastMessageTouchTime = System.currentTimeMillis(); + mLastMessageTouchCount = 0; + } else { + if (mLastMessageTouchCount >= 10) { + mLastMessageTouchTime = -1; + mLastMessageTouchCount = 0; + InAppPurchaseManager.getInstance(context).setSettingsAlwaysAllowed(); + dialog.dismiss(); + } + } + return false; + } + }); + } changeMessageTextSize(dialog); diff --git a/app/src/main/java/com/nynja/mobile/communicator/utils/iap/InAppPurchaseManager.java b/app/src/main/java/com/nynja/mobile/communicator/utils/iap/InAppPurchaseManager.java index 513159cdb2..bb9d5bbeb0 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/utils/iap/InAppPurchaseManager.java +++ b/app/src/main/java/com/nynja/mobile/communicator/utils/iap/InAppPurchaseManager.java @@ -3,8 +3,7 @@ package com.nynja.mobile.communicator.utils.iap; import android.content.Context; import com.nynja.mobile.communicator.BuildConfig; -import com.nynja.mobile.communicator.NynjaApp; -import com.nynja.mobile.communicator.data.DataManager; +import com.nynja.mobile.communicator.data.db.PreferenceHelper; import com.nynja.mobile.communicator.data.store.StoreProductDetailsItem; import com.nynja.mobile.communicator.utils.Consts; import com.nynja.mobile.communicator.utils.StringUtils; @@ -18,11 +17,9 @@ import com.samsung.android.sdk.iap.lib.vo.ConsumeVo; import com.samsung.android.sdk.iap.lib.vo.ErrorVo; import com.samsung.android.sdk.iap.lib.vo.OwnedProductVo; import com.samsung.android.sdk.iap.lib.vo.ProductVo; -import com.samsung.android.sdk.iap.lib.vo.PurchaseVo; import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import timber.log.Timber; @@ -68,6 +65,8 @@ public class InAppPurchaseManager { private ArrayList mSamsungProductsList; private HashMap mSamsungOwnProductsList; + private PreferenceHelper mPreferenceHelper; + public static InAppPurchaseManager getInstance(Context context) { if (mIAPManager != null) return mIAPManager; mIAPManager = new InAppPurchaseManager(context); @@ -76,6 +75,7 @@ public class InAppPurchaseManager { public InAppPurchaseManager(Context context) { mContext = context; + mPreferenceHelper = new PreferenceHelper(mContext); mProvider = InAppPurchaseProvider.IAP_PROVIDER_SAMSUNG; loadProvider(); } @@ -176,6 +176,15 @@ public class InAppPurchaseManager { public boolean hasRegisteredProducts() { return getProductsDetailsList().size() > 0; +// switch (mProvider) { +// case IAP_PROVIDER_SAMSUNG: { +// // Note: if NOT enabled - deafault there is no registered yet !!! +// if (!BuildConfig.ENABLE_SAMSUNG_IAP) return false; +// return getProductsDetailsList().size() > 0; +// } +// } +// // Note: deafault there is no registered yet !!! +// return false; } public List toStoreListItems(List productsList) { @@ -201,6 +210,17 @@ public class InAppPurchaseManager { getProductsDetails(); } + public void setSettingsAlwaysAllowed() { + if (mPreferenceHelper != null) { + mPreferenceHelper.setActiveAccountIAPReady(true); + } + } + + public boolean isSettingsAlwaysAllowed() { + if (mPreferenceHelper != null) return mPreferenceHelper.isActiveAccountIAPReady(); + return false; + } + //////////////////////////////////////////////////////////////////////////////////////////////// // Private Helpers @@ -275,7 +295,7 @@ public class InAppPurchaseManager { loadSamsungProvider(); } if (mSamsungInAppPurchase == null) { return; } - mSamsungInAppPurchase.getProductsDetails("consumable,non-consumable,ARS", new OnGetProductsDetailsListener() { + mSamsungInAppPurchase.getProductsDetails("", new OnGetProductsDetailsListener() { @Override public void onGetProducts(ErrorVo _errorVO, ArrayList _productList) { Timber.d("onGetProducts(): ErrorVo = " + _errorVO.dump() + ";\n ProductList = " + _productList); -- GitLab