Disable conference waiting room join button if network is unreachable

This commit is contained in:
Sylvain Berfini 2022-08-30 16:03:04 +02:00
parent 0a0221c9b0
commit 1b07cd358f
3 changed files with 29 additions and 1 deletions

View file

@ -117,6 +117,14 @@ class ConferenceWaitingRoomFragment : GenericFragment<ConferenceWaitingRoomFragm
} }
} }
viewModel.networkNotReachableEvent.observe(
viewLifecycleOwner
) {
it.consume {
(activity as MainActivity).showSnackBar(R.string.call_error_network_unreachable)
}
}
checkPermissions() checkPermissions()
} }

View file

@ -59,6 +59,8 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
val joinInProgress = MutableLiveData<Boolean>() val joinInProgress = MutableLiveData<Boolean>()
val networkReachable = MutableLiveData<Boolean>()
val askPermissionEvent: MutableLiveData<Event<String>> by lazy { val askPermissionEvent: MutableLiveData<Event<String>> by lazy {
MutableLiveData<Event<String>>() MutableLiveData<Event<String>>()
} }
@ -75,6 +77,10 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
MutableLiveData<Event<Boolean>>() MutableLiveData<Event<Boolean>>()
} }
val networkNotReachableEvent: MutableLiveData<Event<Boolean>> by lazy {
MutableLiveData<Event<Boolean>>()
}
private val callParams: CallParams = coreContext.core.createCallParams(null)!! private val callParams: CallParams = coreContext.core.createCallParams(null)!!
private val listener: CoreListenerStub = object : CoreListenerStub() { private val listener: CoreListenerStub = object : CoreListenerStub() {
@ -112,12 +118,26 @@ class ConferenceWaitingRoomViewModel : MessageNotifierViewModel() {
leaveWaitingRoomEvent.value = Event(true) 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 { init {
val core = coreContext.core val core = coreContext.core
core.addListener(listener) core.addListener(listener)
val reachable = core.isNetworkReachable
networkReachable.value = reachable
if (!reachable) {
networkNotReachableEvent.value = Event(true)
}
callParams.isMicEnabled = PermissionHelper.get().hasRecordAudioPermission() && coreContext.core.isMicEnabled callParams.isMicEnabled = PermissionHelper.get().hasRecordAudioPermission() && coreContext.core.isMicEnabled
Log.i("[Conference Waiting Room] Microphone will be ${if (callParams.isMicEnabled) "enabled" else "muted"}") Log.i("[Conference Waiting Room] Microphone will be ${if (callParams.isMicEnabled) "enabled" else "muted"}")
updateMicState() updateMicState()

View file

@ -113,7 +113,7 @@
android:layout_marginEnd="20dp" android:layout_marginEnd="20dp"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/button_orange_background" android:background="@drawable/button_orange_background"
android:enabled="@{!viewModel.joinInProgress}" android:enabled="@{viewModel.networkReachable &amp;&amp; !viewModel.joinInProgress}"
android:gravity="center" android:gravity="center"
android:onClick="@{() -> viewModel.start()}" android:onClick="@{() -> viewModel.start()}"
android:paddingLeft="20dp" android:paddingLeft="20dp"