From edf42c1c38b0137887dcb8c345a5341213d990ba Mon Sep 17 00:00:00 2001 From: Ergyun Syuleyman Date: Sat, 18 Apr 2020 00:24:53 +0300 Subject: [PATCH] -aaded Audio permission request on clean install and try to start Conference calls --- .../mvp/presenters/AllChatsListPresenter.kt | 11 ++--- .../mvp/presenters/ChatPresenter.java | 9 +++- .../mvp/presenters/HomePresenter.java | 13 +++--- .../mvp/presenters/MainActivityPresenter.kt | 41 +++++++++++++++---- .../communicator/mvp/view/AllChatsListView.kt | 1 + .../communicator/mvp/view/ChatMvpView.java | 4 ++ .../communicator/mvp/view/HomeView.java | 2 + .../mvp/view/MainActivityView.java | 3 ++ .../communicator/ui/BaseNynjaFragment.kt | 1 + .../ui/activities/MainActivity.java | 20 +++++++-- .../fragments/chats/AllChatsListFragment.kt | 18 +++++++- .../ui/fragments/chats/ChatFragment.java | 11 +++++ .../ui/fragments/profile/HomeFragment.java | 14 ++++++- 13 files changed, 122 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/AllChatsListPresenter.kt b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/AllChatsListPresenter.kt index 4f773e8760..3b037c3bbb 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/AllChatsListPresenter.kt +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/AllChatsListPresenter.kt @@ -126,11 +126,12 @@ class AllChatsListPresenter : ConferenceSDKPresenter() { mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto) } - fun navigateCreateNewCall() { - val fto = FragmentTransferObject( - null, - FragmentTransferObject.Type.OpenGroupAudioConferenceCreate, null) - mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto) + fun navigateCreateNewCall(isVideo: Boolean) { + viewState.navigateCreateNewCall(isVideo) +// val fto = FragmentTransferObject( +// null, +// FragmentTransferObject.Type.OpenGroupAudioConferenceCreate, null) +// mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto) } fun navigateTo(screenKey: String) { 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 2a0f5df0f8..6e15eccbd5 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 @@ -2268,14 +2268,19 @@ public class ChatPresenter extends BaseChatPresenter { } } + private void navigateToStartGroupCall(boolean isVideo, Parcelable parcelable) { + getViewState().navigateCreateNewCall(isVideo, parcelable); +// FragmentTransferObject fto = new FragmentTransferObject(mRoom, OpenAudioConferenceCreate); +// mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto); + } + public void startAudioCall() { if (isConferenceActive()) { getViewState().showMessage(R.string.calling_when_active_call); return; } if (mRoom.isGroupOrCalllChat()) { - FragmentTransferObject fto = new FragmentTransferObject(mRoom, OpenAudioConferenceCreate); - mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto); + navigateToStartGroupCall(false, mRoom); } else { mDataManager.startCall(new ContactModel(mRoom.getOnlyMembers().get(0)), false); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java index 2c0c76da7b..5cfa070780 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/presenters/HomePresenter.java @@ -499,12 +499,13 @@ public class HomePresenter extends ConferenceSDKPresenter { mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto); } - public void navigateCreateNewCall() { - FragmentTransferObject fto = new FragmentTransferObject( - null, - FragmentTransferObject.Type.OpenGroupAudioConferenceCreate, - null); - mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto); + public void navigateCreateNewCall(boolean isVideo) { + getViewState().navigateCreateNewCall(isVideo); +// FragmentTransferObject fto = new FragmentTransferObject( +// null, +// FragmentTransferObject.Type.OpenGroupAudioConferenceCreate, +// null); +// mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto); } public void navigateCreateNewScheduledConference() { 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 3b267b1758..95abe848f7 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 @@ -1,6 +1,7 @@ package com.nynja.mobile.communicator.mvp.presenters import android.net.Uri +import android.os.Parcelable import android.util.Pair import com.arellomobile.mvp.InjectViewState import com.nynja.mobile.communicator.BuildConfig @@ -357,19 +358,13 @@ class MainActivityPresenter : ConferenceSDKPresenter() { } HomeActions.VoiceCallAction -> { - val fto = FragmentTransferObject(null, - FragmentTransferObject.Type.OpenGroupAudioConferenceCreate, - null) - mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto) + tryStartCall(true,true, false, null) viewState.closeWheel() } HomeActions.VideoCallAction -> { viewState.showAlertNotSupportedFeature() -// val fto = FragmentTransferObject(null, -// FragmentTransferObject.Type.OpenGroupVideoConferenceCreate, -// null) -// mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto) +// tryStartCall(true, true, true, null) viewState.closeWheel() } @@ -472,6 +467,36 @@ class MainActivityPresenter : ConferenceSDKPresenter() { } } + fun onTryStartCall(createNew: Boolean, isGroup: Boolean, isVideo: Boolean, prevModel: Parcelable?) { + var fto: FragmentTransferObject? = null; + if (isGroup) { + var type: FragmentTransferObject.Type; + if (createNew) { + if (isVideo) { + type = FragmentTransferObject.Type.OpenGroupVideoConferenceCreate + } else { + type = FragmentTransferObject.Type.OpenGroupAudioConferenceCreate + } + fto = FragmentTransferObject(prevModel, type, null) + } else { + if (isVideo) { + type = FragmentTransferObject.Type.OpenVideoConferenceCreate + } else { + type = FragmentTransferObject.Type.OpenAudioConferenceCreate + } + fto = FragmentTransferObject(prevModel, type); + } + } + + if (fto != null) { + mRouter.navigateTo(HomeNavigator.CHOOSE_USER, fto) + } + } + + private fun tryStartCall(createNew: Boolean, isGroup: Boolean, isVideo: Boolean, prevModel: Parcelable?) { + viewState.tryStartCall(createNew, isGroup, isVideo, prevModel); + } + private fun navigateToSupport() { viewState.closeWheel() mRouter.navigateTo(HomeNavigator.SETTINGS_SUPPORT) diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/AllChatsListView.kt b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/AllChatsListView.kt index 24fe6b3330..4af52f95ed 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/AllChatsListView.kt +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/AllChatsListView.kt @@ -11,4 +11,5 @@ interface AllChatsListView : ErrorMvpView { fun showRoomItemActionSheet(room: RoomModel) fun openKeyBoardIfNeeded() fun onRoomCallStateChanges(room: RoomModel?, active: Boolean) + fun navigateCreateNewCall(isVideo: Boolean) } \ No newline at end of file diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChatMvpView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChatMvpView.java index daee2b41e1..b7f3fcc50f 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChatMvpView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/ChatMvpView.java @@ -1,6 +1,7 @@ package com.nynja.mobile.communicator.mvp.view; import android.content.Intent; +import android.os.Parcelable; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.view.View; @@ -327,4 +328,7 @@ public interface ChatMvpView extends BaseChatMvpView { void noSelectedMessagesMessage(); void showRequestPermissionForCall(RejoinConferenceCallData rejoinData); + + void navigateCreateNewCall(boolean isVideo, Parcelable prevModel); + } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/HomeView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/HomeView.java index 1fc5277d82..ba73730026 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/HomeView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/HomeView.java @@ -45,4 +45,6 @@ public interface HomeView extends ErrorMvpView { void onRoomCallStateChanges(String roomId, boolean active); + void navigateCreateNewCall(boolean isVideo); + } diff --git a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/MainActivityView.java b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/MainActivityView.java index c191aea0cd..e2b7a3e309 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/mvp/view/MainActivityView.java +++ b/app/src/main/java/com/nynja/mobile/communicator/mvp/view/MainActivityView.java @@ -1,5 +1,6 @@ package com.nynja.mobile.communicator.mvp.view; +import android.os.Parcelable; import android.support.annotation.StringRes; import com.arellomobile.mvp.viewstate.strategy.OneExecutionStateStrategy; @@ -71,4 +72,6 @@ public interface MainActivityView extends JoinGroupView { void stopActiveCallNotification(); void showPurchaseDialog(boolean isModerator, final String message); + + void tryStartCall(boolean createNew, boolean isGroup, boolean isVideo, Parcelable prevModel); } diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/BaseNynjaFragment.kt b/app/src/main/java/com/nynja/mobile/communicator/ui/BaseNynjaFragment.kt index 5ba9ea6cd8..7d535c557a 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/BaseNynjaFragment.kt +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/BaseNynjaFragment.kt @@ -12,6 +12,7 @@ import android.view.View import android.view.ViewGroup import com.arellomobile.mvp.MvpAppCompatActivity import com.arellomobile.mvp.MvpDelegate +import com.nynja.mobile.communicator.ui.base.BaseActivity import timber.log.Timber /** 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 714434553c..68d5b30f99 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 @@ -383,16 +383,25 @@ public class MainActivity extends BaseActivity implements MainActivityView, mPresenter.navigateByKey(intent.getStringExtra(OPEN_SCREEN_KEY)); } } - private void onAnswer(boolean enableVideo) { + onCallPermission(true, enableVideo, + false, false, null); // no sense for incomming calls !!! + } + + private void onCallPermission(boolean incomming, boolean enableVideo, + boolean createNew, boolean isGroup, Parcelable prevModel) { ArrayList permissions = getPermissionsForCall(enableVideo); String[] perms = new String[0]; addDisposable(mRxPermissions.requestEachCombined(permissions.toArray(perms)) .subscribe(permission -> { if (permission.granted) { Timber.d("All permission(s) requests finished"); - mPresenter.navigateToActiveCall(); - mPresenter.clearIncomingCallNotification(); + if (incomming) { + mPresenter.navigateToActiveCall(); + mPresenter.clearIncomingCallNotification(); + } else { + mPresenter.onTryStartCall(createNew, isGroup, enableVideo, prevModel); + } } else if (!permission.shouldShowRequestPermissionRationale) { ArrayList notGranted = getNotGrantedCallingPermissions(enableVideo); if (notGranted.size() > 0) { @@ -649,6 +658,11 @@ public class MainActivity extends BaseActivity implements MainActivityView, } } + @Override + public void tryStartCall(boolean createNew, boolean isGroup, boolean isVideo, Parcelable prevModel) { + onCallPermission(false, isVideo, createNew, isGroup, prevModel); + } + @Override public void openActiveConference() { mPresenter.navigateToActiveCall(); diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/AllChatsListFragment.kt b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/AllChatsListFragment.kt index b77aa8c6e3..19904dc946 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/AllChatsListFragment.kt +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/chats/AllChatsListFragment.kt @@ -3,6 +3,7 @@ package com.nynja.mobile.communicator.ui.fragments.chats import android.content.Context import android.os.Bundle import android.os.Handler +import android.os.Parcelable import android.support.annotation.NonNull import android.support.v7.widget.AppCompatRadioButton import android.support.v7.widget.LinearLayoutManager @@ -27,6 +28,7 @@ import com.nynja.mobile.communicator.interfaces.OnItemClickListener import com.nynja.mobile.communicator.interfaces.OnTimelineLongClickListener import com.nynja.mobile.communicator.mvp.presenters.AllChatsListPresenter import com.nynja.mobile.communicator.mvp.view.AllChatsListView +import com.nynja.mobile.communicator.ui.activities.MainActivity import com.nynja.mobile.communicator.ui.adapters.RoomListAdapter import com.nynja.mobile.communicator.ui.base.BaseFragment import com.nynja.mobile.communicator.ui.wheel.entity.Factory @@ -154,6 +156,20 @@ class AllChatsListFragment : BaseFragment(), OnItemClickListener, All } } + @Synchronized + override fun navigateCreateNewCall(isVideo: Boolean) { + if (activity != null) { + try { + val mainActivity = activity as MainActivity + if (mainActivity != null) { + mainActivity.tryStartCall(true, true, isVideo, null) + } + } catch (ex: Exception) { + Timber.e(ex); + } + } + } + override fun getWheelActions(): List? { return Factory.getInstance().getHomeActionsItems(mPresenter.isEnabledCallOptions) } @@ -180,7 +196,7 @@ class AllChatsListFragment : BaseFragment(), OnItemClickListener, All PlusButtonAction.NEW_GROUP.ordinal -> mPresenter.navigateCreateNewGroup() - PlusButtonAction.NEW_CALL.ordinal -> mPresenter.navigateCreateNewCall() + PlusButtonAction.NEW_CALL.ordinal -> mPresenter.navigateCreateNewCall(false) PlusButtonAction.NEW_CONTACT.ordinal -> mPresenter.navigateTo(HomeNavigator.ADD_CONTACTS) } 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 eb2e0d6b9c..6224cd2154 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 @@ -14,6 +14,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Looper; +import android.os.Parcelable; import android.provider.MediaStore; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -3050,6 +3051,16 @@ public class ChatFragment extends BaseChatFragment implements ChatMvpView, }, Timber::e)); } + @Override public void navigateCreateNewCall(boolean isVideo, Parcelable parcelable) { + if (getActivity() != null && getActivity() instanceof MainActivity) { + try { + ((MainActivity)getActivity()).tryStartCall(false, true, isVideo, parcelable); + } catch (Exception ex) { + Timber.e(ex); + } + } + } + private void checkForDraft() { if (mMessageText != null) { String draftText = mMessageText.getText() == null ? null : mMessageText.getText().toString(); diff --git a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/profile/HomeFragment.java b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/profile/HomeFragment.java index 3a072a85d0..a716aa0537 100644 --- a/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/profile/HomeFragment.java +++ b/app/src/main/java/com/nynja/mobile/communicator/ui/fragments/profile/HomeFragment.java @@ -3,6 +3,7 @@ package com.nynja.mobile.communicator.ui.fragments.profile; import android.app.Dialog; import android.os.Bundle; import android.os.Handler; +import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; @@ -50,6 +51,7 @@ import java.util.List; import butterknife.BindView; import butterknife.OnClick; +import timber.log.Timber; /** * Created by dmitro.boiko on 27/06/2017. @@ -187,7 +189,7 @@ public class HomeFragment extends BaseFragment implements HomeView, break; case NEW_CALL_ACTION: - mPresenter.navigateCreateNewCall(); + mPresenter.navigateCreateNewCall(false); break; case NEW_CONTACT_ACTION: @@ -253,6 +255,16 @@ public class HomeFragment extends BaseFragment implements HomeView, mAdapter.notifyDataSetChanged(); } + @Override public void navigateCreateNewCall(boolean isVideo) { + if (getActivity() != null && getActivity() instanceof MainActivity) { + try { + ((MainActivity)getActivity()).tryStartCall(true, true, isVideo, null); + } catch (Exception ex) { + Timber.e(ex); + } + } + } + private void setContactRequestCount(int count) { if (count == 0) { mContactRequestsCountLabel.setVisibility(View.GONE); -- GitLab