events: Remove AnyEvent enum
This commit is contained in:
parent
7adc141aa0
commit
aca64eccea
@ -112,30 +112,6 @@ event_enum! {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Any event.
|
|
||||||
#[allow(clippy::large_enum_variant)]
|
|
||||||
#[derive(Clone, Debug, Serialize)]
|
|
||||||
#[serde(untagged)]
|
|
||||||
pub enum AnyEvent {
|
|
||||||
/// Any basic event.
|
|
||||||
Basic(AnyBasicEvent),
|
|
||||||
|
|
||||||
/// Any ephemeral room event.
|
|
||||||
Ephemeral(AnyEphemeralRoomEvent),
|
|
||||||
|
|
||||||
/// Any message event.
|
|
||||||
Message(AnyMessageEvent),
|
|
||||||
|
|
||||||
/// Any state event.
|
|
||||||
State(AnyStateEvent),
|
|
||||||
|
|
||||||
/// Any message event that has been redacted.
|
|
||||||
RedactedMessage(AnyRedactedMessageEvent),
|
|
||||||
|
|
||||||
/// Any state event that has been redacted.
|
|
||||||
RedactedState(AnyRedactedStateEvent),
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Any room event.
|
/// Any room event.
|
||||||
#[allow(clippy::large_enum_variant)]
|
#[allow(clippy::large_enum_variant)]
|
||||||
#[derive(Clone, Debug, Serialize)]
|
#[derive(Clone, Debug, Serialize)]
|
||||||
@ -172,41 +148,6 @@ pub enum AnySyncRoomEvent {
|
|||||||
RedactedState(AnyRedactedSyncStateEvent),
|
RedactedState(AnyRedactedSyncStateEvent),
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME `#[serde(untagged)]` deserialization fails for these enums which
|
|
||||||
// is odd as we are doing basically the same thing here, investigate?
|
|
||||||
impl<'de> de::Deserialize<'de> for AnyEvent {
|
|
||||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
|
||||||
where
|
|
||||||
D: de::Deserializer<'de>,
|
|
||||||
{
|
|
||||||
let json = Box::<RawJsonValue>::deserialize(deserializer)?;
|
|
||||||
let EventDeHelper { state_key, event_id, room_id, unsigned, .. } =
|
|
||||||
from_raw_json_value(&json)?;
|
|
||||||
|
|
||||||
// Determine whether the event is a state, message, ephemeral, or basic event
|
|
||||||
// based on the fields present.
|
|
||||||
if state_key.is_some() {
|
|
||||||
Ok(match unsigned {
|
|
||||||
Some(unsigned) if unsigned.redacted_because.is_some() => {
|
|
||||||
AnyEvent::RedactedState(from_raw_json_value(&json)?)
|
|
||||||
}
|
|
||||||
_ => AnyEvent::State(from_raw_json_value(&json)?),
|
|
||||||
})
|
|
||||||
} else if event_id.is_some() {
|
|
||||||
Ok(match unsigned {
|
|
||||||
Some(unsigned) if unsigned.redacted_because.is_some() => {
|
|
||||||
AnyEvent::RedactedMessage(from_raw_json_value(&json)?)
|
|
||||||
}
|
|
||||||
_ => AnyEvent::Message(from_raw_json_value(&json)?),
|
|
||||||
})
|
|
||||||
} else if room_id.is_some() {
|
|
||||||
Ok(AnyEvent::Ephemeral(from_raw_json_value(&json)?))
|
|
||||||
} else {
|
|
||||||
Ok(AnyEvent::Basic(from_raw_json_value(&json)?))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'de> de::Deserialize<'de> for AnyRoomEvent {
|
impl<'de> de::Deserialize<'de> for AnyRoomEvent {
|
||||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||||
where
|
where
|
||||||
|
@ -82,8 +82,8 @@
|
|||||||
//! }
|
//! }
|
||||||
//! });
|
//! });
|
||||||
//!
|
//!
|
||||||
//! // The downside of this event is we cannot use it with the `AnyRoomEvent` or `AnyEvent` enums,
|
//! // The downside of this event is we cannot use it with event enums, but could be deserialized
|
||||||
//! // but could be deserialized from a `Raw<AnyRoomEvent>` that has failed.
|
//! // from a `Raw<_>` that has failed to deserialize.
|
||||||
//! matches::assert_matches!(
|
//! matches::assert_matches!(
|
||||||
//! serde_json::from_value::<SyncMessageEvent<ReactionEventContent>>(json),
|
//! serde_json::from_value::<SyncMessageEvent<ReactionEventContent>>(json),
|
||||||
//! Ok(SyncMessageEvent {
|
//! Ok(SyncMessageEvent {
|
||||||
@ -188,7 +188,7 @@ pub use self::relation::Relations;
|
|||||||
pub use self::{
|
pub use self::{
|
||||||
enums::{
|
enums::{
|
||||||
AnyBasicEvent, AnyBasicEventContent, AnyEphemeralRoomEvent, AnyEphemeralRoomEventContent,
|
AnyBasicEvent, AnyBasicEventContent, AnyEphemeralRoomEvent, AnyEphemeralRoomEventContent,
|
||||||
AnyEvent, AnyInitialStateEvent, AnyMessageEvent, AnyMessageEventContent,
|
AnyInitialStateEvent, AnyMessageEvent, AnyMessageEventContent,
|
||||||
AnyPossiblyRedactedMessageEvent, AnyPossiblyRedactedStateEvent,
|
AnyPossiblyRedactedMessageEvent, AnyPossiblyRedactedStateEvent,
|
||||||
AnyPossiblyRedactedStrippedStateEvent, AnyPossiblyRedactedSyncMessageEvent,
|
AnyPossiblyRedactedStrippedStateEvent, AnyPossiblyRedactedSyncMessageEvent,
|
||||||
AnyPossiblyRedactedSyncStateEvent, AnyRedactedMessageEvent, AnyRedactedStateEvent,
|
AnyPossiblyRedactedSyncStateEvent, AnyRedactedMessageEvent, AnyRedactedStateEvent,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user