diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/VoiceMessagePlaybackTracker.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/VoiceMessagePlaybackTracker.kt index ea6029a075..746dea13f7 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/VoiceMessagePlaybackTracker.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/VoiceMessagePlaybackTracker.kt @@ -37,6 +37,10 @@ class VoiceMessagePlaybackTracker @Inject constructor() { } } + fun unTrack(id: String) { + listeners.remove(id) + } + fun makeAllPlaybacksIdle() { listeners.keys.forEach { key -> val currentPlaybackTime = getPlaybackTime(key) @@ -95,9 +99,9 @@ class VoiceMessagePlaybackTracker @Inject constructor() { fun getPlaybackTime(id: String): Int { return when (val state = states[id]) { - is Listener.State.Playing -> state.playbackTime - is Listener.State.Idle -> state.playbackTime - else -> 0 + is Listener.State.Playing -> state.playbackTime + is Listener.State.Idle -> state.playbackTime + else -> 0 } } @@ -118,7 +122,7 @@ class VoiceMessagePlaybackTracker @Inject constructor() { fun onUpdate(state: State) sealed class State { - data class Idle(val playbackTime: Int): State() + data class Idle(val playbackTime: Int) : State() data class Playing(val playbackTime: Int) : State() data class Recording(val amplitudeList: List) : State() } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt index f3d50137c8..a59208e47f 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt @@ -115,6 +115,7 @@ abstract class MessageVoiceItem : AbsMessageItem() { super.unbind(holder) contentUploadStateTrackerBinder.unbind(attributes.informationData.eventId) contentDownloadStateTrackerBinder.unbind(mxcUrl) + voiceMessagePlaybackTracker.unTrack(attributes.informationData.eventId) } override fun getViewType() = STUB_ID