Add voice broadcast slider (#7010)

This commit is contained in:
Yoan Pintas
2022-11-14 17:16:14 +01:00
committed by GitHub
parent 3380f31d9c
commit 91c5936a24
14 changed files with 255 additions and 74 deletions
@@ -27,20 +27,25 @@ struct VoiceBroadcastBuilder {
var voiceBroadcast = VoiceBroadcast()
voiceBroadcast.chunks = Set(events.compactMap { event in
let chunks = Set(events.compactMap { event in
buildChunk(event: event, mediaManager: mediaManager, voiceBroadcastStartEventId: voiceBroadcastStartEventId)
})
voiceBroadcast.chunks = chunks
voiceBroadcast.duration = chunks.reduce(0) { $0 + $1.duration}
return voiceBroadcast
}
func buildChunk(event: MXEvent, mediaManager: MXMediaManager, voiceBroadcastStartEventId: String) -> VoiceBroadcastChunk? {
guard let attachment = MXKAttachment(event: event, andMediaManager: mediaManager),
let chunkInfo = event.content[VoiceBroadcastSettings.voiceBroadcastContentKeyChunkType] as? [String: UInt],
let sequence = chunkInfo[VoiceBroadcastSettings.voiceBroadcastContentKeyChunkSequence] else {
let sequence = chunkInfo[VoiceBroadcastSettings.voiceBroadcastContentKeyChunkSequence],
let audio = event.content[kMXMessageContentKeyExtensibleAudioMSC1767] as? [String: UInt],
let duration = audio[kMXMessageContentKeyExtensibleAudioDuration] else {
return nil
}
return VoiceBroadcastChunk(voiceBroadcastInfoEventId: voiceBroadcastStartEventId, sequence: sequence, attachment: attachment)
return VoiceBroadcastChunk(voiceBroadcastInfoEventId: voiceBroadcastStartEventId, sequence: sequence, attachment: attachment, duration: duration)
}
}
@@ -20,13 +20,16 @@ public class VoiceBroadcastChunk: NSObject {
public private(set) var voiceBroadcastInfoEventId: String
public private(set) var sequence: UInt
public private(set) var attachment: MXKAttachment
public private(set) var duration: UInt
public init(voiceBroadcastInfoEventId: String,
sequence: UInt,
attachment: MXKAttachment) {
attachment: MXKAttachment,
duration: UInt) {
self.voiceBroadcastInfoEventId = voiceBroadcastInfoEventId
self.sequence = sequence
self.attachment = attachment
self.duration = duration
}
public static func == (lhs: VoiceBroadcastChunk, rhs: VoiceBroadcastChunk) -> Bool {
@@ -24,4 +24,5 @@ public enum VoiceBroadcastKind {
public struct VoiceBroadcast {
var chunks: Set<VoiceBroadcastChunk> = []
var kind: VoiceBroadcastKind = .player
var duration: UInt = 0
}