Ask for record audio permission when trying to record a voice message if not granted yet

This commit is contained in:
Sylvain Berfini 2023-11-16 15:30:59 +01:00
parent 26b3fe67a3
commit 73229f51a1
2 changed files with 25 additions and 2 deletions

View file

@ -19,6 +19,7 @@
*/
package org.linphone.ui.main.chat.fragment
import android.Manifest
import android.app.Dialog
import android.content.ClipData
import android.content.ClipboardManager
@ -153,6 +154,17 @@ class ConversationFragment : GenericFragment() {
}
}
private val requestPermissionLauncher = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { isGranted ->
if (isGranted) {
Log.i("$TAG RECORD_AUDIO permission has been granted, starting voice message recording")
sendMessageViewModel.startVoiceMessageRecording()
} else {
Log.e("$TAG RECORD_AUDIO permission has been denied")
}
}
private var bottomSheetDeliveryModel: ChatMessageDeliveryModel? = null
private var bottomSheetReactionsModel: ChatMessageReactionsModel? = null
@ -325,6 +337,13 @@ class ConversationFragment : GenericFragment() {
}
}
sendMessageViewModel.askRecordAudioPermissionEvent.observe(viewLifecycleOwner) {
it.consume {
Log.w("$TAG Asking for RECORD_AUDIO permission")
requestPermissionLauncher.launch(Manifest.permission.RECORD_AUDIO)
}
}
viewModel.searchFilter.observe(viewLifecycleOwner) { filter ->
viewModel.applyFilter(filter.trim())
}

View file

@ -108,6 +108,10 @@ class SendMessageInConversationViewModel @UiThread constructor() : ViewModel() {
MutableLiveData<Event<String>>()
}
val askRecordAudioPermissionEvent: MutableLiveData<Event<Boolean>> by lazy {
MutableLiveData<Event<Boolean>>()
}
lateinit var chatRoom: ChatRoom
private var chatMessageToReplyTo: ChatMessage? = null
@ -343,9 +347,9 @@ class SendMessageInConversationViewModel @UiThread constructor() : ViewModel() {
) != PackageManager.PERMISSION_GRANTED
) {
Log.w(
"$TAG Can't start voice message recording, AUDIO_RECORD permission wasn't granted yet"
"$TAG Can't start voice message recording, RECORD_AUDIO permission wasn't granted yet"
)
// TODO: request record audio permission
askRecordAudioPermissionEvent.postValue(Event(true))
return
}