diff --git a/crates/caldav/src/principal/mod.rs b/crates/caldav/src/principal/mod.rs index ce9b35e..c533ed1 100644 --- a/crates/caldav/src/principal/mod.rs +++ b/crates/caldav/src/principal/mod.rs @@ -49,14 +49,6 @@ impl Resource for PrincipalResource { ) -> Result { let principal_url = puri.principal_uri(&self.principal.id); - let home_set = CalendarHomeSet( - self.principal - .memberships() - .into_iter() - .map(|principal| puri.principal_uri(principal).into()) - .collect(), - ); - Ok(match prop { PrincipalPropWrapperName::Principal(prop) => { PrincipalPropWrapper::Principal(match prop { @@ -66,7 +58,9 @@ impl Resource for PrincipalResource { PrincipalPropName::PrincipalUrl => { PrincipalProp::PrincipalUrl(principal_url.into()) } - PrincipalPropName::CalendarHomeSet => PrincipalProp::CalendarHomeSet(home_set), + PrincipalPropName::CalendarHomeSet => { + PrincipalProp::CalendarHomeSet(principal_url.into()) + } PrincipalPropName::CalendarUserAddressSet => { PrincipalProp::CalendarUserAddressSet(principal_url.into()) } @@ -89,9 +83,7 @@ impl Resource for PrincipalResource { } PrincipalPropName::AlternateUriSet => PrincipalProp::AlternateUriSet, PrincipalPropName::PrincipalCollectionSet => { - PrincipalProp::PrincipalCollectionSet(PrincipalCollectionSet( - puri.principal_collection().into(), - )) + PrincipalProp::PrincipalCollectionSet(puri.principal_collection().into()) } PrincipalPropName::SupportedReportSet => { PrincipalProp::SupportedReportSet(SupportedReportSet::all()) diff --git a/crates/caldav/src/principal/prop.rs b/crates/caldav/src/principal/prop.rs index b46a3cb..010ffec 100644 --- a/crates/caldav/src/principal/prop.rs +++ b/crates/caldav/src/principal/prop.rs @@ -25,13 +25,13 @@ pub enum PrincipalProp { #[xml(ns = "rustical_dav::namespace::NS_DAV", rename = b"alternate-URI-set")] AlternateUriSet, #[xml(ns = "rustical_dav::namespace::NS_DAV")] - PrincipalCollectionSet(PrincipalCollectionSet), + PrincipalCollectionSet(HrefElement), #[xml(ns = "rustical_dav::namespace::NS_DAV", skip_deserializing)] SupportedReportSet(SupportedReportSet), // CalDAV (RFC 4791) #[xml(ns = "rustical_dav::namespace::NS_CALDAV")] - CalendarHomeSet(CalendarHomeSet), + CalendarHomeSet(HrefElement), } #[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone, EnumVariants, PropName)] @@ -41,18 +41,12 @@ pub enum PrincipalPropWrapper { Common(CommonPropertiesProp), } -#[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone)] -pub struct CalendarHomeSet(#[xml(ty = "untagged", flatten)] pub(super) Vec); - #[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone)] pub struct GroupMembership(#[xml(ty = "untagged", flatten)] pub(super) Vec); #[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone)] pub struct GroupMemberSet(#[xml(ty = "untagged", flatten)] pub(super) Vec); -#[derive(XmlDeserialize, XmlSerialize, PartialEq, Clone)] -pub struct PrincipalCollectionSet(#[xml(ty = "untagged")] pub(super) HrefElement); - #[derive(XmlSerialize, PartialEq, Clone, VariantArray)] pub enum ReportMethod { // We don't actually support principal-match