mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-25 11:02:48 +02:00
Add voice broadcast slider (#7010)
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user