summaryrefslogtreecommitdiff
path: root/internal/handlers/widget.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-07-13 18:03:12 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-07-16 02:42:31 +0000
commit8e56555adb7d3c77f2da62288cbf484f7102a74a (patch)
tree0496a46d2a134f504dad8817c275521fa34538f7 /internal/handlers/widget.go
parentc901a6ea512088991bb2b2d5d1daebb5d90e000e (diff)
fix(widget): forward End for all-day multi-day calendar events
A genuine all-day Google Calendar event spanning multiple days (e.g. a 3-day conference) never got its EndTime forwarded to the widget client, since the conversion only set End when !IsAllDay. The client has no way to detect a multi-day span without both Start and End.
Diffstat (limited to 'internal/handlers/widget.go')
-rw-r--r--internal/handlers/widget.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/internal/handlers/widget.go b/internal/handlers/widget.go
index 0092b6b..f0fd101 100644
--- a/internal/handlers/widget.go
+++ b/internal/handlers/widget.go
@@ -70,7 +70,15 @@ func TimelineItemToWidgetItem(item models.TimelineItem) models.WidgetItem {
if !item.Time.IsZero() && (!item.IsAllDay || item.Type == models.TimelineItemTypeEvent) {
t := item.Time
wi.Start = &t
- if !item.IsAllDay {
+ if item.Type == models.TimelineItemTypeEvent {
+ // Events always forward End when known, even when IsAllDay --
+ // a multi-day all-day event (e.g. a 3-day conference) needs its
+ // End date reaching the client so it can detect the span and
+ // render "starts"/"ends"/spans-through labels per rendered day.
+ if item.EndTime != nil {
+ wi.End = item.EndTime
+ }
+ } else if !item.IsAllDay {
if item.EndTime != nil {
wi.End = item.EndTime
} else {