From 215128c213e94d3e8a9e85271d26df133f1753cf Mon Sep 17 00:00:00 2001 From: Florian Renaud Date: Mon, 17 Oct 2022 22:58:12 +0200 Subject: [PATCH] Voice Broadcast - Add timeline item listening state --- .../factory/VoiceBroadcastItemFactory.kt | 12 +++++- .../item/MessageVoiceBroadcastItem.kt | 42 ++++++++++++++++--- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/VoiceBroadcastItemFactory.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/VoiceBroadcastItemFactory.kt index aae2f67631..f2dfb020a1 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/VoiceBroadcastItemFactory.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/VoiceBroadcastItemFactory.kt @@ -15,8 +15,8 @@ */ package im.vector.app.features.home.room.detail.timeline.factory -import im.vector.app.core.extensions.getVectorLastMessageContent import im.vector.app.features.home.room.detail.timeline.TimelineEventController +import im.vector.app.features.home.room.detail.timeline.helper.AudioMessagePlaybackTracker import im.vector.app.features.home.room.detail.timeline.helper.AvatarSizeProvider import im.vector.app.features.home.room.detail.timeline.helper.TimelineEventsGroup import im.vector.app.features.home.room.detail.timeline.helper.VoiceBroadcastEventsGroup @@ -25,10 +25,14 @@ import im.vector.app.features.home.room.detail.timeline.item.MessageVoiceBroadca import im.vector.app.features.home.room.detail.timeline.item.MessageVoiceBroadcastItem_ import im.vector.app.features.voicebroadcast.model.MessageVoiceBroadcastInfoContent import im.vector.app.features.voicebroadcast.model.VoiceBroadcastState +import im.vector.app.features.voicebroadcast.model.asVoiceBroadcastEvent +import org.matrix.android.sdk.api.session.Session import javax.inject.Inject class VoiceBroadcastItemFactory @Inject constructor( + private val session: Session, private val avatarSizeProvider: AvatarSizeProvider, + private val audioMessagePlaybackTracker: AudioMessagePlaybackTracker, ) { fun create( @@ -42,11 +46,15 @@ class VoiceBroadcastItemFactory @Inject constructor( if (messageContent.voiceBroadcastState != VoiceBroadcastState.STARTED) return null val voiceBroadcastEventsGroup = eventsGroup?.let { VoiceBroadcastEventsGroup(it) } ?: return null val mostRecentTimelineEvent = voiceBroadcastEventsGroup.getLastDisplayableEvent() - val mostRecentMessageContent = mostRecentTimelineEvent.root.asVoiceBroadcastEvent()?.content ?: return null + val mostRecentEvent = mostRecentTimelineEvent.root.asVoiceBroadcastEvent() + val mostRecentMessageContent = mostRecentEvent?.content ?: return null + val isRecording = mostRecentMessageContent.voiceBroadcastState != VoiceBroadcastState.STOPPED && mostRecentEvent.root.stateKey == session.myUserId return MessageVoiceBroadcastItem_() .attributes(attributes) .highlighted(highlight) .voiceBroadcastState(mostRecentMessageContent.voiceBroadcastState) + .recording(isRecording) + .audioMessagePlaybackTracker(audioMessagePlaybackTracker) .leftGuideline(avatarSizeProvider.leftGuideline) .callback(callback) } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceBroadcastItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceBroadcastItem.kt index 14a4fc6b07..1927024a36 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceBroadcastItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceBroadcastItem.kt @@ -22,8 +22,10 @@ import android.widget.TextView import com.airbnb.epoxy.EpoxyAttribute import com.airbnb.epoxy.EpoxyModelClass import im.vector.app.R -import im.vector.app.features.home.room.detail.RoomDetailAction +import im.vector.app.features.home.room.detail.RoomDetailAction.VoiceBroadcastAction import im.vector.app.features.home.room.detail.timeline.TimelineEventController +import im.vector.app.features.home.room.detail.timeline.helper.AudioMessagePlaybackTracker +import im.vector.app.features.home.room.detail.timeline.helper.AudioMessagePlaybackTracker.Listener.State import im.vector.app.features.voicebroadcast.model.VoiceBroadcastState @EpoxyModelClass @@ -35,6 +37,15 @@ abstract class MessageVoiceBroadcastItem : AbsMessageItem