CelestiaTimelineEvent.swift 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import Foundation
  2. import SwiftData
  3. @Model
  4. final class CelestiaTimelineEvent {
  5. var id: UUID
  6. var relativeTimeMs: Int64
  7. var eventType: String // NOTE, PHOTO, MARKER, VOICE
  8. var textContent: String?
  9. var localFilePath: String?
  10. var voiceStartOffsetMs: Int64?
  11. var voiceEndOffsetMs: Int64?
  12. var createdAt: Date
  13. var session: CelestiaSession?
  14. var relativeTimeFormatted: String {
  15. let totalSeconds = Int(relativeTimeMs / 1000)
  16. let hours = totalSeconds / 3600
  17. let minutes = (totalSeconds % 3600) / 60
  18. let seconds = totalSeconds % 60
  19. if hours > 0 {
  20. return String(format: "%d:%02d:%02d", hours, minutes, seconds)
  21. }
  22. return String(format: "%02d:%02d", minutes, seconds)
  23. }
  24. var eventIcon: String {
  25. switch eventType {
  26. case "PHOTO": return "camera.fill"
  27. case "NOTE": return "note.text"
  28. case "MARKER": return "exclamationmark.triangle.fill"
  29. case "VOICE": return "mic.fill"
  30. default: return "circle.fill"
  31. }
  32. }
  33. init(id: UUID = UUID(), relativeTimeMs: Int64, eventType: String) {
  34. self.id = id
  35. self.relativeTimeMs = relativeTimeMs
  36. self.eventType = eventType
  37. self.createdAt = Date()
  38. }
  39. }