events: Make deserialize_relation public

This commit is contained in:
Flix 2022-12-20 16:03:01 +01:00 committed by GitHub
parent 2db208d6b9
commit cf68a4676d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 3 deletions

View File

@ -36,6 +36,7 @@ pub use image::ImageMessageEventContent;
pub use key_verification_request::KeyVerificationRequestEventContent;
pub use location::{LocationInfo, LocationMessageEventContent};
pub use notice::NoticeMessageEventContent;
pub use relation_serde::deserialize_relation;
#[cfg(feature = "unstable-sanitize")]
use sanitize::{
remove_plain_reply_fallback, sanitize_html, HtmlSanitizerMode, RemoveReplyFallback,

View File

@ -3,9 +3,24 @@ use serde::{Deserialize, Deserializer, Serialize, Serializer};
use super::{InReplyTo, Relation, Replacement, Thread};
use crate::OwnedEventId;
pub(crate) fn deserialize_relation<'de, D, C>(
deserializer: D,
) -> Result<Option<Relation<C>>, D::Error>
/// Deserialize an event's `relates_to` field.
///
/// Use it like this:
/// ```
/// # use serde::{Deserialize, Serialize};
/// use ruma_common::events::room::message::{deserialize_relation, MessageType, Relation};
///
/// #[derive(Deserialize, Serialize)]
/// struct MyEventContent {
/// #[serde(
/// flatten,
/// skip_serializing_if = "Option::is_none",
/// deserialize_with = "deserialize_relation"
/// )]
/// relates_to: Option<Relation<MessageType>>,
/// }
/// ```
pub fn deserialize_relation<'de, D, C>(deserializer: D) -> Result<Option<Relation<C>>, D::Error>
where
D: Deserializer<'de>,
C: Deserialize<'de>,