15
15
*/
16
16
package im.vector.app.features.home.room.detail.timeline.factory
17
17
18
- import im.vector.app.core.epoxy.VectorEpoxyHolder
19
- import im.vector.app.core.epoxy.VectorEpoxyModel
20
18
import im.vector.app.core.resources.ColorProvider
21
19
import im.vector.app.core.resources.DrawableProvider
22
- import im.vector.app.features.home.room.detail.timeline.TimelineEventController
20
+ import im.vector.app.features.displayname.getBestName
23
21
import im.vector.app.features.home.room.detail.timeline.helper.AvatarSizeProvider
24
22
import im.vector.app.features.home.room.detail.timeline.helper.VoiceBroadcastEventsGroup
25
23
import im.vector.app.features.home.room.detail.timeline.item.AbsMessageItem
24
+ import im.vector.app.features.home.room.detail.timeline.item.AbsMessageVoiceBroadcastItem
26
25
import im.vector.app.features.home.room.detail.timeline.item.MessageVoiceBroadcastListeningItem
27
26
import im.vector.app.features.home.room.detail.timeline.item.MessageVoiceBroadcastListeningItem_
28
27
import im.vector.app.features.home.room.detail.timeline.item.MessageVoiceBroadcastRecordingItem
@@ -34,7 +33,7 @@ import im.vector.app.features.voicebroadcast.model.VoiceBroadcastState
34
33
import im.vector.app.features.voicebroadcast.model.asVoiceBroadcastEvent
35
34
import org.matrix.android.sdk.api.session.Session
36
35
import org.matrix.android.sdk.api.session.getRoom
37
- import org.matrix.android.sdk.api.session.getUser
36
+ import org.matrix.android.sdk.api.session.getUserOrDefault
38
37
import org.matrix.android.sdk.api.util.toMatrixItem
39
38
import javax.inject.Inject
40
39
@@ -51,81 +50,59 @@ class VoiceBroadcastItemFactory @Inject constructor(
51
50
params : TimelineItemFactoryParams ,
52
51
messageContent : MessageVoiceBroadcastInfoContent ,
53
52
highlight : Boolean ,
54
- callback : TimelineEventController .Callback ? ,
55
53
attributes : AbsMessageItem .Attributes ,
56
- ): VectorEpoxyModel < out VectorEpoxyHolder >? {
54
+ ): AbsMessageVoiceBroadcastItem < * >? {
57
55
// Only display item of the initial event with updated data
58
56
if (messageContent.voiceBroadcastState != VoiceBroadcastState .STARTED ) return null
59
- val eventsGroup = params.eventsGroup ? : return null
60
- val voiceBroadcastEventsGroup = VoiceBroadcastEventsGroup (eventsGroup)
61
- val mostRecentTimelineEvent = voiceBroadcastEventsGroup.getLastDisplayableEvent()
62
- val mostRecentEvent = mostRecentTimelineEvent.root.asVoiceBroadcastEvent()
63
- val mostRecentMessageContent = mostRecentEvent?.content ? : return null
64
- val isRecording = mostRecentMessageContent.voiceBroadcastState != VoiceBroadcastState .STOPPED && mostRecentEvent.root.stateKey == session.myUserId
65
- val recorderName = mostRecentTimelineEvent.root.stateKey?.let { session.getUser(it) }?.displayName ? : mostRecentTimelineEvent.root.stateKey
57
+
58
+ val voiceBroadcastEventsGroup = params.eventsGroup?.let { VoiceBroadcastEventsGroup (it) } ? : return null
59
+ val voiceBroadcastEvent = voiceBroadcastEventsGroup.getLastDisplayableEvent().root.asVoiceBroadcastEvent() ? : return null
60
+ val voiceBroadcastContent = voiceBroadcastEvent.content ? : return null
61
+ val voiceBroadcastId = voiceBroadcastEventsGroup.voiceBroadcastId
62
+
63
+ val isRecording = voiceBroadcastContent.voiceBroadcastState != VoiceBroadcastState .STOPPED && voiceBroadcastEvent.root.stateKey == session.myUserId
64
+
65
+ val voiceBroadcastAttributes = AbsMessageVoiceBroadcastItem .Attributes (
66
+ voiceBroadcastId = voiceBroadcastId,
67
+ voiceBroadcastState = voiceBroadcastContent.voiceBroadcastState,
68
+ recorderName = params.event.root.stateKey?.let { session.getUserOrDefault(it) }?.toMatrixItem()?.getBestName().orEmpty(),
69
+ recorder = voiceBroadcastRecorder,
70
+ player = voiceBroadcastPlayer,
71
+ roomItem = session.getRoom(params.event.roomId)?.roomSummary()?.toMatrixItem(),
72
+ colorProvider = colorProvider,
73
+ drawableProvider = drawableProvider,
74
+ )
75
+
66
76
return if (isRecording) {
67
- createRecordingItem(
68
- params.event.roomId,
69
- eventsGroup.groupId,
70
- highlight,
71
- callback,
72
- attributes
73
- )
77
+ createRecordingItem(highlight, attributes, voiceBroadcastAttributes)
74
78
} else {
75
- createListeningItem(
76
- params.event.roomId,
77
- eventsGroup.groupId,
78
- mostRecentMessageContent.voiceBroadcastState,
79
- recorderName,
80
- highlight,
81
- callback,
82
- attributes
83
- )
79
+ createListeningItem(highlight, attributes, voiceBroadcastAttributes)
84
80
}
85
81
}
86
82
87
83
private fun createRecordingItem (
88
- roomId : String ,
89
- voiceBroadcastId : String ,
90
84
highlight : Boolean ,
91
- callback : TimelineEventController .Callback ? ,
92
85
attributes : AbsMessageItem .Attributes ,
86
+ voiceBroadcastAttributes : AbsMessageVoiceBroadcastItem .Attributes ,
93
87
): MessageVoiceBroadcastRecordingItem {
94
- val roomSummary = session.getRoom(roomId)?.roomSummary()
95
88
return MessageVoiceBroadcastRecordingItem_ ()
96
- .id(" voice_broadcast_$voiceBroadcastId " )
89
+ .id(" voice_broadcast_${voiceBroadcastAttributes. voiceBroadcastId} " )
97
90
.attributes(attributes)
91
+ .voiceBroadcastAttributes(voiceBroadcastAttributes)
98
92
.highlighted(highlight)
99
- .roomItem(roomSummary?.toMatrixItem())
100
- .colorProvider(colorProvider)
101
- .drawableProvider(drawableProvider)
102
- .voiceBroadcastRecorder(voiceBroadcastRecorder)
103
93
.leftGuideline(avatarSizeProvider.leftGuideline)
104
- .callback(callback)
105
94
}
106
95
107
96
private fun createListeningItem (
108
- roomId : String ,
109
- voiceBroadcastId : String ,
110
- voiceBroadcastState : VoiceBroadcastState ? ,
111
- broadcasterName : String? ,
112
97
highlight : Boolean ,
113
- callback : TimelineEventController .Callback ? ,
114
98
attributes : AbsMessageItem .Attributes ,
99
+ voiceBroadcastAttributes : AbsMessageVoiceBroadcastItem .Attributes ,
115
100
): MessageVoiceBroadcastListeningItem {
116
- val roomSummary = session.getRoom(roomId)?.roomSummary()
117
101
return MessageVoiceBroadcastListeningItem_ ()
118
- .id(" voice_broadcast_$voiceBroadcastId " )
102
+ .id(" voice_broadcast_${voiceBroadcastAttributes. voiceBroadcastId} " )
119
103
.attributes(attributes)
104
+ .voiceBroadcastAttributes(voiceBroadcastAttributes)
120
105
.highlighted(highlight)
121
- .roomItem(roomSummary?.toMatrixItem())
122
- .colorProvider(colorProvider)
123
- .drawableProvider(drawableProvider)
124
- .voiceBroadcastPlayer(voiceBroadcastPlayer)
125
- .voiceBroadcastId(voiceBroadcastId)
126
- .voiceBroadcastState(voiceBroadcastState)
127
- .broadcasterName(broadcasterName)
128
106
.leftGuideline(avatarSizeProvider.leftGuideline)
129
- .callback(callback)
130
107
}
131
108
}
0 commit comments