diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index 00dea1041..5b7ec450f 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -506,10 +506,15 @@ class ChatActivity : } override fun onSaveInstanceState(outState: Bundle) { - chatViewModel.handleOrientationChange() + chatViewModel.handleSavedInstance() super.onSaveInstanceState(outState) } + override fun onRestoreInstanceState(savedInstanceState: Bundle) { + chatViewModel.handleRestoreInstance() + super.onRestoreInstanceState(savedInstanceState) + } + override fun onStop() { super.onStop() active = false diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/io/MediaRecorderManager.kt b/app/src/main/java/com/nextcloud/talk/chat/data/io/MediaRecorderManager.kt index a08ef504e..3ec098483 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/data/io/MediaRecorderManager.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/data/io/MediaRecorderManager.kt @@ -35,6 +35,7 @@ class MediaRecorderManager : LifecycleAwareManager { } var currentVoiceRecordFile: String = "" + private var lockRecording = false enum class MediaRecorderState { INITIAL, @@ -166,6 +167,12 @@ class MediaRecorderManager : LifecycleAwareManager { } override fun handleOnStop() { - stop() + if (!lockRecording) { + stop() + } + } + + fun lockRecording(shouldLock: Boolean) { + lockRecording = shouldLock } } diff --git a/app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt b/app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt index 0a2b4a060..b2d6949b6 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/viewmodels/ChatViewModel.kt @@ -667,8 +667,13 @@ class ChatViewModel @Inject constructor( audioFocusRequestManager.audioFocusRequest(request, callback) } - fun handleOrientationChange() { + fun handleSavedInstance() { _getCapabilitiesViewState.value = GetCapabilitiesStartState + mediaRecorderManager.lockRecording(true) + } + + fun handleRestoreInstance() { + mediaRecorderManager.lockRecording(false) } fun getMessageById(url: String, conversationModel: ConversationModel, messageId: Long): Flow =