From 01e225c6be136691489c3708345d7891cdc720a6 Mon Sep 17 00:00:00 2001 From: Vaibhav Kamra Date: Sat, 10 Feb 2024 10:11:46 -0800 Subject: [PATCH] Do not backup shared calendars --- .../exchange/events_container_cache.go | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/internal/m365/collection/exchange/events_container_cache.go b/src/internal/m365/collection/exchange/events_container_cache.go index 4e9d62c87..eab97ba8d 100644 --- a/src/internal/m365/collection/exchange/events_container_cache.go +++ b/src/internal/m365/collection/exchange/events_container_cache.go @@ -2,6 +2,7 @@ package exchange import ( "context" + "strings" "time" "github.com/alcionai/clues" @@ -89,11 +90,33 @@ func (ecc *eventContainerCache) Populate( return clues.WrapWC(ctx, err, "enumerating containers") } + var defaultCalendarOwner string + + // Determine the owner for the default calendar. We'll use this to detect and + // skip shared calendars that are not owned by this user. + for _, c := range containers { + if ptr.Val(c.GetIsDefaultCalendar()) { + defaultCalendarOwner = ptr.Val(c.GetOwner().GetAddress()) + } + } + for _, c := range containers { if el.Failure() != nil { return el.Failure() } + // Skip shared calendars if we have enough information to determine the owner + if len(defaultCalendarOwner) > 0 && + !strings.EqualFold(defaultCalendarOwner, ptr.Val(c.GetOwner().GetAddress())) { + logger.Ctx(ctx).Infow( + "Skipping shared calendar", + "name", ptr.Val(c.GetName()), + "owner", ptr.Val(c.GetOwner().GetAddress()), + "defaultCalendarOwner", defaultCalendarOwner) + + continue + } + cacheFolder := graph.NewCacheFolder( api.CalendarDisplayable{Calendarable: c}, path.Builder{}.Append(ptr.Val(c.GetId())),