summaryrefslogtreecommitdiff
path: root/internal/api/google_calendar.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api/google_calendar.go')
-rw-r--r--internal/api/google_calendar.go22
1 files changed, 17 insertions, 5 deletions
diff --git a/internal/api/google_calendar.go b/internal/api/google_calendar.go
index 8dd48f0..2154351 100644
--- a/internal/api/google_calendar.go
+++ b/internal/api/google_calendar.go
@@ -76,15 +76,27 @@ func (c *GoogleCalendarClient) GetUpcomingEvents(ctx context.Context, maxResults
}
}
+ // Deduplicate events (same event may appear in multiple calendars)
+ seen := make(map[string]bool)
+ var uniqueEvents []models.CalendarEvent
+ for _, event := range allEvents {
+ // Use summary + start time as dedup key
+ key := event.Summary + event.Start.Format(time.RFC3339)
+ if !seen[key] {
+ seen[key] = true
+ uniqueEvents = append(uniqueEvents, event)
+ }
+ }
+
// Sort all events by start time
- sort.Slice(allEvents, func(i, j int) bool {
- return allEvents[i].Start.Before(allEvents[j].Start)
+ sort.Slice(uniqueEvents, func(i, j int) bool {
+ return uniqueEvents[i].Start.Before(uniqueEvents[j].Start)
})
// Limit to maxResults
- if len(allEvents) > maxResults {
- allEvents = allEvents[:maxResults]
+ if len(uniqueEvents) > maxResults {
+ uniqueEvents = uniqueEvents[:maxResults]
}
- return allEvents, nil
+ return uniqueEvents, nil
}