// Copyright © 2023 Rangeproof Pty Ltd. All rights reserved. import SwiftUI import SessionUIKit import SessionMessagingKit struct VoiceMessageView_SwiftUI: View { @State var isPlaying: Bool = false @State var time: String = "0:00" @State var speed: String = "1.5×" @State var progress: Double = 0.0 private static let width: CGFloat = 160 private static let toggleContainerSize: CGFloat = 20 private var attachment: Attachment public init(attachment: Attachment) { self.attachment = attachment } var body: some View { ZStack(alignment: .leading) { Rectangle() .foregroundColor(themeColor: .messageBubble_overlay) .frame(width: Self.width * progress) HStack( alignment: .center, spacing: 0 ) { ZStack { Circle() .foregroundColor(themeColor: .backgroundSecondary) .frame( width: Self.toggleContainerSize, height: Self.toggleContainerSize ) if let toggleImage: UIImage = UIImage(named: isPlaying ? "Pause" : "Play")?.withRenderingMode(.alwaysTemplate) { Image(uiImage: toggleImage) .resizable() .foregroundColor(themeColor: .textPrimary) .scaledToFit() .frame( width: 8, height: 8 ) } // ActivityIndicator(themeColor: .textPrimary, width: 2) // .frame( // width: Self.toggleContainerSize, // height: Self.toggleContainerSize // ) } Rectangle() .foregroundColor(themeColor: .backgroundSecondary) .frame(height: 1) ZStack { Capsule() .foregroundColor(themeColor: .backgroundSecondary) .frame( width: 44, height: Self.toggleContainerSize ) Text(time) .foregroundColor(themeColor: .textPrimary) .font(.system(size: Values.smallFontSize)) } } .padding(.all, Values.smallSpacing) } .frame( width: Self.width ) } } struct VoiceMessageView_SwiftUI_Previews: PreviewProvider { static var previews: some View { VoiceMessageView_SwiftUI(attachment: Attachment(variant: .voiceMessage, contentType: "mp4", byteCount: 100)) .frame(height: 58) } }