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 4f773e876084eb7fb6ebc5c9cc88d4ee9fd218c5..3b037c3bbb1a6c968f466396e7db8a24bd417476 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 2a0f5df0f8d0c4ddcff9f98dba11bfff7b6451b8..6e15eccbd503b6eecc058c6629934d5c5a56e010 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 2c0c76da7b7f157b4a89576cfe161ccbb0396be0..5cfa0707805038815350f1f3a4341cc625ef5d26 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 3b267b17582c2931a7d2ca880448f78084f512bd..95abe848f7e1b4ade081b5ff08c94bf681e71268 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 24fe6b3330be5759ca68963d6aad309055643cf6..4af52f95ede5997260874d6e104816b8a6f2ff5b 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 daee2b41e1cf0cfc7eb39e369571617945b49c84..b7f3fcc50fe65dce1989558bc493e085a64b6849 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 1fc5277d8277eb48a9d18ffc9f6a89b3d80709df..ba73730026850c04657ce84a23745fbd322751a2 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 c191aea0cdb3120af73542ec70fbf0ec8b3a1adc..e2b7a3e30956aa0e99f7ee7869e3d587f7e56fbf 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 5ba9ea6cd85e940f5ce807c2c5214aa18cc534fc..7d535c557af55bfc60805d77a5db01f4fcf27a12 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 714434553c06b42cacd7af8475d8f7a95a39892b..68d5b30f994864a230b2e59c89171d5b07eba62f 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 b77aa8c6e33e0efcb62c41f4768b90619414a78a..19904dc946627fbbd8c333a3ae44ee402d503986 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 eb2e0d6b9cf344102734fb3b6b40220668cbf33e..6224cd2154fc1e89bdfeee9e2c69b4a1ae9c8cf3 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 3a072a85d0e17131198b834f4335a69dcfed4f37..a716aa0537171c46bf15b952c280b0f837c30344 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);