diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-07-15 18:30:16 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-07-16 02:54:17 +0000 |
| commit | 37c323481d2e124e75bf3480dbc3bf53cad915e0 (patch) | |
| tree | 18dcd09b2d9114fc7e849a52f7409d6750999cd0 /internal/models | |
| parent | b55c01eb9c48d2af754ff22c55deab6f0832e358 (diff) | |
feat(tasks): thread project color from BuildTimeline to WidgetItem
Projects are fetched once per BuildTimeline call into a color lookup
map, not queried per-task -- same pattern as RecurringEventID's
existing TimelineItem->WidgetItem threading.
Diffstat (limited to 'internal/models')
| -rw-r--r-- | internal/models/timeline.go | 1 | ||||
| -rw-r--r-- | internal/models/widget.go | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/internal/models/timeline.go b/internal/models/timeline.go index 6e48f91..1313712 100644 --- a/internal/models/timeline.go +++ b/internal/models/timeline.go @@ -44,6 +44,7 @@ type TimelineItem struct { // Source-specific metadata ListID string `json:"list_id,omitempty"` // For Google Tasks RecurringEventID string `json:"recurring_event_id,omitempty"` // For calendar events + ProjectColor string `json:"project_color,omitempty"` // For doot-native tasks with a project assigned } // ComputeDaySection sets the DaySection, IsOverdue, and IsAllDay based on the item's time diff --git a/internal/models/widget.go b/internal/models/widget.go index cbaf19c..da13008 100644 --- a/internal/models/widget.go +++ b/internal/models/widget.go @@ -18,6 +18,7 @@ type WidgetItem struct { URL string `json:"url,omitempty"` Completable bool `json:"completable"` // true = doot task (checkbox shown) RecurringEventID string `json:"recurring_event_id,omitempty"` + ProjectColor *string `json:"project_color,omitempty"` } // WidgetResponse is the full /api/widget response body. |
