events: Add codegen for ephemeral event enum room_id accessor
This commit is contained in:
parent
d7af96747c
commit
29b49d2edf
@ -30,7 +30,7 @@ type EventKindFn = fn(&EventKind, &EventKindVariation) -> bool;
|
|||||||
const EVENT_FIELDS: &[(&str, EventKindFn)] = &[
|
const EVENT_FIELDS: &[(&str, EventKindFn)] = &[
|
||||||
("origin_server_ts", is_non_stripped_room_event),
|
("origin_server_ts", is_non_stripped_room_event),
|
||||||
("room_id", |kind, var| {
|
("room_id", |kind, var| {
|
||||||
matches!(kind, EventKind::Message | EventKind::State)
|
matches!(kind, EventKind::Message | EventKind::State | EventKind::Ephemeral)
|
||||||
&& matches!(var, EventKindVariation::Full | EventKindVariation::Redacted)
|
&& matches!(var, EventKindVariation::Full | EventKindVariation::Redacted)
|
||||||
}),
|
}),
|
||||||
("event_id", is_non_stripped_room_event),
|
("event_id", is_non_stripped_room_event),
|
||||||
|
@ -10,9 +10,9 @@ use ruma_events::{
|
|||||||
message::{MessageEventContent, MessageType, TextMessageEventContent},
|
message::{MessageEventContent, MessageType, TextMessageEventContent},
|
||||||
power_levels::PowerLevelsEventContent,
|
power_levels::PowerLevelsEventContent,
|
||||||
},
|
},
|
||||||
AnyEvent, AnyMessageEvent, AnyRoomEvent, AnyStateEvent, AnyStateEventContent,
|
AnyEphemeralRoomEvent, AnyEvent, AnyMessageEvent, AnyRoomEvent, AnyStateEvent,
|
||||||
AnySyncMessageEvent, AnySyncRoomEvent, AnySyncStateEvent, MessageEvent, StateEvent,
|
AnyStateEventContent, AnySyncMessageEvent, AnySyncRoomEvent, AnySyncStateEvent, MessageEvent,
|
||||||
SyncMessageEvent, SyncStateEvent, Unsigned,
|
StateEvent, SyncMessageEvent, SyncStateEvent, Unsigned,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn message_event() -> JsonValue {
|
fn message_event() -> JsonValue {
|
||||||
@ -296,3 +296,23 @@ fn alias_event_field_access() {
|
|||||||
}
|
}
|
||||||
assert_eq!(deser.event_type(), "m.room.aliases");
|
assert_eq!(deser.event_type(), "m.room.aliases");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn ephemeral_event_deserialization() {
|
||||||
|
let json_data = json!({
|
||||||
|
"content": {
|
||||||
|
"user_ids": [
|
||||||
|
"@alice:matrix.org",
|
||||||
|
"@bob:example.com"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
|
||||||
|
"type": "m.typing"
|
||||||
|
});
|
||||||
|
|
||||||
|
assert_matches!(
|
||||||
|
from_json_value::<AnyEvent>(json_data),
|
||||||
|
Ok(AnyEvent::Ephemeral(ephem @ AnyEphemeralRoomEvent::Typing(_)))
|
||||||
|
if ephem.room_id() == &room_id!("!jEsUZKDJdhlrceRyVU:example.org")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user