diff --git a/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt b/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt index 8e55029..e6ee2fd 100644 --- a/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt +++ b/android/app/src/main/java/ru/daemonlord/messenger/ui/chat/ChatScreen.kt @@ -2996,6 +2996,8 @@ private fun ChatInfoTabContent( return } if (tab == ChatInfoTab.Voice) { + var voiceTabActiveSourceId by remember(entries) { mutableStateOf(null) } + var voiceTabForceStopSourceId by remember(entries) { mutableStateOf(null) } LazyColumn( modifier = Modifier .fillMaxWidth() @@ -3052,11 +3054,28 @@ private fun ChatInfoTabContent( playbackTitle = entry.title, playbackSubtitle = entry.subtitle, messageId = entry.sourceMessageId ?: entry.title.hashCode().toLong(), - onPlaybackChanged = {}, - forceStopAudioSourceId = null, + onPlaybackChanged = { playback -> + if (playback.isPlaying) { + val previous = voiceTabActiveSourceId + if (previous != null && previous != playback.sourceId) { + voiceTabForceStopSourceId = previous + } + voiceTabActiveSourceId = playback.sourceId + } else if (voiceTabActiveSourceId == playback.sourceId) { + voiceTabActiveSourceId = null + } + }, + forceStopAudioSourceId = voiceTabForceStopSourceId, forceToggleAudioSourceId = null, forceCycleSpeedAudioSourceId = null, - onForceStopAudioSourceHandled = {}, + onForceStopAudioSourceHandled = { sourceId -> + if (voiceTabForceStopSourceId == sourceId) { + voiceTabForceStopSourceId = null + } + if (voiceTabActiveSourceId == sourceId) { + voiceTabActiveSourceId = null + } + }, onForceToggleAudioSourceHandled = {}, onForceCycleSpeedAudioSourceHandled = {}, )