From 1b07cd358f349adb8ba9a130c1d224188451241d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 30 Aug 2022 16:03:04 +0200 Subject: [PATCH] Disable conference waiting room join button if network is unreachable --- .../ConferenceWaitingRoomFragment.kt | 8 ++++++++ .../ConferenceWaitingRoomViewModel.kt | 20 +++++++++++++++++++ .../conference_waiting_room_fragment.xml | 2 +- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/linphone/activities/main/conference/fragments/ConferenceWaitingRoomFragment.kt b/app/src/main/java/org/linphone/activities/main/conference/fragments/ConferenceWaitingRoomFragment.kt index a7cd3ae31..d0dad5509 100644 --- a/app/src/main/java/org/linphone/activities/main/conference/fragments/ConferenceWaitingRoomFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/conference/fragments/ConferenceWaitingRoomFragment.kt @@ -117,6 +117,14 @@ class ConferenceWaitingRoomFragment : GenericFragment() + val networkReachable = MutableLiveData() + val askPermissionEvent: MutableLiveData> by lazy { MutableLiveData>() } @@ -75,6 +77,10 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() { MutableLiveData>() } + val networkNotReachableEvent: MutableLiveData> by lazy { + MutableLiveData>() + } + private val callParams: CallParams = coreContext.core.createCallParams(null)!! private val listener: CoreListenerStub = object : CoreListenerStub() { @@ -112,12 +118,26 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() { leaveWaitingRoomEvent.value = Event(true) } } + + override fun onNetworkReachable(core: Core, reachable: Boolean) { + Log.i("[Conference Waiting Room] Network reachability changed: [$reachable]") + networkReachable.value = reachable + if (!reachable) { + networkNotReachableEvent.value = Event(true) + } + } } init { val core = coreContext.core core.addListener(listener) + val reachable = core.isNetworkReachable + networkReachable.value = reachable + if (!reachable) { + networkNotReachableEvent.value = Event(true) + } + callParams.isMicEnabled = PermissionHelper.get().hasRecordAudioPermission() && coreContext.core.isMicEnabled Log.i("[Conference Waiting Room] Microphone will be ${if (callParams.isMicEnabled) "enabled" else "muted"}") updateMicState() diff --git a/app/src/main/res/layout/conference_waiting_room_fragment.xml b/app/src/main/res/layout/conference_waiting_room_fragment.xml index d0bb03548..32f0d293f 100644 --- a/app/src/main/res/layout/conference_waiting_room_fragment.xml +++ b/app/src/main/res/layout/conference_waiting_room_fragment.xml @@ -113,7 +113,7 @@ android:layout_marginEnd="20dp" android:layout_weight="1" android:background="@drawable/button_orange_background" - android:enabled="@{!viewModel.joinInProgress}" + android:enabled="@{viewModel.networkReachable && !viewModel.joinInProgress}" android:gravity="center" android:onClick="@{() -> viewModel.start()}" android:paddingLeft="20dp"