Add RedactionEventStub, event enums
This commit is contained in:
parent
2a91dc1eb7
commit
bc5b7aa3e2
74
src/enums.rs
74
src/enums.rs
@ -1,4 +1,14 @@
|
|||||||
use ruma_events_macros::event_content_enum;
|
use ruma_events_macros::event_content_enum;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
event_kinds::{
|
||||||
|
BasicEvent, EphemeralRoomEvent, MessageEvent, MessageEventStub, StateEvent, StateEventStub,
|
||||||
|
StrippedStateEventStub,
|
||||||
|
},
|
||||||
|
presence::PresenceEvent,
|
||||||
|
room::redaction::{RedactionEvent, RedactionEventStub},
|
||||||
|
};
|
||||||
|
|
||||||
event_content_enum! {
|
event_content_enum! {
|
||||||
/// Any basic event.
|
/// Any basic event.
|
||||||
@ -78,3 +88,67 @@ event_content_enum! {
|
|||||||
"m.room.encrypted",
|
"m.room.encrypted",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Any basic event, one that has no (well-known) fields outside of `content`.
|
||||||
|
pub type AnyBasicEvent = BasicEvent<AnyBasicEventContent>;
|
||||||
|
|
||||||
|
/// Any ephemeral room event.
|
||||||
|
pub type AnyEphemeralRoomEvent = EphemeralRoomEvent<AnyEphemeralRoomEventContent>;
|
||||||
|
|
||||||
|
/// Any message event.
|
||||||
|
pub type AnyMessageEvent = MessageEvent<AnyMessageEventContent>;
|
||||||
|
|
||||||
|
/// Any message event stub (message event without a `room_id`, as returned in `/sync` responses)
|
||||||
|
pub type AnyMessageEventStub = MessageEventStub<AnyMessageEventContent>;
|
||||||
|
|
||||||
|
/// Any state event.
|
||||||
|
pub type AnyStateEvent = StateEvent<AnyStateEventContent>;
|
||||||
|
|
||||||
|
/// Any state event stub (state event without a `room_id`, as returned in `/sync` responses)
|
||||||
|
pub type AnyStateEventStub = StateEventStub<AnyStateEventContent>;
|
||||||
|
|
||||||
|
/// Any stripped state event stub (stripped-down state event, as returned for rooms the user has
|
||||||
|
/// been invited to in `/sync` responses)
|
||||||
|
pub type AnyStrippedStateEventStub = StrippedStateEventStub<AnyStateEventContent>;
|
||||||
|
|
||||||
|
/// Any event.
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
#[serde(untagged)]
|
||||||
|
pub enum AnyEvent {
|
||||||
|
/// Any basic event.
|
||||||
|
Basic(AnyBasicEvent),
|
||||||
|
/// `"m.presence"`, the only non-room event with a `sender` field.
|
||||||
|
Presence(PresenceEvent),
|
||||||
|
/// Any ephemeral room event.
|
||||||
|
Ephemeral(AnyEphemeralRoomEvent),
|
||||||
|
/// Any message event.
|
||||||
|
Message(AnyMessageEvent),
|
||||||
|
/// `"m.room.redaction"`, the only room event with a `redacts` field.
|
||||||
|
Redaction(RedactionEvent),
|
||||||
|
/// Any state event.
|
||||||
|
State(AnyStateEvent),
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Any room event.
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
#[serde(untagged)]
|
||||||
|
pub enum AnyRoomEvent {
|
||||||
|
/// Any message event.
|
||||||
|
Message(AnyMessageEvent),
|
||||||
|
/// `"m.room.redaction"`, the only room event with a `redacts` field.
|
||||||
|
Redaction(RedactionEvent),
|
||||||
|
/// Any state event.
|
||||||
|
State(AnyStateEvent),
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Any room event stub (room event without a `room_id`, as returned in `/sync` responses)
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
#[serde(untagged)]
|
||||||
|
pub enum AnyRoomEventStub {
|
||||||
|
/// Any message event stub
|
||||||
|
Message(AnyMessageEventStub),
|
||||||
|
/// `"m.room.redaction"` stub
|
||||||
|
Redaction(RedactionEventStub),
|
||||||
|
/// Any state event stub
|
||||||
|
StateEvent(AnyStateEventStub),
|
||||||
|
}
|
||||||
|
@ -160,8 +160,10 @@ pub use self::{
|
|||||||
algorithm::Algorithm,
|
algorithm::Algorithm,
|
||||||
custom::{CustomBasicEvent, CustomMessageEvent, CustomStateEvent},
|
custom::{CustomBasicEvent, CustomMessageEvent, CustomStateEvent},
|
||||||
enums::{
|
enums::{
|
||||||
AnyBasicEventContent, AnyEphemeralRoomEventContent, AnyMessageEventContent,
|
AnyBasicEvent, AnyBasicEventContent, AnyEphemeralRoomEvent, AnyEphemeralRoomEventContent,
|
||||||
AnyStateEventContent, AnyToDeviceEventContent,
|
AnyEvent, AnyMessageEvent, AnyMessageEventContent, AnyMessageEventStub, AnyRoomEvent,
|
||||||
|
AnyRoomEventStub, AnyStateEvent, AnyStateEventContent, AnyStateEventStub,
|
||||||
|
AnyStrippedStateEventStub, AnyToDeviceEventContent,
|
||||||
},
|
},
|
||||||
error::{FromStrError, InvalidEvent, InvalidInput},
|
error::{FromStrError, InvalidEvent, InvalidInput},
|
||||||
event_kinds::{
|
event_kinds::{
|
||||||
|
@ -33,6 +33,28 @@ pub struct RedactionEvent {
|
|||||||
pub unsigned: UnsignedData,
|
pub unsigned: UnsignedData,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Redaction event without a `room_id`.
|
||||||
|
#[derive(Clone, Debug, Event)]
|
||||||
|
pub struct RedactionEventStub {
|
||||||
|
/// Data specific to the event type.
|
||||||
|
pub content: RedactionEventContent,
|
||||||
|
|
||||||
|
/// The ID of the event that was redacted.
|
||||||
|
pub redacts: EventId,
|
||||||
|
|
||||||
|
/// The globally unique event identifier for the user who sent the event.
|
||||||
|
pub event_id: EventId,
|
||||||
|
|
||||||
|
/// The fully-qualified ID of the user who sent this event.
|
||||||
|
pub sender: UserId,
|
||||||
|
|
||||||
|
/// Timestamp in milliseconds on originating homeserver when this event was sent.
|
||||||
|
pub origin_server_ts: SystemTime,
|
||||||
|
|
||||||
|
/// Additional key-value pairs not signed by the homeserver.
|
||||||
|
pub unsigned: UnsignedData,
|
||||||
|
}
|
||||||
|
|
||||||
/// A redaction of an event.
|
/// A redaction of an event.
|
||||||
#[derive(Clone, Debug, Deserialize, Serialize, EventContent)]
|
#[derive(Clone, Debug, Deserialize, Serialize, EventContent)]
|
||||||
#[ruma_event(type = "m.room.redaction")]
|
#[ruma_event(type = "m.room.redaction")]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user