From eeacbc888db3553b673c89123e6e18cab903c862 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Mon, 30 Sep 2024 20:20:32 +0200 Subject: [PATCH] Add first VTODO support --- crates/caldav/src/calendar/resource.rs | 11 ++++++++--- crates/store/src/model/mod.rs | 1 + crates/store/src/model/object.rs | 15 ++++++++------- crates/store/src/model/todo.rs | 6 ++++++ 4 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 crates/store/src/model/todo.rs 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, +}