RTSDA-iOS/Models/Message.swift
2025-02-03 16:15:57 -05:00

58 lines
1.7 KiB
Swift

import Foundation
struct Message: Identifiable {
let id: String
let title: String
let description: String
let speaker: String
let videoUrl: String
let thumbnailUrl: String?
let duration: TimeInterval
let isLiveStream: Bool
let isPublished: Bool
let isDeleted: Bool
let liveBroadcastStatus: String // "none", "upcoming", "live", or "completed"
let date: String // ISO8601 formatted date string
var formattedDuration: String {
let formatter = DateComponentsFormatter()
formatter.allowedUnits = [.hour, .minute]
formatter.unitsStyle = .abbreviated
formatter.maximumUnitCount = 2
return formatter.string(from: duration) ?? ""
}
var formattedDate: String {
// Parse the date string
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.timeZone = TimeZone(identifier: "America/New_York")
guard let date = dateFormatter.date(from: date) else { return date }
// Format for display
let displayFormatter = DateFormatter()
displayFormatter.dateFormat = "MMMM d, yyyy"
displayFormatter.timeZone = TimeZone(identifier: "America/New_York")
return displayFormatter.string(from: date)
}
}
// MARK: - Codable
extension Message: Codable {
enum CodingKeys: String, CodingKey {
case id
case title
case description
case speaker
case videoUrl
case thumbnailUrl
case duration
case isLiveStream
case isPublished
case isDeleted
case liveBroadcastStatus
case date
}
}