diff --git a/crates/caldav/src/calendar/resource.rs b/crates/caldav/src/calendar/resource.rs index 2094d4b..cac5ef2 100644 --- a/crates/caldav/src/calendar/resource.rs +++ b/crates/caldav/src/calendar/resource.rs @@ -115,9 +115,14 @@ impl Resource for CalendarResource { CalendarPropName::CalendarOrder => CalendarProp::CalendarOrder(Some(self.0.order)), CalendarPropName::SupportedCalendarComponentSet => { CalendarProp::SupportedCalendarComponentSet(SupportedCalendarComponentSet { - comp: vec![SupportedCalendarComponent { - name: "VEVENT".to_owned(), - }], + comp: vec![ + SupportedCalendarComponent { + name: "VEVENT".to_owned(), + }, + SupportedCalendarComponent { + name: "VTODO".to_owned(), + }, + ], }) } CalendarPropName::SupportedCalendarData => { diff --git a/crates/store/src/model/mod.rs b/crates/store/src/model/mod.rs index 553a430..039f027 100644 --- a/crates/store/src/model/mod.rs +++ b/crates/store/src/model/mod.rs @@ -1,6 +1,7 @@ pub mod calendar; pub mod event; pub mod object; +pub mod todo; pub use calendar::Calendar; pub use object::CalendarObject; diff --git a/crates/store/src/model/object.rs b/crates/store/src/model/object.rs index 606cdb5..4f2f213 100644 --- a/crates/store/src/model/object.rs +++ b/crates/store/src/model/object.rs @@ -1,7 +1,6 @@ -use super::event::EventObject; +use super::{event::EventObject, todo::TodoObject}; use crate::Error; use anyhow::Result; -use ical::parser::ical::component::IcalTodo; use serde::{Deserialize, Serialize}; use sha2::{Digest, Sha256}; use std::io::BufReader; @@ -14,11 +13,6 @@ pub enum CalendarObjectType { Todo, } -#[derive(Debug, Clone)] -pub struct TodoObject { - todo: IcalTodo, -} - #[derive(Debug, Clone)] pub enum CalendarObjectComponent { Event(EventObject), @@ -126,4 +120,11 @@ impl CalendarObject { pub fn get_ics(&self) -> &str { &self.ics } + + pub fn get_component_name(&self) -> &str { + match self.data { + CalendarObjectComponent::Todo(_) => "VTODO", + CalendarObjectComponent::Event(_) => "VEVENT", + } + } } diff --git a/crates/store/src/model/todo.rs b/crates/store/src/model/todo.rs new file mode 100644 index 0000000..f29e42a --- /dev/null +++ b/crates/store/src/model/todo.rs @@ -0,0 +1,6 @@ +use ical::parser::ical::component::IcalTodo; + +#[derive(Debug, Clone)] +pub struct TodoObject { + pub(crate) todo: IcalTodo, +}