diff --git a/src/ignored_user_list.rs b/src/ignored_user_list.rs index 726993c5..e68c1c37 100644 --- a/src/ignored_user_list.rs +++ b/src/ignored_user_list.rs @@ -1,68 +1,18 @@ //! Types for the *m.ignored_user_list* event. +use ruma_events_macros::ruma_event; use ruma_identifiers::UserId; -use serde::{Deserialize, Serialize}; -use crate::{EventType, FromRaw}; - -/// A list of users to ignore. -#[derive(Clone, Debug, Serialize)] -#[serde(rename = "m.ignored_user_list", tag = "type")] -pub struct IgnoredUserListEvent { - /// The event's content. - pub content: IgnoredUserListEventContent, -} - -impl FromRaw for IgnoredUserListEvent { - type Raw = raw::IgnoredUserListEvent; - - fn from_raw(raw: raw::IgnoredUserListEvent) -> Self { - Self { - content: FromRaw::from_raw(raw.content), - } - } -} - -/// The payload for `IgnoredUserListEvent`. -#[derive(Clone, Debug, Serialize)] -pub struct IgnoredUserListEventContent { +ruma_event! { /// A list of users to ignore. - #[serde(with = "ruma_serde::vec_as_map_of_empty")] - pub ignored_users: Vec, -} - -impl FromRaw for IgnoredUserListEventContent { - type Raw = raw::IgnoredUserListEventContent; - - fn from_raw(raw: raw::IgnoredUserListEventContent) -> Self { - Self { - ignored_users: raw.ignored_users, - } - } -} - -impl_event!( - IgnoredUserListEvent, - IgnoredUserListEventContent, - EventType::IgnoredUserList -); - -pub(crate) mod raw { - use super::*; - - /// A list of users to ignore. - #[derive(Clone, Debug, Deserialize)] - pub struct IgnoredUserListEvent { - /// The event's content. - pub content: IgnoredUserListEventContent, - } - - /// The payload for `IgnoredUserListEvent`. - #[derive(Clone, Debug, Deserialize, Serialize)] - pub struct IgnoredUserListEventContent { - /// A list of users to ignore. - #[serde(with = "ruma_serde::vec_as_map_of_empty")] - pub ignored_users: Vec, + IgnoredUserListEvent { + kind: Event, + event_type: "m.ignored_user_list", + content: { + /// A list of users to ignore. + #[serde(with = "ruma_serde::vec_as_map_of_empty")] + pub ignored_users: Vec, + }, } }