41 lines
1.3 KiB
Swift
41 lines
1.3 KiB
Swift
//
|
|
// 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<Date> {
|
|
startedAt...startedAt.addingTimeInterval(60 * 60 * 24 * 30)
|
|
}
|
|
}
|