diff --git a/ios/TimeTracker/TimeTracker/TimeTracker.entitlements b/ios/TimeTracker/TimeTracker/TimeTracker.entitlements
index 2eb7e33..3576be9 100644
--- a/ios/TimeTracker/TimeTracker/TimeTracker.entitlements
+++ b/ios/TimeTracker/TimeTracker/TimeTracker.entitlements
@@ -3,6 +3,8 @@
com.apple.security.application-groups
-
+
+ group.com.timetracker.app
+
diff --git a/ios/TimeTracker/TimeTrackerWidget/TimeTrackerWidget.entitlements b/ios/TimeTracker/TimeTrackerWidget/TimeTrackerWidget.entitlements
index 2eb7e33..3576be9 100644
--- a/ios/TimeTracker/TimeTrackerWidget/TimeTrackerWidget.entitlements
+++ b/ios/TimeTracker/TimeTrackerWidget/TimeTrackerWidget.entitlements
@@ -3,6 +3,8 @@
com.apple.security.application-groups
-
+
+ group.com.timetracker.app
+
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(