diff --git a/crates/ruma-events-macros/src/event_enum.rs b/crates/ruma-events-macros/src/event_enum.rs index cc74fcae..6ec473a2 100644 --- a/crates/ruma-events-macros/src/event_enum.rs +++ b/crates/ruma-events-macros/src/event_enum.rs @@ -325,7 +325,6 @@ fn expand_content_enum( variants: &[EventEnumVariant], ruma_events: &TokenStream, ) -> TokenStream { - let ruma_identifiers = quote! { #ruma_events::exports::ruma_identifiers }; let serde = quote! { #ruma_events::exports::serde }; let serde_json = quote! { #ruma_events::exports::serde_json }; @@ -395,62 +394,12 @@ fn expand_content_enum( let marker_trait_impl = marker_trait(kind, ruma_events); - let redacted_content_enum = matches!(kind, EventKind::State | EventKind::Message).then(|| { - let redacted_ident = kind.to_redacted_content_enum(); - let redacted_variants = variants.iter().map(|v| v.ctor(&redacted_ident)); - let redacted_content: Vec<_> = events - .iter() - .map(|ev| to_event_content_path(kind, ev, Some("Redacted"), ruma_events)) - .collect(); - - quote! { - #( #attrs )* - #[derive(Clone, Debug, #serde::Serialize)] - #[serde(untagged)] - #[allow(clippy::large_enum_variant)] - #[cfg_attr(not(feature = "unstable-exhaustive-types"), non_exhaustive)] - pub enum #redacted_ident { - #( - #[doc = #event_type_str] - #variant_decls(#redacted_content), - )* - #[doc(hidden)] - _Custom { - #[serde(skip)] - event_type: ::std::string::String, - }, - } - - impl #ruma_events::RedactContent for #ident { - type Redacted = #redacted_ident; - - /// Redacts `Self` given a `RoomVersionId`. - fn redact( - self, - version: &#ruma_identifiers::RoomVersionId, - ) -> #redacted_ident { - match self { - #( - #variant_arms(content) => { - #redacted_variants( - #ruma_events::RedactContent::redact(content, version), - ) - } - )* - Self::_Custom { event_type } => #redacted_ident::_Custom { event_type }, - } - } - } - } - }); - let from_impl = expand_from_impl(ident, &content, variants); quote! { #content_enum #event_content_impl #marker_trait_impl - #redacted_content_enum #from_impl } } diff --git a/crates/ruma-events-macros/src/event_parse.rs b/crates/ruma-events-macros/src/event_parse.rs index 67f4eea5..b83cdc73 100644 --- a/crates/ruma-events-macros/src/event_parse.rs +++ b/crates/ruma-events-macros/src/event_parse.rs @@ -150,11 +150,6 @@ impl EventKind { pub fn to_content_enum(&self) -> Ident { format_ident!("Any{}Content", self) } - - /// `AnyRedacted[kind]EventContent` - pub fn to_redacted_content_enum(&self) -> Ident { - format_ident!("AnyRedacted{}Content", self) - } } impl Parse for EventKind { diff --git a/crates/ruma-events/CHANGELOG.md b/crates/ruma-events/CHANGELOG.md index 5bb563a0..8ffbd401 100644 --- a/crates/ruma-events/CHANGELOG.md +++ b/crates/ruma-events/CHANGELOG.md @@ -8,6 +8,7 @@ Breaking changes: * Require `room::message::MessageType` to always contain a body * The `new` constructor now also has a body parameter * Rename `*ToDeviceEventContent` structs to `ToDevice*Content` +* Remove unneeded redacted event content enums Improvements: diff --git a/crates/ruma-events/tests/redacted.rs b/crates/ruma-events/tests/redacted.rs index 824c3582..1108acbb 100644 --- a/crates/ruma-events/tests/redacted.rs +++ b/crates/ruma-events/tests/redacted.rs @@ -5,15 +5,14 @@ use ruma_events::{ custom::RedactedCustomEventContent, room::{ aliases::RedactedRoomAliasesEventContent, - create::RedactedRoomCreateEventContent, - message::RedactedRoomMessageEventContent, + create::{RedactedRoomCreateEventContent, RoomCreateEventContent}, + message::{RedactedRoomMessageEventContent, RoomMessageEventContent}, redaction::{RoomRedactionEventContent, SyncRoomRedactionEvent}, }, - AnyMessageEvent, AnyMessageEventContent, AnyRedactedMessageEvent, - AnyRedactedMessageEventContent, AnyRedactedStateEventContent, AnyRedactedSyncMessageEvent, - AnyRedactedSyncStateEvent, AnyRoomEvent, AnyStateEventContent, AnySyncRoomEvent, EventContent, - Redact, RedactContent, RedactedMessageEvent, RedactedSyncMessageEvent, RedactedSyncStateEvent, - RedactedUnsigned, Unsigned, + AnyMessageEvent, AnyRedactedMessageEvent, AnyRedactedSyncMessageEvent, + AnyRedactedSyncStateEvent, AnyRoomEvent, AnySyncRoomEvent, EventContent, Redact, RedactContent, + RedactedMessageEvent, RedactedSyncMessageEvent, RedactedSyncStateEvent, RedactedUnsigned, + Unsigned, }; use ruma_identifiers::{event_id, room_id, user_id, RoomVersionId}; use serde_json::{ @@ -322,11 +321,11 @@ fn redact_message_content() { }); let raw_json = to_raw_value(&json).unwrap(); - let content = AnyMessageEventContent::from_parts("m.room.message", &raw_json).unwrap(); + let content = RoomMessageEventContent::from_parts("m.room.message", &raw_json).unwrap(); assert_matches!( content.redact(&RoomVersionId::Version6), - AnyRedactedMessageEventContent::RoomMessage(RedactedRoomMessageEventContent { .. }) + RedactedRoomMessageEventContent { .. } ); } @@ -339,13 +338,13 @@ fn redact_state_content() { }); let raw_json = to_raw_value(&json).unwrap(); - let content = AnyStateEventContent::from_parts("m.room.create", &raw_json).unwrap(); + let content = RoomCreateEventContent::from_parts("m.room.create", &raw_json).unwrap(); assert_matches!( content.redact(&RoomVersionId::Version6), - AnyRedactedStateEventContent::RoomCreate(RedactedRoomCreateEventContent { + RedactedRoomCreateEventContent { creator, .. - }) if creator == user_id!("@carl:example.com") + } if creator == user_id!("@carl:example.com") ); }