Aggregate chunks in voice broacast

This commit is contained in:
yostyle 2022-10-19 11:11:49 +02:00
parent 2e35895576
commit a3add5b793
2 changed files with 31 additions and 12 deletions

View file

@ -84,9 +84,11 @@ public class VoiceBroadcastAggregator {
voiceBroadcastInfoStartEventContent = eventContent
voiceBroadcastUserId = userId
voiceBroadcast = voiceBroadcastBuilder.build(voiceBroadcastStartEventContent: eventContent,
events: events,
currentUserIdentifier: session.myUserId)
voiceBroadcast = voiceBroadcastBuilder.build(mediaManager: session.mediaManager,
voiceBroadcastStartEventId: voiceBroadcastStartEventId,
voiceBroadcastInvoiceBroadcastStartEventContent: eventContent,
events: events,
currentUserIdentifier: session.myUserId)
reloadVoiceBroadcastData()
}
@ -124,14 +126,18 @@ public class VoiceBroadcastAggregator {
self.events.append(event)
self.voiceBroadcast = self.voiceBroadcastBuilder.build(voiceBroadcastStartEventContent: self.voiceBroadcastInfoStartEventContent,
events: self.events,
currentUserIdentifier: self.session.myUserId)
self.voiceBroadcast = self.voiceBroadcastBuilder.build(mediaManager: self.session.mediaManager,
voiceBroadcastStartEventId: self.voiceBroadcastStartEventId,
voiceBroadcastInvoiceBroadcastStartEventContent: self.voiceBroadcastInfoStartEventContent,
events: self.events,
currentUserIdentifier: self.session.myUserId)
} as Any
self.voiceBroadcast = self.voiceBroadcastBuilder.build(voiceBroadcastStartEventContent: self.voiceBroadcastInfoStartEventContent,
events: self.events,
currentUserIdentifier: self.session.myUserId)
self.voiceBroadcast = self.voiceBroadcastBuilder.build(mediaManager: self.session.mediaManager,
voiceBroadcastStartEventId: self.voiceBroadcastStartEventId,
voiceBroadcastInvoiceBroadcastStartEventContent: self.voiceBroadcastInfoStartEventContent,
events: self.events,
currentUserIdentifier: self.session.myUserId)
self.delegate?.voiceBroadcastAggregatorDidEndLoading(self)

View file

@ -18,11 +18,24 @@ import Foundation
struct VoiceBroadcastBuilder {
func build(voiceBroadcastStartEventContent: VoiceBroadcastInfo, events: [MXEvent], currentUserIdentifier: String, hasBeenEdited: Bool = false) -> VoiceBroadcast {
func build(mediaManager: MXMediaManager,
voiceBroadcastStartEventId: String,
voiceBroadcastInvoiceBroadcastStartEventContent: VoiceBroadcastInfo,
events: [MXEvent],
currentUserIdentifier: String,
hasBeenEdited: Bool = false) -> VoiceBroadcast {
let voiceBroadcast = VoiceBroadcast()
var voiceBroadcast = VoiceBroadcast()
// TODO: VB set voice broadcast object
voiceBroadcast.chunks = Set(events.compactMap { event in
guard let attachment = MXKAttachment(event: event, andMediaManager: mediaManager),
let chunkInfo = event.content[VoiceBroadcastSettings.voiceBroadcastContentKeyChunkType] as? [String: UInt],
let sequence = chunkInfo[VoiceBroadcastSettings.voiceBroadcastContentKeyChunkSequence] else {
return nil
}
return VoiceBroadcastChunk(voiceBroadcastInfoEventId: voiceBroadcastStartEventId, sequence: sequence, attachment: attachment)
})
return voiceBroadcast
}