diff --git a/ios/TimeTracker/TimeTrackerWidget/TimeTrackerWidget.swift b/ios/TimeTracker/TimeTrackerWidget/TimeTrackerWidget.swift index d8d4cb7..c8d2209 100644 --- a/ios/TimeTracker/TimeTrackerWidget/TimeTrackerWidget.swift +++ b/ios/TimeTracker/TimeTrackerWidget/TimeTrackerWidget.swift @@ -12,6 +12,9 @@ struct WidgetTimer: Codable { let id: String let startTime: String let projectId: String? + let project: WidgetProjectReference? + let createdAt: String + let updatedAt: String var elapsedTime: TimeInterval { guard let start = ISO8601DateFormatter().date(from: startTime) else { @@ -21,6 +24,12 @@ struct WidgetTimer: Codable { } } +struct WidgetProjectReference: Codable { + let id: String + let name: String + let color: String? +} + struct Provider: TimelineProvider { private let appGroupIdentifier = "group.com.timetracker.app" @@ -41,7 +50,8 @@ struct Provider: TimelineProvider { func getTimeline(in context: Context, completion: @escaping (Timeline) -> Void) { let entry = loadTimerEntry() - let nextUpdate = Calendar.current.date(byAdding: .minute, value: 15, to: Date())! + // Update every minute to show live timer countdown + let nextUpdate = Calendar.current.date(byAdding: .minute, value: 1, to: Date())! let timeline = Timeline(entries: [entry], policy: .after(nextUpdate)) completion(timeline) @@ -63,8 +73,8 @@ struct Provider: TimelineProvider { return TimerEntry( date: Date(), timer: timer, - projectName: timer.projectId, - projectColor: nil + projectName: timer.project?.name ?? timer.projectId, + projectColor: timer.project?.color ) } catch { return TimerEntry(