Skip to content

Commit 4022247

Browse files
author
Florian Renaud
committed
Voice Broadcast - Add voice message extensions
1 parent 16c27ba commit 4022247

File tree

3 files changed

+38
-8
lines changed

3 files changed

+38
-8
lines changed

vector/src/main/java/im/vector/app/features/home/room/detail/timeline/factory/MessageItemFactory.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ import im.vector.app.features.home.room.detail.timeline.helper.LocationPinProvid
4444
import im.vector.app.features.home.room.detail.timeline.helper.MessageInformationDataFactory
4545
import im.vector.app.features.home.room.detail.timeline.helper.MessageItemAttributesFactory
4646
import im.vector.app.features.home.room.detail.timeline.helper.TimelineMediaSizeProvider
47-
import im.vector.app.features.home.room.detail.timeline.helper.VoiceBroadcastEventsGroup
4847
import im.vector.app.features.home.room.detail.timeline.item.AbsMessageItem
4948
import im.vector.app.features.home.room.detail.timeline.item.MessageAudioItem
5049
import im.vector.app.features.home.room.detail.timeline.item.MessageAudioItem_
@@ -79,6 +78,7 @@ import im.vector.app.features.media.ImageContentRenderer
7978
import im.vector.app.features.media.VideoContentRenderer
8079
import im.vector.app.features.settings.VectorPreferences
8180
import im.vector.app.features.voice.AudioWaveformView
81+
import im.vector.app.features.voicebroadcast.isVoiceBroadcast
8282
import im.vector.app.features.voicebroadcast.model.MessageVoiceBroadcastInfoContent
8383
import im.vector.lib.core.utils.epoxy.charsequence.toEpoxyCharSequence
8484
import me.gujun.android.span.span
@@ -103,6 +103,7 @@ import org.matrix.android.sdk.api.session.room.model.message.MessageTextContent
103103
import org.matrix.android.sdk.api.session.room.model.message.MessageType
104104
import org.matrix.android.sdk.api.session.room.model.message.MessageVerificationRequestContent
105105
import org.matrix.android.sdk.api.session.room.model.message.MessageVideoContent
106+
import org.matrix.android.sdk.api.session.room.model.message.asMessageAudioEvent
106107
import org.matrix.android.sdk.api.session.room.model.message.getFileUrl
107108
import org.matrix.android.sdk.api.session.room.model.message.getThumbnailUrl
108109
import org.matrix.android.sdk.api.settings.LightweightSettingsStorage
@@ -321,8 +322,8 @@ class MessageItemFactory @Inject constructor(
321322
highlight: Boolean,
322323
attributes: AbsMessageItem.Attributes
323324
): MessageVoiceItem? {
324-
val eventsGroup = params.eventsGroup?.let { VoiceBroadcastEventsGroup(it) }
325-
if (eventsGroup != null && eventsGroup.getLastDisplayableEvent().eventId != params.event.eventId) return null
325+
// Do not display voice broadcast messages
326+
if (params.event.root.asMessageAudioEvent().isVoiceBroadcast()) return null
326327

327328
val fileUrl = getAudioFileUrl(messageContent, informationData)
328329
val playbackControlButtonClickListener = createOnPlaybackButtonClickListener(messageContent, informationData, params)

vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/TimelineEventsGroups.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@ package im.vector.app.features.home.room.detail.timeline.helper
1818

1919
import im.vector.app.core.utils.TextUtils
2020
import im.vector.app.features.voicebroadcast.VoiceBroadcastConstants
21+
import im.vector.app.features.voicebroadcast.getVoiceBroadcastEventId
22+
import im.vector.app.features.voicebroadcast.isVoiceBroadcast
2123
import im.vector.app.features.voicebroadcast.model.VoiceBroadcastState
2224
import im.vector.app.features.voicebroadcast.model.asVoiceBroadcastEvent
2325
import org.matrix.android.sdk.api.extensions.orFalse
2426
import org.matrix.android.sdk.api.session.events.model.EventType
25-
import org.matrix.android.sdk.api.session.events.model.RelationType
26-
import org.matrix.android.sdk.api.session.events.model.getRelationContent
27-
import org.matrix.android.sdk.api.session.events.model.isVoiceMessage
2827
import org.matrix.android.sdk.api.session.events.model.toModel
2928
import org.matrix.android.sdk.api.session.room.model.call.CallInviteContent
29+
import org.matrix.android.sdk.api.session.room.model.message.asMessageAudioEvent
3030
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
3131
import org.matrix.android.sdk.api.session.widgets.model.WidgetContent
3232
import org.threeten.bp.Duration
@@ -64,9 +64,9 @@ class TimelineEventsGroups {
6464
EventType.isCallEvent(type) -> (content?.get("call_id") as? String)
6565
type == VoiceBroadcastConstants.STATE_ROOM_VOICE_BROADCAST_INFO -> root.asVoiceBroadcastEvent()?.reference?.eventId
6666
type == EventType.STATE_ROOM_WIDGET || type == EventType.STATE_ROOM_WIDGET_LEGACY -> root.stateKey
67-
type == EventType.MESSAGE && root.isVoiceMessage() -> {
67+
type == EventType.MESSAGE && root.asMessageAudioEvent().isVoiceBroadcast() -> {
6868
// Group voice messages with a reference to an eventId
69-
root.getRelationContent()?.takeIf { it.type == RelationType.REFERENCE }?.eventId
69+
root.asMessageAudioEvent()?.getVoiceBroadcastEventId()
7070
}
7171
else -> {
7272
null
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Copyright (c) 2022 New Vector Ltd
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package im.vector.app.features.voicebroadcast
18+
19+
import org.matrix.android.sdk.api.session.events.model.RelationType
20+
import org.matrix.android.sdk.api.session.events.model.getRelationContent
21+
import org.matrix.android.sdk.api.session.room.model.message.MessageAudioEvent
22+
23+
fun MessageAudioEvent?.isVoiceBroadcast() = this?.getVoiceBroadcastEventId() != null
24+
25+
fun MessageAudioEvent.getVoiceBroadcastEventId(): String? =
26+
// TODO Improve this condition by checking the referenced event type
27+
root.takeIf { content.voiceMessageIndicator != null }
28+
?.getRelationContent()?.takeIf { it.type == RelationType.REFERENCE }
29+
?.eventId

0 commit comments

Comments
 (0)