refactor recurrence expansion

This commit is contained in:
Lennart K
2025-12-18 21:27:40 +01:00
parent 6bc4bd3fa3
commit 2a4ba33e45

View File

@@ -99,7 +99,10 @@ impl EventObject {
end: Option<DateTime<Utc>>,
overrides: &[Self],
) -> Result<Vec<IcalEvent>, Error> {
if let Some(mut rrule_set) = self.recurrence_ruleset()? {
let Some(mut rrule_set) = self.recurrence_ruleset()? else {
return Ok(vec![self.event.clone()]);
};
if let Some(start) = start {
rrule_set = rrule_set.after(start.with_timezone(&rrule::Tz::UTC));
}
@@ -111,7 +114,7 @@ impl EventObject {
let dtstart = self.get_dtstart()?.expect("We must have a DTSTART here");
let computed_duration = self
.get_dtend()?
.map(|dtend| dtend.as_datetime().into_owned() - dtstart.as_datetime().into_owned());
.map(|dtend| dtend.as_datetime().into_owned() - dtstart.as_datetime().as_ref());
'recurrence: for date in dates {
let date = CalDateTime::from(date);
@@ -175,9 +178,6 @@ impl EventObject {
events.push(ev.verify()?);
}
Ok(events)
} else {
Ok(vec![self.event.clone()])
}
}
}