events: Feature-gate reactions
and make relationships module public. The re-export idea doesn't make sense with annotations being used in both reactions and messages.
This commit is contained in:
parent
b7e15efe43
commit
c322bd4d1e
@ -36,6 +36,7 @@ event_enum! {
|
||||
"m.call.invite",
|
||||
"m.call.hangup",
|
||||
"m.call.candidates",
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
"m.reaction",
|
||||
"m.room.encrypted",
|
||||
"m.room.message",
|
||||
|
@ -170,6 +170,7 @@ pub mod pdu;
|
||||
pub mod policy;
|
||||
pub mod presence;
|
||||
pub mod push_rules;
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
pub mod reaction;
|
||||
pub mod receipt;
|
||||
pub mod room;
|
||||
|
@ -22,7 +22,7 @@ pub mod name;
|
||||
pub mod pinned_events;
|
||||
pub mod power_levels;
|
||||
pub mod redaction;
|
||||
pub(crate) mod relationships;
|
||||
pub mod relationships;
|
||||
pub mod server_acl;
|
||||
pub mod third_party_invite;
|
||||
pub mod tombstone;
|
||||
|
@ -6,15 +6,12 @@ use ruma_events_macros::MessageEventContent;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_json::Value as JsonValue;
|
||||
|
||||
use super::{
|
||||
relationships::{RelatesToJsonRepr, RelationJsonRepr},
|
||||
EncryptedFile, ImageInfo, ThumbnailInfo,
|
||||
};
|
||||
|
||||
pub use super::relationships::{Annotation, InReplyTo};
|
||||
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
pub use super::relationships::{Reference, Replacement};
|
||||
use super::relationships::{Annotation, Reference, RelationJsonRepr, Replacement};
|
||||
use super::{relationships::RelatesToJsonRepr, EncryptedFile, ImageInfo, ThumbnailInfo};
|
||||
|
||||
// FIXME: Do we want to keep re-exporting this?
|
||||
pub use super::relationships::InReplyTo;
|
||||
|
||||
pub mod feedback;
|
||||
|
||||
@ -78,6 +75,7 @@ pub enum Relation {
|
||||
Reference(Reference),
|
||||
|
||||
/// An annotation to an event.
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
Annotation(Annotation),
|
||||
|
||||
/// An event that replaces another event.
|
||||
@ -98,6 +96,7 @@ pub enum Relation {
|
||||
impl From<Relation> for RelatesToJsonRepr {
|
||||
fn from(value: Relation) -> Self {
|
||||
match value {
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
Relation::Annotation(r) => RelatesToJsonRepr::Relation(RelationJsonRepr::Annotation(r)),
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
Relation::Reference(r) => RelatesToJsonRepr::Relation(RelationJsonRepr::Reference(r)),
|
||||
@ -114,11 +113,10 @@ impl From<Relation> for RelatesToJsonRepr {
|
||||
impl From<RelatesToJsonRepr> for Relation {
|
||||
fn from(value: RelatesToJsonRepr) -> Self {
|
||||
match value {
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
RelatesToJsonRepr::Relation(r) => match r {
|
||||
RelationJsonRepr::Annotation(a) => Self::Annotation(a),
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
RelationJsonRepr::Reference(r) => Self::Reference(r),
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
RelationJsonRepr::Replacement(r) => Self::Replacement(r),
|
||||
},
|
||||
RelatesToJsonRepr::Reply { in_reply_to } => Self::Reply { in_reply_to },
|
||||
|
@ -17,6 +17,7 @@ use serde_json::Value as JsonValue;
|
||||
pub(crate) enum RelatesToJsonRepr {
|
||||
/// A relation which contains subtypes indicating the type of the
|
||||
/// relationship with the `rel_type` field.
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
Relation(RelationJsonRepr),
|
||||
|
||||
/// An `m.in_reply_to` relationship indicating that the event is a reply to
|
||||
@ -33,6 +34,7 @@ pub(crate) enum RelatesToJsonRepr {
|
||||
|
||||
/// A relation, which associates new information to an existing event.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
#[serde(tag = "rel_type")]
|
||||
pub(crate) enum RelationJsonRepr {
|
||||
/// An annotation to an event.
|
||||
@ -40,12 +42,10 @@ pub(crate) enum RelationJsonRepr {
|
||||
Annotation(Annotation),
|
||||
|
||||
/// A reference to another event.
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
#[serde(rename = "m.reference")]
|
||||
Reference(Reference),
|
||||
|
||||
/// An event that replaces another event.
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
#[serde(rename = "m.replace")]
|
||||
Replacement(Replacement),
|
||||
}
|
||||
@ -142,6 +142,7 @@ mod test {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg(feature = "unstable-pre-spec")]
|
||||
fn annotation_deserialize() {
|
||||
let event_id = event_id!("$1598361704261elfgc:localhost");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user