From 18fc7642e8dfe38616f867d51e6b87237440e602 Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Tue, 5 May 2020 18:43:02 +0300 Subject: [PATCH] -enabling video conferece after 10 quick taps on the malert message for <= 5 seconds --- .../data/sdk/calls/ConferenceSDKModule.java | 2 +- .../mvp/presenters/ChatPresenter.java | 7 ++- .../mvp/presenters/MainActivityPresenter.kt | 7 ++- .../ui/activities/MainActivity.java | 2 +- .../ui/fragments/chats/ChatFragment.java | 2 +- .../conference/ConferenceCallFragment.java | 13 ++++-- .../communicator/utils/DialogFactory.java | 43 ++++++++++++++++++- 7 files changed, 65 insertions(+), 11 deletions(-) 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 127b277d0c..05a5b72a98 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,7 +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() && + //!InAppPurchaseManager.getInstance(getContext()).isSettingsAlwaysAllowed() && hasRegisteredProducts && isConferenceHasRestrictedDuration); diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java index 60b0ae62df..97f0ac33be 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/ChatPresenter.java @@ -93,6 +93,7 @@ import com.nynja.mobile.communicator.utils.container.data.model.Sticker; import com.nynja.mobile.communicator.utils.container.data.packs.NynjaStickerPack; import com.nynja.mobile.communicator.utils.contextmenu.ContextMenuManager; import com.nynja.mobile.communicator.utils.exeption.FileDoesNotExistExeption; +import com.nynja.mobile.communicator.utils.iap.InAppPurchaseManager; import com.nynja.mobile.communicator.utils.navigation.navigators.HomeNavigator; import com.nynja.mobile.communicator.utils.navigation.navigators.NynjaNavigator; import com.nynja.mobile.communicator.utils.tracking.AppsTrackerConsts; @@ -2298,7 +2299,11 @@ public class ChatPresenter extends BaseChatPresenter { // FragmentTransferObject fto = new FragmentTransferObject(null, mRoom, OpenVideoConferenceCreate); // mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto); } else { - getViewState().showMessage(R.string.call_start_video_conference_alert); + if (!InAppPurchaseManager.getInstance(mDataManager.getContext()).isSettingsAlwaysAllowed()) { + getViewState().showMessage(R.string.call_start_video_conference_alert); + } else { + navigateToStartGroupCall(true, mRoom); + } } } else { mDataManager.startCall(new ContactModel(mRoom.getOnlyMembers().get(0)), true); diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MainActivityPresenter.kt b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MainActivityPresenter.kt index 923269e60c..89994c6709 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MainActivityPresenter.kt +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/MainActivityPresenter.kt @@ -33,6 +33,7 @@ import com.nynja.mobile.communicator.utils.Consts import com.nynja.mobile.communicator.utils.NynjaRequestCodes import com.nynja.mobile.communicator.utils.SecurityCheck import com.nynja.mobile.communicator.utils.StringUtils +import com.nynja.mobile.communicator.utils.iap.InAppPurchaseManager import com.nynja.mobile.communicator.utils.navigation.Screen import com.nynja.mobile.communicator.utils.navigation.navigators.HomeNavigator import com.nynja.mobile.communicator.utils.navigation.navigators.NynjaNavigator @@ -372,7 +373,11 @@ class MainActivityPresenter : ConferenceSDKPresenter() { if (Consts.CLIENT_ALLOWED_VIDEO_CONFERENCE) { tryStartCall(true, true, true, null) } else { - viewState.showAlertMessage(R.string.call_start_video_conference_alert) + if (!InAppPurchaseManager.getInstance(mDataManager.context).isSettingsAlwaysAllowed()) { + viewState.showAlertMessage(R.string.call_start_video_conference_alert) + } else { + tryStartCall(true, true, true, null) + } } viewState.closeWheel() } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java index cc4a659d41..c11eb28521 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/activities/MainActivity.java @@ -670,7 +670,7 @@ public class MainActivity extends BaseActivity implements MainActivityView, @Override public void showAlertMessage(int res) { - DialogFactory.showAlertDialog(this, + DialogFactory.showModalAlertDialog(this, getString(res), getString(R.string.signin_text_ok), (dialog, which) -> dialog.dismiss()); diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChatFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChatFragment.java index cc4579d2c1..d54726d1a4 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChatFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/ChatFragment.java @@ -2911,7 +2911,7 @@ public class ChatFragment extends BaseChatFragment implements ChatMvpView, @Override public void showMessage(int stringRes) { - DialogFactory.showAlertDialog(getContext(), + DialogFactory.showModalAlertDialog(getContext(), getString(stringRes), getString(R.string.signin_text_ok), (dialog, which) -> dialog.dismiss()); diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/conference/ConferenceCallFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/conference/ConferenceCallFragment.java index 7122cc65bf..249f902b47 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/conference/ConferenceCallFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/conference/ConferenceCallFragment.java @@ -54,6 +54,7 @@ import com.nynja.mobile.communicator.utils.DialogFactory; import com.nynja.mobile.communicator.utils.ImageUtils; import com.nynja.mobile.communicator.utils.PermissionHelper; import com.nynja.mobile.communicator.utils.StringUtils; +import com.nynja.mobile.communicator.utils.iap.InAppPurchaseManager; import org.webrtc.ContextUtils; import org.webrtc.EglBase; @@ -299,10 +300,14 @@ public class ConferenceCallFragment extends BaseFragment implements CallView, if (Consts.CLIENT_ALLOWED_VIDEO_CONFERENCE) { onClickCameraButton(); } else { - DialogFactory.showAlertDialog(getContext(), - getString(R.string.call_start_video_conference_alert), - getString(R.string.signin_text_ok), - (dialog, which) -> dialog.dismiss()); + if (!InAppPurchaseManager.getInstance(getContext()).isSettingsAlwaysAllowed()) { + DialogFactory.showModalAlertDialog(getContext(), + getString(R.string.call_start_video_conference_alert), + getString(R.string.signin_text_ok), + (dialog, which) -> dialog.dismiss()); + } else { + onClickCameraButton(); + } } } else { onClickCameraButton(); 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 d0fdb7f1b3..4354878781 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 @@ -568,8 +568,8 @@ public class DialogFactory { if (mLastMessageTouchCount >= 10) { mLastMessageTouchTime = -1; mLastMessageTouchCount = 0; - InAppPurchaseManager.getInstance(context).setSettingsAlwaysAllowed(); - dialog.dismiss(); + //InAppPurchaseManager.getInstance(context).setSettingsAlwaysAllowed(); + //dialog.dismiss(); } } return false; @@ -612,4 +612,43 @@ public class DialogFactory { return dialog; } + @SuppressLint("ClickableViewAccessibility") + public static void showModalAlertDialog(@NonNull Context context, + @Nullable String message, + @Nullable String positiveButton, + @Nullable DialogInterface.OnClickListener listener) { + AlertDialog.Builder builder = new AlertDialog.Builder(context) + .setMessage(message) + .setPositiveButton(positiveButton, listener); + builder.setCancelable(false); + Dialog dialog = builder.create(); + dialog.show(); + + TextView tv = dialog.findViewById(android.R.id.message); + 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); + } + + } \ No newline at end of file -- GitLab