// // TrackingActivityAttributes.swift // Haru_Danim // // Live Activity 상태 정의. 앱 타깃과 위젯 확장 타깃 양쪽에 포함된다. // import Foundation import ActivityKit import SwiftUI nonisolated struct TrackingActivityAttributes: ActivityAttributes { nonisolated struct ContentState: Codable, Hashable { /// 대표로 표시할 행동 (설정: 가장 먼저/나중에 시작한 행동) var actionName: String var symbolName: String var colorHex: String var startedAt: Date /// 동시에 추적 중인 추가 행동 개수 (+1, +2 표시용) var extraCount: Int } } extension TrackingActivityAttributes.ContentState { var tintColor: Color { let cleaned = colorHex.trimmingCharacters(in: CharacterSet.alphanumerics.inverted) var value: UInt64 = 0 Scanner(string: cleaned).scanHexInt64(&value) return Color( red: Double((value >> 16) & 0xFF) / 255, green: Double((value >> 8) & 0xFF) / 255, blue: Double(value & 0xFF) / 255 ) } /// 타이머 표시용 구간 (상한은 충분히 먼 미래) var timerRange: ClosedRange { startedAt...startedAt.addingTimeInterval(60 * 60 * 24 * 30) } }