perf(calendar): Optimization of date computation when handle attendees

This commit is contained in:
smizrahi
2024-05-16 13:43:59 +02:00
parent 01dce34142
commit 77b2d9f80c

View File

@@ -639,6 +639,7 @@
NSEnumerator *enumerator; NSEnumerator *enumerator;
NSString *currentUID; NSString *currentUID;
SOGoUser *user, *currentUser; SOGoUser *user, *currentUser;
unsigned long long eventStartPeriod, eventEndPeriod;
_resourceHasAutoAccepted = NO; _resourceHasAutoAccepted = NO;
@@ -663,6 +664,12 @@
} }
enumerator = [attendees objectEnumerator]; enumerator = [attendees objectEnumerator];
// Compute event periods
eventStartPeriod = [[[(iCalDateTime *)[theEvent uniqueChildWithTag: @"dtstart"] timeZone] periodForDate: [theEvent startDate]] secondsOffsetFromGMT];
eventEndPeriod = [[[(iCalDateTime *)[theEvent uniqueChildWithTag: @"dtend"] timeZone] periodForDate: [theEvent startDate]] secondsOffsetFromGMT];
while ((currentUID = [enumerator nextObject])) while ((currentUID = [enumerator nextObject]))
{ {
NSCalendarDate *start, *end, *rangeStartDate, *rangeEndDate; NSCalendarDate *start, *end, *rangeStartDate, *rangeEndDate;
@@ -740,11 +747,12 @@
// We MUST use the -uniqueChildWithTag method here because the event has been flattened, so its timezone has been // We MUST use the -uniqueChildWithTag method here because the event has been flattened, so its timezone has been
// modified in SOGoAppointmentFolder: -fixupCycleRecord: .... // modified in SOGoAppointmentFolder: -fixupCycleRecord: ....
rangeStartDate = [[fbInfo objectAtIndex: i] objectForKey: @"startDate"]; rangeStartDate = [[fbInfo objectAtIndex: i] objectForKey: @"startDate"];
delta = [[rangeStartDate timeZoneDetail] timeZoneSecondsFromGMT] - [[[(iCalDateTime *)[theEvent uniqueChildWithTag: @"dtstart"] timeZone] periodForDate: [theEvent startDate]] secondsOffsetFromGMT];
delta = [[rangeStartDate timeZoneDetail] timeZoneSecondsFromGMT] - eventStartPeriod;
rangeStartDate = [rangeStartDate dateByAddingYears: 0 months: 0 days: 0 hours: 0 minutes: 0 seconds: delta]; rangeStartDate = [rangeStartDate dateByAddingYears: 0 months: 0 days: 0 hours: 0 minutes: 0 seconds: delta];
rangeEndDate = [[fbInfo objectAtIndex: i] objectForKey: @"endDate"]; rangeEndDate = [[fbInfo objectAtIndex: i] objectForKey: @"endDate"];
delta = [[rangeEndDate timeZoneDetail] timeZoneSecondsFromGMT] - [[[(iCalDateTime *)[theEvent uniqueChildWithTag: @"dtend"] timeZone] periodForDate: [theEvent endDate]] secondsOffsetFromGMT]; delta = [[rangeEndDate timeZoneDetail] timeZoneSecondsFromGMT] - eventEndPeriod;
rangeEndDate = [rangeEndDate dateByAddingYears: 0 months: 0 days: 0 hours: 0 minutes: 0 seconds: delta]; rangeEndDate = [rangeEndDate dateByAddingYears: 0 months: 0 days: 0 hours: 0 minutes: 0 seconds: delta];
range = [NGCalendarDateRange calendarDateRangeWithStartDate: rangeStartDate range = [NGCalendarDateRange calendarDateRangeWithStartDate: rangeStartDate