mirror of
https://github.com/lennart-k/rustical.git
synced 2026-02-01 02:58:15 +00:00
refactor recurrence expansion
This commit is contained in:
@@ -99,7 +99,10 @@ impl EventObject {
|
|||||||
end: Option<DateTime<Utc>>,
|
end: Option<DateTime<Utc>>,
|
||||||
overrides: &[Self],
|
overrides: &[Self],
|
||||||
) -> Result<Vec<IcalEvent>, Error> {
|
) -> 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 {
|
if let Some(start) = start {
|
||||||
rrule_set = rrule_set.after(start.with_timezone(&rrule::Tz::UTC));
|
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 dtstart = self.get_dtstart()?.expect("We must have a DTSTART here");
|
||||||
let computed_duration = self
|
let computed_duration = self
|
||||||
.get_dtend()?
|
.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 {
|
'recurrence: for date in dates {
|
||||||
let date = CalDateTime::from(date);
|
let date = CalDateTime::from(date);
|
||||||
@@ -175,9 +178,6 @@ impl EventObject {
|
|||||||
events.push(ev.verify()?);
|
events.push(ev.verify()?);
|
||||||
}
|
}
|
||||||
Ok(events)
|
Ok(events)
|
||||||
} else {
|
|
||||||
Ok(vec![self.event.clone()])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user