Temporarily add back Serialize implementations for non-DAG events

… since they are being used by Conduit.
This commit is contained in:
Jonas Platte 2022-12-21 13:02:53 +01:00
parent e6c995ef1a
commit 67d0f3cc04
No known key found for this signature in database
GPG Key ID: AAA7A61F696C3E0C
2 changed files with 64 additions and 2 deletions

View File

@ -23,6 +23,18 @@ pub struct GlobalAccountDataEvent<C: GlobalAccountDataEventContent> {
pub content: C,
}
impl<C: GlobalAccountDataEventContent> Serialize for GlobalAccountDataEvent<C> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let mut state = serializer.serialize_struct("GlobalAccountDataEvent", 2)?;
state.serialize_field("type", &self.content.event_type())?;
state.serialize_field("content", &self.content)?;
state.end()
}
}
/// A room account data event.
#[derive(Clone, Debug, Event)]
pub struct RoomAccountDataEvent<C: RoomAccountDataEventContent> {
@ -30,6 +42,18 @@ pub struct RoomAccountDataEvent<C: RoomAccountDataEventContent> {
pub content: C,
}
impl<C: RoomAccountDataEventContent> Serialize for RoomAccountDataEvent<C> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let mut state = serializer.serialize_struct("RoomAccountDataEvent", 2)?;
state.serialize_field("type", &self.content.event_type())?;
state.serialize_field("content", &self.content)?;
state.end()
}
}
/// An ephemeral room event.
#[derive(Clone, Debug, Event)]
pub struct EphemeralRoomEvent<C: EphemeralRoomEventContent> {
@ -40,6 +64,19 @@ pub struct EphemeralRoomEvent<C: EphemeralRoomEventContent> {
pub room_id: OwnedRoomId,
}
impl<C: EphemeralRoomEventContent> Serialize for EphemeralRoomEvent<C> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let mut state = serializer.serialize_struct("EphemeralRoomEvent", 2)?;
state.serialize_field("type", &self.content.event_type())?;
state.serialize_field("content", &self.content)?;
state.serialize_field("room_id", &self.room_id)?;
state.end()
}
}
/// An ephemeral room event without a `room_id`.
#[derive(Clone, Debug, Event)]
pub struct SyncEphemeralRoomEvent<C: EphemeralRoomEventContent> {
@ -47,6 +84,18 @@ pub struct SyncEphemeralRoomEvent<C: EphemeralRoomEventContent> {
pub content: C,
}
impl<C: EphemeralRoomEventContent> Serialize for SyncEphemeralRoomEvent<C> {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let mut state = serializer.serialize_struct("SyncEphemeralRoomEvent", 2)?;
state.serialize_field("type", &self.content.event_type())?;
state.serialize_field("content", &self.content)?;
state.end()
}
}
/// An unredacted message-like event.
///
/// `OriginalMessageLikeEvent` implements the comparison traits using only the `event_id` field, a

View File

@ -4,9 +4,9 @@
use js_int::UInt;
use ruma_macros::{Event, EventContent};
use serde::{Deserialize, Serialize};
use serde::{ser::SerializeStruct, Deserialize, Serialize};
use super::{EventKind, StaticEventContent};
use super::{EventContent, EventKind, StaticEventContent};
use crate::{presence::PresenceState, OwnedMxcUri, OwnedUserId};
/// Presence event.
@ -20,6 +20,19 @@ pub struct PresenceEvent {
pub sender: OwnedUserId,
}
impl Serialize for PresenceEvent {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
let mut state = serializer.serialize_struct("PresenceEvent", 3)?;
state.serialize_field("type", &self.content.event_type())?;
state.serialize_field("content", &self.content)?;
state.serialize_field("sender", &self.sender)?;
state.end()
}
}
/// Informs the room of members presence.
///
/// This is the only type a `PresenceEvent` can contain as its `content` field.