diff --git a/Riot/Modules/VoiceBroadcast/VoiceBroadcastSDK/VoiceBroadcastAggregator.swift b/Riot/Modules/VoiceBroadcast/VoiceBroadcastSDK/VoiceBroadcastAggregator.swift index 965072ca3..3efa9662f 100644 --- a/Riot/Modules/VoiceBroadcast/VoiceBroadcastSDK/VoiceBroadcastAggregator.swift +++ b/Riot/Modules/VoiceBroadcast/VoiceBroadcastSDK/VoiceBroadcastAggregator.swift @@ -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) diff --git a/Riot/Modules/VoiceBroadcast/VoiceBroadcastSDK/VoiceBroadcastBuilder.swift b/Riot/Modules/VoiceBroadcast/VoiceBroadcastSDK/VoiceBroadcastBuilder.swift index b63f828af..d81e538c7 100644 --- a/Riot/Modules/VoiceBroadcast/VoiceBroadcastSDK/VoiceBroadcastBuilder.swift +++ b/Riot/Modules/VoiceBroadcast/VoiceBroadcastSDK/VoiceBroadcastBuilder.swift @@ -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 }