From 887056406641199fa95a3ea99574a283b4b6ceaa Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 25 Jan 2024 16:42:50 +0100 Subject: [PATCH] Go to waiting room when clicking on call icon in calls history if conference call log + enabled video by default in waiting room when possible --- .../linphone/ui/call/model/ConferenceModel.kt | 2 +- .../main/history/fragment/HistoryListFragment.kt | 16 +++++++++++++--- .../viewmodel/MeetingWaitingRoomViewModel.kt | 12 +++++++++--- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/call/model/ConferenceModel.kt b/app/src/main/java/org/linphone/ui/call/model/ConferenceModel.kt index 9c39f41d0..cf2a26f11 100644 --- a/app/src/main/java/org/linphone/ui/call/model/ConferenceModel.kt +++ b/app/src/main/java/org/linphone/ui/call/model/ConferenceModel.kt @@ -342,7 +342,7 @@ class ConferenceModel { } if (meDeviceData != null) { val index = sortedList.indexOf(meDeviceData) - val expectedIndex = sortedList.size - 1 + val expectedIndex = sortedList.size - 1 // TODO FIXME : use different order for active speaker layout & grid layout if (index != expectedIndex) { Log.i( "$TAG Me device data is at index $index, moving it to index $expectedIndex" diff --git a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt index f27c6ca22..f817c5f53 100644 --- a/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/history/fragment/HistoryListFragment.kt @@ -170,9 +170,19 @@ class HistoryListFragment : AbstractTopBarFragment() { adapter.callLogCallBackClickedEvent.observe(viewLifecycleOwner) { it.consume { model -> - coreContext.postOnCoreThread { - Log.i("$TAG Starting call to [${model.address.asStringUriOnly()}]") - coreContext.startCall(model.address) + coreContext.postOnCoreThread { core -> + val conferenceInfo = core.findConferenceInformationFromUri(model.address) + if (conferenceInfo != null) { + Log.i( + "$TAG Going to waiting room for conference [${conferenceInfo.subject}]" + ) + sharedViewModel.goToMeetingWaitingRoomEvent.postValue( + Event(model.address.asStringUriOnly()) + ) + } else { + Log.i("$TAG Starting call to [${model.address.asStringUriOnly()}]") + coreContext.startCall(model.address) + } } } } diff --git a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt index 543e4dcb0..e18f37e0f 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/MeetingWaitingRoomViewModel.kt @@ -19,8 +19,11 @@ */ package org.linphone.ui.main.meetings.viewmodel +import android.Manifest +import android.content.pm.PackageManager import androidx.annotation.UiThread import androidx.annotation.WorkerThread +import androidx.core.app.ActivityCompat import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import org.linphone.LinphoneApplication.Companion.coreContext @@ -215,9 +218,12 @@ class MeetingWaitingRoomViewModel @UiThread constructor() : ViewModel() { private fun configureWaitingRoom() { val core = coreContext.core - isVideoEnabled.postValue( - core.isVideoEnabled && core.videoActivationPolicy.automaticallyInitiate - ) + val cameraPermissionGranted = ActivityCompat.checkSelfPermission( + coreContext.context, + Manifest.permission.CAMERA + ) == PackageManager.PERMISSION_GRANTED + isVideoEnabled.postValue(core.isVideoEnabled && cameraPermissionGranted) + isSwitchCameraAvailable.postValue(coreContext.showSwitchCameraButton()) isMicrophoneMuted.postValue(!core.isMicEnabled)