events: Split Basic enum into GlobalAccountData, RoomAccountData and BasicToDevice enums
Closes #563
This commit is contained in:
parent
dcff455c19
commit
8d8ca81e04
@ -1,7 +1,7 @@
|
||||
//! [GET /_matrix/client/r0/user/{userId}/account_data/{type}](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-user-userid-account-data-type)
|
||||
|
||||
use ruma_api::ruma_api;
|
||||
use ruma_events::AnyBasicEventContent;
|
||||
use ruma_events::AnyGlobalAccountDataEventContent;
|
||||
use ruma_identifiers::UserId;
|
||||
use ruma_serde::Raw;
|
||||
|
||||
@ -30,7 +30,7 @@ ruma_api! {
|
||||
///
|
||||
/// Use `ruma_events::RawExt` for deserialization.
|
||||
#[ruma_api(body)]
|
||||
pub account_data: Raw<AnyBasicEventContent>,
|
||||
pub account_data: Raw<AnyGlobalAccountDataEventContent>,
|
||||
}
|
||||
|
||||
error: crate::Error
|
||||
@ -45,7 +45,7 @@ impl<'a> Request<'a> {
|
||||
|
||||
impl Response {
|
||||
/// Creates a new `Response` with the given account data.
|
||||
pub fn new(account_data: Raw<AnyBasicEventContent>) -> Self {
|
||||
pub fn new(account_data: Raw<AnyGlobalAccountDataEventContent>) -> Self {
|
||||
Self { account_data }
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
//! [GET /_matrix/client/r0/user/{userId}/rooms/{roomId}/account_data/{type}](https://matrix.org/docs/spec/client_server/r0.6.0#get-matrix-client-r0-user-userid-rooms-roomid-account-data-type)
|
||||
|
||||
use ruma_api::ruma_api;
|
||||
use ruma_events::AnyBasicEventContent;
|
||||
use ruma_events::AnyRoomAccountDataEventContent;
|
||||
use ruma_identifiers::{RoomId, UserId};
|
||||
use ruma_serde::Raw;
|
||||
|
||||
@ -34,7 +34,7 @@ ruma_api! {
|
||||
///
|
||||
/// Use `ruma_events::RawExt` for deserialization.
|
||||
#[ruma_api(body)]
|
||||
pub account_data: Raw<AnyBasicEventContent>,
|
||||
pub account_data: Raw<AnyRoomAccountDataEventContent>,
|
||||
}
|
||||
|
||||
error: crate::Error
|
||||
@ -49,7 +49,7 @@ impl<'a> Request<'a> {
|
||||
|
||||
impl Response {
|
||||
/// Creates a new `Response` with the given account data.
|
||||
pub fn new(account_data: Raw<AnyBasicEventContent>) -> Self {
|
||||
pub fn new(account_data: Raw<AnyRoomAccountDataEventContent>) -> Self {
|
||||
Self { account_data }
|
||||
}
|
||||
}
|
||||
|
@ -6,8 +6,9 @@ use js_int::UInt;
|
||||
use ruma_api::ruma_api;
|
||||
use ruma_common::presence::PresenceState;
|
||||
use ruma_events::{
|
||||
presence::PresenceEvent, AnyBasicEvent, AnyStrippedStateEvent, AnySyncEphemeralRoomEvent,
|
||||
AnySyncRoomEvent, AnySyncStateEvent, AnyToDeviceEvent,
|
||||
presence::PresenceEvent, AnyGlobalAccountDataEvent, AnyRoomAccountDataEvent,
|
||||
AnyStrippedStateEvent, AnySyncEphemeralRoomEvent, AnySyncRoomEvent, AnySyncStateEvent,
|
||||
AnyToDeviceEvent,
|
||||
};
|
||||
use ruma_identifiers::{DeviceKeyAlgorithm, RoomId, UserId};
|
||||
use ruma_serde::{Outgoing, Raw};
|
||||
@ -75,8 +76,8 @@ ruma_api! {
|
||||
pub presence: Presence,
|
||||
|
||||
/// The global private data created by this user.
|
||||
#[serde(default, skip_serializing_if = "AccountData::is_empty")]
|
||||
pub account_data: AccountData,
|
||||
#[serde(default, skip_serializing_if = "GlobalAccountData::is_empty")]
|
||||
pub account_data: GlobalAccountData,
|
||||
|
||||
/// Messages sent dirrectly between devices.
|
||||
#[serde(default, skip_serializing_if = "ToDevice::is_empty")]
|
||||
@ -219,8 +220,8 @@ pub struct LeftRoom {
|
||||
pub state: State,
|
||||
|
||||
/// The private data that this user has attached to this room.
|
||||
#[serde(default, skip_serializing_if = "AccountData::is_empty")]
|
||||
pub account_data: AccountData,
|
||||
#[serde(default, skip_serializing_if = "RoomAccountData::is_empty")]
|
||||
pub account_data: RoomAccountData,
|
||||
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
#[doc(hidden)]
|
||||
@ -275,8 +276,8 @@ pub struct JoinedRoom {
|
||||
pub state: State,
|
||||
|
||||
/// The private data that this user has attached to this room.
|
||||
#[serde(default, skip_serializing_if = "AccountData::is_empty")]
|
||||
pub account_data: AccountData,
|
||||
#[serde(default, skip_serializing_if = "RoomAccountData::is_empty")]
|
||||
pub account_data: RoomAccountData,
|
||||
|
||||
/// The ephemeral events in the room that aren't recorded in the timeline or state of the
|
||||
/// room. e.g. typing.
|
||||
@ -444,12 +445,12 @@ impl Default for State {
|
||||
}
|
||||
}
|
||||
|
||||
/// The private data that this user has attached to this room.
|
||||
/// The global private data created by this user.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct AccountData {
|
||||
pub struct GlobalAccountData {
|
||||
/// A list of events.
|
||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
||||
pub events: Vec<Raw<AnyBasicEvent>>,
|
||||
pub events: Vec<Raw<AnyGlobalAccountDataEvent>>,
|
||||
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
#[doc(hidden)]
|
||||
@ -457,19 +458,54 @@ pub struct AccountData {
|
||||
pub __test_exhaustive: crate::Private,
|
||||
}
|
||||
|
||||
impl AccountData {
|
||||
/// Creates an empty `AccountData`.
|
||||
impl GlobalAccountData {
|
||||
/// Creates an empty `GlobalAccountData`.
|
||||
pub fn new() -> Self {
|
||||
Default::default()
|
||||
}
|
||||
|
||||
/// Returns true if there are no account data updates.
|
||||
/// Returns true if there are no global account data updates.
|
||||
pub fn is_empty(&self) -> bool {
|
||||
self.events.is_empty()
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for AccountData {
|
||||
impl Default for GlobalAccountData {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
events: vec![],
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
__test_exhaustive: crate::private(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// The private data that this user has attached to this room.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||
pub struct RoomAccountData {
|
||||
/// A list of events.
|
||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
||||
pub events: Vec<Raw<AnyRoomAccountDataEvent>>,
|
||||
|
||||
#[cfg(not(feature = "unstable-exhaustive-types"))]
|
||||
#[doc(hidden)]
|
||||
#[serde(skip, default = "crate::private")]
|
||||
pub __test_exhaustive: crate::Private,
|
||||
}
|
||||
|
||||
impl RoomAccountData {
|
||||
/// Creates an empty `RoomAccountData`.
|
||||
pub fn new() -> Self {
|
||||
Default::default()
|
||||
}
|
||||
|
||||
/// Returns true if there are no room account data updates.
|
||||
pub fn is_empty(&self) -> bool {
|
||||
self.events.is_empty()
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for RoomAccountData {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
events: vec![],
|
||||
|
@ -680,7 +680,15 @@ fn marker_traits(kind: &EventKind, ruma_events: &TokenStream) -> TokenStream {
|
||||
#[automatically_derived]
|
||||
impl #ruma_events::EphemeralRoomEventContent for #ident {}
|
||||
},
|
||||
EventKind::Basic => quote! {
|
||||
EventKind::GlobalAccountData => quote! {
|
||||
#[automatically_derived]
|
||||
impl #ruma_events::BasicEventContent for #ident {}
|
||||
},
|
||||
EventKind::RoomAccountData => quote! {
|
||||
#[automatically_derived]
|
||||
impl #ruma_events::BasicEventContent for #ident {}
|
||||
},
|
||||
EventKind::BasicToDevice => quote! {
|
||||
#[automatically_derived]
|
||||
impl #ruma_events::BasicEventContent for #ident {}
|
||||
},
|
||||
|
@ -63,10 +63,12 @@ impl EventKindVariation {
|
||||
// If the variants of this enum change `to_event_path` needs to be updated as well.
|
||||
#[derive(Debug, Eq, PartialEq)]
|
||||
pub enum EventKind {
|
||||
Basic,
|
||||
GlobalAccountData,
|
||||
RoomAccountData,
|
||||
Ephemeral,
|
||||
Message,
|
||||
State,
|
||||
BasicToDevice,
|
||||
ToDevice,
|
||||
Redaction,
|
||||
Presence,
|
||||
@ -75,10 +77,12 @@ pub enum EventKind {
|
||||
impl fmt::Display for EventKind {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
EventKind::Basic => write!(f, "BasicEvent"),
|
||||
EventKind::GlobalAccountData => write!(f, "GlobalAccountDataEvent"),
|
||||
EventKind::RoomAccountData => write!(f, "RoomAccountDataEvent"),
|
||||
EventKind::Ephemeral => write!(f, "EphemeralRoomEvent"),
|
||||
EventKind::Message => write!(f, "MessageEvent"),
|
||||
EventKind::State => write!(f, "StateEvent"),
|
||||
EventKind::BasicToDevice => write!(f, "BasicToDeviceEvent"),
|
||||
EventKind::ToDevice => write!(f, "ToDeviceEvent"),
|
||||
EventKind::Redaction => write!(f, "RedactionEvent"),
|
||||
EventKind::Presence => write!(f, "PresenceEvent"),
|
||||
@ -131,17 +135,19 @@ impl Parse for EventKind {
|
||||
fn parse(input: ParseStream<'_>) -> syn::Result<Self> {
|
||||
let ident: Ident = input.parse()?;
|
||||
Ok(match ident.to_string().as_str() {
|
||||
"Basic" => EventKind::Basic,
|
||||
"GlobalAccountData" => EventKind::GlobalAccountData,
|
||||
"RoomAccountData" => EventKind::RoomAccountData,
|
||||
"EphemeralRoom" => EventKind::Ephemeral,
|
||||
"Message" => EventKind::Message,
|
||||
"State" => EventKind::State,
|
||||
"BasicToDevice" => EventKind::BasicToDevice,
|
||||
"ToDevice" => EventKind::ToDevice,
|
||||
id => {
|
||||
return Err(syn::Error::new(
|
||||
input.span(),
|
||||
format!(
|
||||
"valid event kinds are Basic, EphemeralRoom, Message, State, ToDevice \
|
||||
found `{}`",
|
||||
"valid event kinds are GlobalAccountData, RoomAccountData, EphemeralRoom, \
|
||||
Message, State, BasicToDevice, ToDevice found `{}`",
|
||||
id
|
||||
),
|
||||
));
|
||||
@ -156,7 +162,8 @@ impl Parse for EventKind {
|
||||
pub fn to_kind_variation(ident: &Ident) -> Option<(EventKind, EventKindVariation)> {
|
||||
let ident_str = ident.to_string();
|
||||
match ident_str.as_str() {
|
||||
"BasicEvent" => Some((EventKind::Basic, EventKindVariation::Full)),
|
||||
"GlobalAccountDataEvent" => Some((EventKind::GlobalAccountData, EventKindVariation::Full)),
|
||||
"RoomAccountDataEvent" => Some((EventKind::RoomAccountData, EventKindVariation::Full)),
|
||||
"EphemeralRoomEvent" => Some((EventKind::Ephemeral, EventKindVariation::Full)),
|
||||
"SyncEphemeralRoomEvent" => Some((EventKind::Ephemeral, EventKindVariation::Sync)),
|
||||
"MessageEvent" => Some((EventKind::Message, EventKindVariation::Full)),
|
||||
@ -172,6 +179,7 @@ pub fn to_kind_variation(ident: &Ident) -> Option<(EventKind, EventKindVariation
|
||||
"RedactedStrippedStateEvent" => {
|
||||
Some((EventKind::State, EventKindVariation::RedactedStripped))
|
||||
}
|
||||
"BasicToDeviceEvent" => Some((EventKind::BasicToDevice, EventKindVariation::Full)),
|
||||
"ToDeviceEvent" => Some((EventKind::ToDevice, EventKindVariation::Full)),
|
||||
"PresenceEvent" => Some((EventKind::Presence, EventKindVariation::Full)),
|
||||
"RedactionEvent" => Some((EventKind::Redaction, EventKindVariation::Full)),
|
||||
|
@ -41,8 +41,8 @@ Breaking changes:
|
||||
sticker::StickerEventContent
|
||||
```
|
||||
* Add `tag::TagName` type and use it for `tag::Tags`
|
||||
* Move `FullyRead` from `EphemeralRoom` enum to `Basic` enum
|
||||
* Change `receipt::Receipts` struct to a `BTreeMap<ReceiptType, UserReceipts>`
|
||||
* Move `FullyRead` from `EphemeralRoom` enum to `RoomAccountData` enum
|
||||
* Split `Basic` enum into `GlobalAccountData`, `RoomAccountData` and `BasicToDevice` enums
|
||||
|
||||
Improvements:
|
||||
|
||||
|
@ -10,7 +10,7 @@ use ruma_identifiers::{RoomId, UserId};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
/// Informs the client about the rooms that are considered direct by a user.
|
||||
pub type DirectEvent = crate::BasicEvent<DirectEventContent>;
|
||||
pub type DirectEvent = crate::GlobalAccountDataEvent<DirectEventContent>;
|
||||
|
||||
/// The payload for `DirectEvent`.
|
||||
///
|
||||
|
@ -3,7 +3,7 @@
|
||||
use ruma_events_macros::BasicEventContent;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::BasicEvent;
|
||||
use crate::BasicToDeviceEvent;
|
||||
|
||||
/// This event type is used to indicate new Olm sessions for end-to-end encryption.
|
||||
///
|
||||
@ -14,7 +14,7 @@ use crate::BasicEvent;
|
||||
/// this *m.dummy* event as the most recent event and using the keyshare request to set up the
|
||||
/// session. The keyshare request and *m.dummy* combination should result in the original
|
||||
/// sending client receiving keys over the newly established session.
|
||||
pub type DummyEvent = BasicEvent<DummyEventContent>;
|
||||
pub type DummyEvent = BasicToDeviceEvent<DummyEventContent>;
|
||||
|
||||
/// The payload for `DummyEvent`.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, BasicEventContent)]
|
||||
|
@ -5,16 +5,20 @@ use serde_json::value::RawValue as RawJsonValue;
|
||||
use crate::{from_raw_json_value, EventDeHelper};
|
||||
|
||||
event_enum! {
|
||||
/// Any basic event.
|
||||
kind: Basic,
|
||||
/// Any global account data event.
|
||||
kind: GlobalAccountData,
|
||||
events: [
|
||||
"m.direct",
|
||||
"m.dummy",
|
||||
"m.fully_read",
|
||||
"m.ignored_user_list",
|
||||
"m.presence",
|
||||
"m.push_rules",
|
||||
"m.room_key",
|
||||
]
|
||||
}
|
||||
|
||||
event_enum! {
|
||||
/// Any room account data event.
|
||||
kind: RoomAccountData,
|
||||
events: [
|
||||
"m.fully_read",
|
||||
"m.tag",
|
||||
]
|
||||
}
|
||||
@ -94,6 +98,15 @@ event_enum! {
|
||||
]
|
||||
}
|
||||
|
||||
event_enum! {
|
||||
/// Any basic to-device event.
|
||||
kind: BasicToDevice,
|
||||
events: [
|
||||
"m.dummy",
|
||||
"m.room_key",
|
||||
]
|
||||
}
|
||||
|
||||
event_enum! {
|
||||
/// Any to-device event.
|
||||
kind: ToDevice,
|
||||
|
@ -9,9 +9,16 @@ use crate::{
|
||||
StateEventContent, Unsigned,
|
||||
};
|
||||
|
||||
/// A basic event – one that consists only of it's type and the `content` object.
|
||||
/// A global account data event.
|
||||
#[derive(Clone, Debug, Event)]
|
||||
pub struct BasicEvent<C: BasicEventContent> {
|
||||
pub struct GlobalAccountDataEvent<C: BasicEventContent> {
|
||||
/// Data specific to the event type.
|
||||
pub content: C,
|
||||
}
|
||||
|
||||
/// A room account data event.
|
||||
#[derive(Clone, Debug, Event)]
|
||||
pub struct RoomAccountDataEvent<C: BasicEventContent> {
|
||||
/// Data specific to the event type.
|
||||
pub content: C,
|
||||
}
|
||||
@ -310,6 +317,14 @@ pub struct RedactedStrippedStateEvent<C: RedactedStateEventContent> {
|
||||
pub state_key: String,
|
||||
}
|
||||
|
||||
/// A basic event sent using send-to-device event messaging – one that consists only of it's type
|
||||
/// and the `content` object.
|
||||
#[derive(Clone, Debug, Event)]
|
||||
pub struct BasicToDeviceEvent<C: BasicEventContent> {
|
||||
/// Data specific to the event type.
|
||||
pub content: C,
|
||||
}
|
||||
|
||||
/// An event sent using send-to-device messaging.
|
||||
#[derive(Clone, Debug, Event)]
|
||||
pub struct ToDeviceEvent<C: EventContent> {
|
||||
|
@ -4,13 +4,13 @@ use ruma_events_macros::BasicEventContent;
|
||||
use ruma_identifiers::EventId;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::BasicEvent;
|
||||
use crate::RoomAccountDataEvent;
|
||||
|
||||
/// The current location of the user's read marker in a room.
|
||||
///
|
||||
/// This event appears in the user's room account data for the room the marker is applicable
|
||||
/// for.
|
||||
pub type FullyReadEvent = BasicEvent<FullyReadEventContent>;
|
||||
pub type FullyReadEvent = RoomAccountDataEvent<FullyReadEventContent>;
|
||||
|
||||
/// The payload for `FullyReadEvent`.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, BasicEventContent)]
|
||||
|
@ -4,10 +4,10 @@ use ruma_events_macros::BasicEventContent;
|
||||
use ruma_identifiers::UserId;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::BasicEvent;
|
||||
use crate::GlobalAccountDataEvent;
|
||||
|
||||
/// A list of users to ignore.
|
||||
pub type IgnoredUserListEvent = BasicEvent<IgnoredUserListEventContent>;
|
||||
pub type IgnoredUserListEvent = GlobalAccountDataEvent<IgnoredUserListEventContent>;
|
||||
|
||||
/// The payload for `IgnoredUserListEvent`.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, BasicEventContent)]
|
||||
@ -34,11 +34,11 @@ mod tests {
|
||||
use serde_json::{from_value as from_json_value, json, to_value as to_json_value};
|
||||
|
||||
use super::IgnoredUserListEventContent;
|
||||
use crate::{AnyBasicEventContent, BasicEvent};
|
||||
use crate::{AnyGlobalAccountDataEventContent, GlobalAccountDataEvent};
|
||||
|
||||
#[test]
|
||||
fn serialization() {
|
||||
let ignored_user_list_event = BasicEvent {
|
||||
let ignored_user_list_event = GlobalAccountDataEvent {
|
||||
content: IgnoredUserListEventContent {
|
||||
ignored_users: vec![user_id!("@carl:example.com")],
|
||||
},
|
||||
@ -68,12 +68,12 @@ mod tests {
|
||||
});
|
||||
|
||||
assert_matches!(
|
||||
from_json_value::<Raw<BasicEvent<AnyBasicEventContent>>>(json)
|
||||
from_json_value::<Raw<GlobalAccountDataEvent<AnyGlobalAccountDataEventContent>>>(json)
|
||||
.unwrap()
|
||||
.deserialize()
|
||||
.unwrap(),
|
||||
BasicEvent {
|
||||
content: AnyBasicEventContent::IgnoredUserList(IgnoredUserListEventContent {
|
||||
GlobalAccountDataEvent {
|
||||
content: AnyGlobalAccountDataEventContent::IgnoredUserList(IgnoredUserListEventContent {
|
||||
ignored_users,
|
||||
}),
|
||||
} if ignored_users == vec![user_id!("@carl:example.com")]
|
||||
|
@ -187,22 +187,24 @@ pub mod typing;
|
||||
pub use self::relation::Relations;
|
||||
pub use self::{
|
||||
enums::{
|
||||
AnyBasicEvent, AnyBasicEventContent, AnyEphemeralRoomEvent, AnyEphemeralRoomEventContent,
|
||||
AnyInitialStateEvent, AnyMessageEvent, AnyMessageEventContent,
|
||||
AnyPossiblyRedactedMessageEvent, AnyPossiblyRedactedStateEvent,
|
||||
AnyEphemeralRoomEvent, AnyEphemeralRoomEventContent, AnyGlobalAccountDataEvent,
|
||||
AnyGlobalAccountDataEventContent, AnyInitialStateEvent, AnyMessageEvent,
|
||||
AnyMessageEventContent, AnyPossiblyRedactedMessageEvent, AnyPossiblyRedactedStateEvent,
|
||||
AnyPossiblyRedactedStrippedStateEvent, AnyPossiblyRedactedSyncMessageEvent,
|
||||
AnyPossiblyRedactedSyncStateEvent, AnyRedactedMessageEvent, AnyRedactedStateEvent,
|
||||
AnyRedactedStrippedStateEvent, AnyRedactedSyncMessageEvent, AnyRedactedSyncStateEvent,
|
||||
AnyRoomEvent, AnyStateEvent, AnyStateEventContent, AnyStrippedStateEvent,
|
||||
AnySyncEphemeralRoomEvent, AnySyncMessageEvent, AnySyncRoomEvent, AnySyncStateEvent,
|
||||
AnyToDeviceEvent, AnyToDeviceEventContent,
|
||||
AnyRoomAccountDataEvent, AnyRoomAccountDataEventContent, AnyRoomEvent, AnyStateEvent,
|
||||
AnyStateEventContent, AnyStrippedStateEvent, AnySyncEphemeralRoomEvent,
|
||||
AnySyncMessageEvent, AnySyncRoomEvent, AnySyncStateEvent, AnyToDeviceEvent,
|
||||
AnyToDeviceEventContent,
|
||||
},
|
||||
error::{FromStrError, InvalidInput},
|
||||
event_kinds::{
|
||||
BasicEvent, EphemeralRoomEvent, InitialStateEvent, MessageEvent, RedactedMessageEvent,
|
||||
RedactedStateEvent, RedactedStrippedStateEvent, RedactedSyncMessageEvent,
|
||||
RedactedSyncStateEvent, StateEvent, StrippedStateEvent, SyncEphemeralRoomEvent,
|
||||
SyncMessageEvent, SyncStateEvent, ToDeviceEvent,
|
||||
BasicToDeviceEvent, EphemeralRoomEvent, GlobalAccountDataEvent, InitialStateEvent,
|
||||
MessageEvent, RedactedMessageEvent, RedactedStateEvent, RedactedStrippedStateEvent,
|
||||
RedactedSyncMessageEvent, RedactedSyncStateEvent, RoomAccountDataEvent, StateEvent,
|
||||
StrippedStateEvent, SyncEphemeralRoomEvent, SyncMessageEvent, SyncStateEvent,
|
||||
ToDeviceEvent,
|
||||
},
|
||||
event_type::EventType,
|
||||
};
|
||||
|
@ -4,10 +4,10 @@ use ruma_common::push::Ruleset;
|
||||
use ruma_events_macros::BasicEventContent;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::BasicEvent;
|
||||
use crate::GlobalAccountDataEvent;
|
||||
|
||||
/// Describes all push rules for a user.
|
||||
pub type PushRulesEvent = BasicEvent<PushRulesEventContent>;
|
||||
pub type PushRulesEvent = GlobalAccountDataEvent<PushRulesEventContent>;
|
||||
|
||||
/// The payload for `PushRulesEvent`.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, BasicEventContent)]
|
||||
|
@ -4,10 +4,10 @@ use ruma_events_macros::BasicEventContent;
|
||||
use ruma_identifiers::{EventEncryptionAlgorithm, RoomId};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::BasicEvent;
|
||||
use crate::BasicToDeviceEvent;
|
||||
|
||||
/// Typically encrypted as an *m.room.encrypted* event, then sent as a to-device event.
|
||||
pub type RoomKeyEvent = BasicEvent<RoomKeyEventContent>;
|
||||
pub type RoomKeyEvent = BasicToDeviceEvent<RoomKeyEventContent>;
|
||||
|
||||
/// The payload for `RoomKeyEvent`.
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, BasicEventContent)]
|
||||
@ -37,11 +37,11 @@ mod tests {
|
||||
use serde_json::{json, to_value as to_json_value};
|
||||
|
||||
use super::RoomKeyEventContent;
|
||||
use crate::BasicEvent;
|
||||
use crate::BasicToDeviceEvent;
|
||||
|
||||
#[test]
|
||||
fn serialization() {
|
||||
let ev = BasicEvent {
|
||||
let ev = BasicToDeviceEvent {
|
||||
content: RoomKeyEventContent {
|
||||
algorithm: EventEncryptionAlgorithm::MegolmV1AesSha2,
|
||||
room_id: room_id!("!testroomid:example.org"),
|
||||
|
@ -6,10 +6,10 @@ use ruma_events_macros::BasicEventContent;
|
||||
use ruma_serde::deserialize_cow_str;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use crate::BasicEvent;
|
||||
use crate::RoomAccountDataEvent;
|
||||
|
||||
/// Informs the client of tags on a room.
|
||||
pub type TagEvent = BasicEvent<TagEventContent>;
|
||||
pub type TagEvent = RoomAccountDataEvent<TagEventContent>;
|
||||
|
||||
/// Map of tag names to tag info.
|
||||
pub type Tags = BTreeMap<TagName, TagInfo>;
|
||||
|
@ -1,8 +1,8 @@
|
||||
use ruma_events_macros::event_enum;
|
||||
|
||||
event_enum! {
|
||||
/// Any basic event.
|
||||
kind: Basic,
|
||||
/// Any global account data event.
|
||||
kind: GlobalAccountData,
|
||||
events: [
|
||||
"m.direct",
|
||||
#[cfg(test)]
|
||||
|
@ -1,4 +1,4 @@
|
||||
error: valid event kinds are Basic, EphemeralRoom, Message, State, ToDevice found `NotReal`
|
||||
error: valid event kinds are GlobalAccountData, RoomAccountData, EphemeralRoom, Message, State, BasicToDevice, ToDevice found `NotReal`
|
||||
--> $DIR/09-enum-invalid-kind.rs:4:18
|
||||
|
|
||||
4 | kind: NotReal,
|
||||
|
Loading…
x
Reference in New Issue
Block a user