events: rename RoomEventType to TimelineEventType
This commit is contained in:
parent
cd74cdcc0e
commit
ca78825e94
@ -11,7 +11,7 @@ pub mod v1 {
|
|||||||
use js_int::UInt;
|
use js_int::UInt;
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
api::{request, response, Metadata},
|
api::{request, response, Metadata},
|
||||||
events::{relation::RelationType, AnyMessageLikeEvent, RoomEventType},
|
events::{relation::RelationType, AnyMessageLikeEvent, TimelineEventType},
|
||||||
metadata,
|
metadata,
|
||||||
serde::Raw,
|
serde::Raw,
|
||||||
OwnedEventId, OwnedRoomId,
|
OwnedEventId, OwnedRoomId,
|
||||||
@ -47,7 +47,7 @@ pub mod v1 {
|
|||||||
/// Note that in encrypted rooms this will typically always be `m.room.encrypted`
|
/// Note that in encrypted rooms this will typically always be `m.room.encrypted`
|
||||||
/// regardless of the event type contained within the encrypted payload.
|
/// regardless of the event type contained within the encrypted payload.
|
||||||
#[ruma_api(path)]
|
#[ruma_api(path)]
|
||||||
pub event_type: RoomEventType,
|
pub event_type: TimelineEventType,
|
||||||
|
|
||||||
/// The pagination token to start returning results from.
|
/// The pagination token to start returning results from.
|
||||||
///
|
///
|
||||||
@ -118,7 +118,7 @@ pub mod v1 {
|
|||||||
room_id: OwnedRoomId,
|
room_id: OwnedRoomId,
|
||||||
event_id: OwnedEventId,
|
event_id: OwnedEventId,
|
||||||
rel_type: RelationType,
|
rel_type: RelationType,
|
||||||
event_type: RoomEventType,
|
event_type: TimelineEventType,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
Self { room_id, event_id, rel_type, event_type, from: None, to: None, limit: None }
|
Self { room_id, event_id, rel_type, event_type, from: None, to: None, limit: None }
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ use ruma_common::{
|
|||||||
api::{request, response, Metadata},
|
api::{request, response, Metadata},
|
||||||
events::{
|
events::{
|
||||||
AnyGlobalAccountDataEvent, AnyRoomAccountDataEvent, AnyStrippedStateEvent,
|
AnyGlobalAccountDataEvent, AnyRoomAccountDataEvent, AnyStrippedStateEvent,
|
||||||
AnySyncStateEvent, AnySyncTimelineEvent, AnyToDeviceEvent, RoomEventType,
|
AnySyncStateEvent, AnySyncTimelineEvent, AnyToDeviceEvent, TimelineEventType,
|
||||||
},
|
},
|
||||||
metadata,
|
metadata,
|
||||||
serde::{duration::opt_ms, Raw},
|
serde::{duration::opt_ms, Raw},
|
||||||
@ -236,7 +236,7 @@ pub struct SyncRequestList {
|
|||||||
/// Note that elements of this array are NOT sticky so they must be specified in full when they
|
/// Note that elements of this array are NOT sticky so they must be specified in full when they
|
||||||
/// are changed. Sticky.
|
/// are changed. Sticky.
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
||||||
pub required_state: Vec<(RoomEventType, String)>,
|
pub required_state: Vec<(TimelineEventType, String)>,
|
||||||
|
|
||||||
/// The maximum number of timeline events to return per room. Sticky.
|
/// The maximum number of timeline events to return per room. Sticky.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
@ -257,7 +257,7 @@ pub struct RoomSubscription {
|
|||||||
/// are changed. Sticky.
|
/// are changed. Sticky.
|
||||||
|
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
||||||
pub required_state: Vec<(RoomEventType, String)>,
|
pub required_state: Vec<(TimelineEventType, String)>,
|
||||||
|
|
||||||
/// The maximum number of timeline events to return per room. Sticky.
|
/// The maximum number of timeline events to return per room. Sticky.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
@ -46,6 +46,7 @@ Breaking changes:
|
|||||||
* `Redacted*EventContent`s don't have an `unsigned` type anymore
|
* `Redacted*EventContent`s don't have an `unsigned` type anymore
|
||||||
* Remove the `serde::urlencoded` module
|
* Remove the `serde::urlencoded` module
|
||||||
* Query string (de)serialization is now done by the `serde_html_form` crate
|
* Query string (de)serialization is now done by the `serde_html_form` crate
|
||||||
|
* Rename `RoomEventType` to `TimelineEventType`
|
||||||
|
|
||||||
Improvements:
|
Improvements:
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ use serde::{
|
|||||||
};
|
};
|
||||||
use serde_json::{from_str as from_json_str, value::RawValue as RawJsonValue};
|
use serde_json::{from_str as from_json_str, value::RawValue as RawJsonValue};
|
||||||
|
|
||||||
use super::RoomEventType;
|
use super::TimelineEventType;
|
||||||
use crate::{
|
use crate::{
|
||||||
MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedServerName,
|
MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, OwnedServerName,
|
||||||
OwnedServerSigningKeyId, OwnedUserId,
|
OwnedServerSigningKeyId, OwnedUserId,
|
||||||
@ -52,7 +52,7 @@ pub struct RoomV1Pdu {
|
|||||||
// TODO: Encode event type as content enum variant, like event enums do
|
// TODO: Encode event type as content enum variant, like event enums do
|
||||||
/// The event's type.
|
/// The event's type.
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
pub kind: RoomEventType,
|
pub kind: TimelineEventType,
|
||||||
|
|
||||||
/// The event's content.
|
/// The event's content.
|
||||||
pub content: Box<RawJsonValue>,
|
pub content: Box<RawJsonValue>,
|
||||||
@ -107,7 +107,7 @@ pub struct RoomV3Pdu {
|
|||||||
// TODO: Encode event type as content enum variant, like event enums do
|
// TODO: Encode event type as content enum variant, like event enums do
|
||||||
/// The event's type.
|
/// The event's type.
|
||||||
#[serde(rename = "type")]
|
#[serde(rename = "type")]
|
||||||
pub kind: RoomEventType,
|
pub kind: TimelineEventType,
|
||||||
|
|
||||||
/// The event's content.
|
/// The event's content.
|
||||||
pub content: Box<RawJsonValue>,
|
pub content: Box<RawJsonValue>,
|
||||||
|
@ -9,7 +9,7 @@ use ruma_macros::EventContent;
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
events::{EmptyStateKey, MessageLikeEventType, RoomEventType, StateEventType},
|
events::{EmptyStateKey, MessageLikeEventType, StateEventType, TimelineEventType},
|
||||||
power_levels::{default_power_level, NotificationPowerLevels},
|
power_levels::{default_power_level, NotificationPowerLevels},
|
||||||
OwnedUserId, UserId,
|
OwnedUserId, UserId,
|
||||||
};
|
};
|
||||||
@ -39,7 +39,7 @@ pub struct RoomPowerLevelsEventContent {
|
|||||||
deserialize_with = "crate::serde::btreemap_deserialize_v1_powerlevel_values"
|
deserialize_with = "crate::serde::btreemap_deserialize_v1_powerlevel_values"
|
||||||
)]
|
)]
|
||||||
#[ruma_event(skip_redaction)]
|
#[ruma_event(skip_redaction)]
|
||||||
pub events: BTreeMap<RoomEventType, Int>,
|
pub events: BTreeMap<TimelineEventType, Int>,
|
||||||
|
|
||||||
/// The default level required to send message events.
|
/// The default level required to send message events.
|
||||||
#[serde(
|
#[serde(
|
||||||
@ -187,7 +187,7 @@ pub struct RoomPowerLevels {
|
|||||||
/// The level required to send specific event types.
|
/// The level required to send specific event types.
|
||||||
///
|
///
|
||||||
/// This is a mapping from event type to power level required.
|
/// This is a mapping from event type to power level required.
|
||||||
pub events: BTreeMap<RoomEventType, Int>,
|
pub events: BTreeMap<TimelineEventType, Int>,
|
||||||
|
|
||||||
/// The default level required to send message events.
|
/// The default level required to send message events.
|
||||||
pub events_default: Int,
|
pub events_default: Int,
|
||||||
|
@ -7,7 +7,7 @@ use ruma_common::{
|
|||||||
event_id,
|
event_id,
|
||||||
events::{
|
events::{
|
||||||
pdu::{EventHash, Pdu, RoomV1Pdu, RoomV3Pdu},
|
pdu::{EventHash, Pdu, RoomV1Pdu, RoomV3Pdu},
|
||||||
RoomEventType,
|
TimelineEventType,
|
||||||
},
|
},
|
||||||
room_id, server_name, server_signing_key_id, user_id, MilliSecondsSinceUnixEpoch,
|
room_id, server_name, server_signing_key_id, user_id, MilliSecondsSinceUnixEpoch,
|
||||||
};
|
};
|
||||||
@ -34,7 +34,7 @@ fn serialize_pdu_as_v1() {
|
|||||||
event_id: event_id!("$somejoinevent:matrix.org").to_owned(),
|
event_id: event_id!("$somejoinevent:matrix.org").to_owned(),
|
||||||
sender: user_id!("@sender:example.com").to_owned(),
|
sender: user_id!("@sender:example.com").to_owned(),
|
||||||
origin_server_ts: MilliSecondsSinceUnixEpoch(1_592_050_773_658_u64.try_into().unwrap()),
|
origin_server_ts: MilliSecondsSinceUnixEpoch(1_592_050_773_658_u64.try_into().unwrap()),
|
||||||
kind: RoomEventType::RoomPowerLevels,
|
kind: TimelineEventType::RoomPowerLevels,
|
||||||
content: to_raw_json_value(&json!({ "testing": 123 })).unwrap(),
|
content: to_raw_json_value(&json!({ "testing": 123 })).unwrap(),
|
||||||
state_key: Some("state".into()),
|
state_key: Some("state".into()),
|
||||||
prev_events: vec![(
|
prev_events: vec![(
|
||||||
@ -98,7 +98,7 @@ fn serialize_pdu_as_v3() {
|
|||||||
room_id: room_id!("!n8f893n9:example.com").to_owned(),
|
room_id: room_id!("!n8f893n9:example.com").to_owned(),
|
||||||
sender: user_id!("@sender:example.com").to_owned(),
|
sender: user_id!("@sender:example.com").to_owned(),
|
||||||
origin_server_ts: MilliSecondsSinceUnixEpoch(1_592_050_773_658_u64.try_into().unwrap()),
|
origin_server_ts: MilliSecondsSinceUnixEpoch(1_592_050_773_658_u64.try_into().unwrap()),
|
||||||
kind: RoomEventType::RoomPowerLevels,
|
kind: TimelineEventType::RoomPowerLevels,
|
||||||
content: to_raw_json_value(&json!({ "testing": 123 })).unwrap(),
|
content: to_raw_json_value(&json!({ "testing": 123 })).unwrap(),
|
||||||
state_key: Some("state".into()),
|
state_key: Some("state".into()),
|
||||||
prev_events: vec![event_id!("$previousevent:matrix.org").to_owned()],
|
prev_events: vec![event_id!("$previousevent:matrix.org").to_owned()],
|
||||||
|
@ -8,7 +8,7 @@ pub fn expand_event_type_enum(
|
|||||||
input: EventEnumInput,
|
input: EventEnumInput,
|
||||||
ruma_common: TokenStream,
|
ruma_common: TokenStream,
|
||||||
) -> syn::Result<TokenStream> {
|
) -> syn::Result<TokenStream> {
|
||||||
let mut room: Vec<&Vec<EventEnumEntry>> = vec![];
|
let mut timeline: Vec<&Vec<EventEnumEntry>> = vec![];
|
||||||
let mut state: Vec<&Vec<EventEnumEntry>> = vec![];
|
let mut state: Vec<&Vec<EventEnumEntry>> = vec![];
|
||||||
let mut message: Vec<&Vec<EventEnumEntry>> = vec![];
|
let mut message: Vec<&Vec<EventEnumEntry>> = vec![];
|
||||||
let mut ephemeral: Vec<&Vec<EventEnumEntry>> = vec![];
|
let mut ephemeral: Vec<&Vec<EventEnumEntry>> = vec![];
|
||||||
@ -22,11 +22,11 @@ pub fn expand_event_type_enum(
|
|||||||
EventKind::Ephemeral => ephemeral.push(&event.events),
|
EventKind::Ephemeral => ephemeral.push(&event.events),
|
||||||
EventKind::MessageLike => {
|
EventKind::MessageLike => {
|
||||||
message.push(&event.events);
|
message.push(&event.events);
|
||||||
room.push(&event.events);
|
timeline.push(&event.events);
|
||||||
}
|
}
|
||||||
EventKind::State => {
|
EventKind::State => {
|
||||||
state.push(&event.events);
|
state.push(&event.events);
|
||||||
room.push(&event.events);
|
timeline.push(&event.events);
|
||||||
}
|
}
|
||||||
EventKind::ToDevice => to_device.push(&event.events),
|
EventKind::ToDevice => to_device.push(&event.events),
|
||||||
EventKind::RoomRedaction
|
EventKind::RoomRedaction
|
||||||
@ -47,7 +47,7 @@ pub fn expand_event_type_enum(
|
|||||||
let mut res = TokenStream::new();
|
let mut res = TokenStream::new();
|
||||||
|
|
||||||
res.extend(
|
res.extend(
|
||||||
generate_enum("RoomEventType", &room, &ruma_common)
|
generate_enum("TimelineEventType", &timeline, &ruma_common)
|
||||||
.unwrap_or_else(syn::Error::into_compile_error),
|
.unwrap_or_else(syn::Error::into_compile_error),
|
||||||
);
|
);
|
||||||
res.extend(
|
res.extend(
|
||||||
@ -157,25 +157,25 @@ fn generate_enum(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let from_ident_for_room = if ident == "StateEventType" || ident == "MessageLikeEventType" {
|
let from_ident_for_timeline = if ident == "StateEventType" || ident == "MessageLikeEventType" {
|
||||||
let match_arms: Vec<_> = deduped
|
let match_arms: Vec<_> = deduped
|
||||||
.iter()
|
.iter()
|
||||||
.map(|e| {
|
.map(|e| {
|
||||||
let v = e.to_variant()?;
|
let v = e.to_variant()?;
|
||||||
let ident_var = v.match_arm(quote! { #ident });
|
let ident_var = v.match_arm(quote! { #ident });
|
||||||
let room_var = v.ctor(quote! { Self });
|
let timeline_var = v.ctor(quote! { Self });
|
||||||
|
|
||||||
Ok(if e.has_type_fragment() {
|
Ok(if e.has_type_fragment() {
|
||||||
quote! { #ident_var (_s) => #room_var (_s) }
|
quote! { #ident_var (_s) => #timeline_var (_s) }
|
||||||
} else {
|
} else {
|
||||||
quote! { #ident_var => #room_var }
|
quote! { #ident_var => #timeline_var }
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.collect::<syn::Result<_>>()?;
|
.collect::<syn::Result<_>>()?;
|
||||||
|
|
||||||
Some(quote! {
|
Some(quote! {
|
||||||
#[allow(deprecated)]
|
#[allow(deprecated)]
|
||||||
impl ::std::convert::From<#ident> for RoomEventType {
|
impl ::std::convert::From<#ident> for TimelineEventType {
|
||||||
fn from(s: #ident) -> Self {
|
fn from(s: #ident) -> Self {
|
||||||
match s {
|
match s {
|
||||||
#(#match_arms,)*
|
#(#match_arms,)*
|
||||||
@ -260,6 +260,6 @@ fn generate_enum(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#from_ident_for_room
|
#from_ident_for_timeline
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ pub mod v1 {
|
|||||||
use js_int::{uint, UInt};
|
use js_int::{uint, UInt};
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
api::{request, response, Metadata},
|
api::{request, response, Metadata},
|
||||||
events::RoomEventType,
|
events::TimelineEventType,
|
||||||
metadata,
|
metadata,
|
||||||
push::{PushFormat, Tweak},
|
push::{PushFormat, Tweak},
|
||||||
serde::StringEnum,
|
serde::StringEnum,
|
||||||
@ -87,7 +87,7 @@ pub mod v1 {
|
|||||||
|
|
||||||
/// The type of the event as in the event's `type` field.
|
/// The type of the event as in the event's `type` field.
|
||||||
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
|
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
|
||||||
pub event_type: Option<RoomEventType>,
|
pub event_type: Option<TimelineEventType>,
|
||||||
|
|
||||||
/// The sender of the event as in the corresponding event field.
|
/// The sender of the event as in the corresponding event field.
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
@ -376,7 +376,8 @@ pub mod v1 {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use js_int::uint;
|
use js_int::uint;
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
event_id, events::RoomEventType, room_alias_id, room_id, user_id, SecondsSinceUnixEpoch,
|
event_id, events::TimelineEventType, room_alias_id, room_id, user_id,
|
||||||
|
SecondsSinceUnixEpoch,
|
||||||
};
|
};
|
||||||
use serde_json::{
|
use serde_json::{
|
||||||
from_value as from_json_value, json, to_value as to_json_value, Value as JsonValue,
|
from_value as from_json_value, json, to_value as to_json_value, Value as JsonValue,
|
||||||
@ -439,7 +440,7 @@ pub mod v1 {
|
|||||||
let notice = Notification {
|
let notice = Notification {
|
||||||
event_id: Some(eid),
|
event_id: Some(eid),
|
||||||
room_id: Some(rid),
|
room_id: Some(rid),
|
||||||
event_type: Some(RoomEventType::RoomMessage),
|
event_type: Some(TimelineEventType::RoomMessage),
|
||||||
sender: Some(uid),
|
sender: Some(uid),
|
||||||
sender_display_name: Some("Major Tom".to_owned()),
|
sender_display_name: Some("Major Tom".to_owned()),
|
||||||
room_alias: Some(alias),
|
room_alias: Some(alias),
|
||||||
|
@ -27,7 +27,7 @@ use ruma_common::{
|
|||||||
join_rules::{JoinRule, RoomJoinRulesEventContent},
|
join_rules::{JoinRule, RoomJoinRulesEventContent},
|
||||||
member::{MembershipState, RoomMemberEventContent},
|
member::{MembershipState, RoomMemberEventContent},
|
||||||
},
|
},
|
||||||
RoomEventType, StateEventType,
|
StateEventType, TimelineEventType,
|
||||||
},
|
},
|
||||||
room_id, user_id, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, RoomVersionId,
|
room_id, user_id, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, RoomVersionId,
|
||||||
UserId,
|
UserId,
|
||||||
@ -234,7 +234,7 @@ impl TestStore<PduEvent> {
|
|||||||
let create_event = to_pdu_event::<&EventId>(
|
let create_event = to_pdu_event::<&EventId>(
|
||||||
"CREATE",
|
"CREATE",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomCreate,
|
TimelineEventType::RoomCreate,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
@ -246,7 +246,7 @@ impl TestStore<PduEvent> {
|
|||||||
let alice_mem = to_pdu_event(
|
let alice_mem = to_pdu_event(
|
||||||
"IMA",
|
"IMA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(alice().to_string().as_str()),
|
Some(alice().to_string().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&[cre.clone()],
|
&[cre.clone()],
|
||||||
@ -257,7 +257,7 @@ impl TestStore<PduEvent> {
|
|||||||
let join_rules = to_pdu_event(
|
let join_rules = to_pdu_event(
|
||||||
"IJR",
|
"IJR",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomJoinRules,
|
TimelineEventType::RoomJoinRules,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Public)).unwrap(),
|
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Public)).unwrap(),
|
||||||
&[cre.clone(), alice_mem.event_id().to_owned()],
|
&[cre.clone(), alice_mem.event_id().to_owned()],
|
||||||
@ -270,7 +270,7 @@ impl TestStore<PduEvent> {
|
|||||||
let bob_mem = to_pdu_event(
|
let bob_mem = to_pdu_event(
|
||||||
"IMB",
|
"IMB",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(bob().to_string().as_str()),
|
Some(bob().to_string().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&[cre.clone(), join_rules.event_id().to_owned()],
|
&[cre.clone(), join_rules.event_id().to_owned()],
|
||||||
@ -281,7 +281,7 @@ impl TestStore<PduEvent> {
|
|||||||
let charlie_mem = to_pdu_event(
|
let charlie_mem = to_pdu_event(
|
||||||
"IMC",
|
"IMC",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(charlie().to_string().as_str()),
|
Some(charlie().to_string().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&[cre, join_rules.event_id().to_owned()],
|
&[cre, join_rules.event_id().to_owned()],
|
||||||
@ -352,7 +352,7 @@ fn member_content_join() -> Box<RawJsonValue> {
|
|||||||
fn to_pdu_event<S>(
|
fn to_pdu_event<S>(
|
||||||
id: &str,
|
id: &str,
|
||||||
sender: &UserId,
|
sender: &UserId,
|
||||||
ev_type: RoomEventType,
|
ev_type: TimelineEventType,
|
||||||
state_key: Option<&str>,
|
state_key: Option<&str>,
|
||||||
content: Box<RawJsonValue>,
|
content: Box<RawJsonValue>,
|
||||||
auth_events: &[S],
|
auth_events: &[S],
|
||||||
@ -396,7 +396,7 @@ fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event::<&EventId>(
|
to_pdu_event::<&EventId>(
|
||||||
"CREATE",
|
"CREATE",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomCreate,
|
TimelineEventType::RoomCreate,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
@ -405,7 +405,7 @@ fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IMA",
|
"IMA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(alice().as_str()),
|
Some(alice().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE"],
|
&["CREATE"],
|
||||||
@ -414,7 +414,7 @@ fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IPOWER",
|
"IPOWER",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100 } })).unwrap(),
|
||||||
&["CREATE", "IMA"],
|
&["CREATE", "IMA"],
|
||||||
@ -423,7 +423,7 @@ fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IJR",
|
"IJR",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomJoinRules,
|
TimelineEventType::RoomJoinRules,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Public)).unwrap(),
|
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Public)).unwrap(),
|
||||||
&["CREATE", "IMA", "IPOWER"],
|
&["CREATE", "IMA", "IPOWER"],
|
||||||
@ -432,7 +432,7 @@ fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IMB",
|
"IMB",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(bob().to_string().as_str()),
|
Some(bob().to_string().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE", "IJR", "IPOWER"],
|
&["CREATE", "IJR", "IPOWER"],
|
||||||
@ -441,7 +441,7 @@ fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IMC",
|
"IMC",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(charlie().to_string().as_str()),
|
Some(charlie().to_string().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE", "IJR", "IPOWER"],
|
&["CREATE", "IJR", "IPOWER"],
|
||||||
@ -450,7 +450,7 @@ fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event::<&EventId>(
|
to_pdu_event::<&EventId>(
|
||||||
"START",
|
"START",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
@ -459,7 +459,7 @@ fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event::<&EventId>(
|
to_pdu_event::<&EventId>(
|
||||||
"END",
|
"END",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
@ -478,7 +478,7 @@ fn BAN_STATE_SET() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"PA",
|
"PA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
&["CREATE", "IMA", "IPOWER"], // auth_events
|
&["CREATE", "IMA", "IPOWER"], // auth_events
|
||||||
@ -487,7 +487,7 @@ fn BAN_STATE_SET() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"PB",
|
"PB",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
&["CREATE", "IMA", "IPOWER"],
|
&["CREATE", "IMA", "IPOWER"],
|
||||||
@ -496,7 +496,7 @@ fn BAN_STATE_SET() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"MB",
|
"MB",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(ella().as_str()),
|
Some(ella().as_str()),
|
||||||
member_content_ban(),
|
member_content_ban(),
|
||||||
&["CREATE", "IMA", "PB"],
|
&["CREATE", "IMA", "PB"],
|
||||||
@ -505,7 +505,7 @@ fn BAN_STATE_SET() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IME",
|
"IME",
|
||||||
ella(),
|
ella(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(ella().as_str()),
|
Some(ella().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE", "IJR", "PA"],
|
&["CREATE", "IJR", "PA"],
|
||||||
@ -522,7 +522,7 @@ trait EventTypeExt {
|
|||||||
fn with_state_key(self, state_key: impl Into<String>) -> (StateEventType, String);
|
fn with_state_key(self, state_key: impl Into<String>) -> (StateEventType, String);
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EventTypeExt for &RoomEventType {
|
impl EventTypeExt for &TimelineEventType {
|
||||||
fn with_state_key(self, state_key: impl Into<String>) -> (StateEventType, String) {
|
fn with_state_key(self, state_key: impl Into<String>) -> (StateEventType, String) {
|
||||||
(self.to_string().into(), state_key.into())
|
(self.to_string().into(), state_key.into())
|
||||||
}
|
}
|
||||||
@ -530,7 +530,7 @@ impl EventTypeExt for &RoomEventType {
|
|||||||
|
|
||||||
mod event {
|
mod event {
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
events::{pdu::Pdu, RoomEventType},
|
events::{pdu::Pdu, TimelineEventType},
|
||||||
MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, UserId,
|
MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, UserId,
|
||||||
};
|
};
|
||||||
use ruma_state_res::Event;
|
use ruma_state_res::Event;
|
||||||
@ -562,7 +562,7 @@ mod event {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn event_type(&self) -> &RoomEventType {
|
fn event_type(&self) -> &TimelineEventType {
|
||||||
match &self.rest {
|
match &self.rest {
|
||||||
Pdu::RoomV1Pdu(ev) => &ev.kind,
|
Pdu::RoomV1Pdu(ev) => &ev.kind,
|
||||||
Pdu::RoomV3Pdu(ev) => &ev.kind,
|
Pdu::RoomV3Pdu(ev) => &ev.kind,
|
||||||
|
@ -10,7 +10,7 @@ use ruma_common::{
|
|||||||
power_levels::RoomPowerLevelsEventContent,
|
power_levels::RoomPowerLevelsEventContent,
|
||||||
third_party_invite::RoomThirdPartyInviteEventContent,
|
third_party_invite::RoomThirdPartyInviteEventContent,
|
||||||
},
|
},
|
||||||
RoomEventType, StateEventType,
|
StateEventType, TimelineEventType,
|
||||||
},
|
},
|
||||||
serde::{Base64, Raw},
|
serde::{Base64, Raw},
|
||||||
OwnedUserId, RoomVersionId, UserId,
|
OwnedUserId, RoomVersionId, UserId,
|
||||||
@ -47,12 +47,12 @@ struct RoomMemberContentFields {
|
|||||||
///
|
///
|
||||||
/// This function will return an error if the supplied `content` is not a JSON object.
|
/// This function will return an error if the supplied `content` is not a JSON object.
|
||||||
pub fn auth_types_for_event(
|
pub fn auth_types_for_event(
|
||||||
kind: &RoomEventType,
|
kind: &TimelineEventType,
|
||||||
sender: &UserId,
|
sender: &UserId,
|
||||||
state_key: Option<&str>,
|
state_key: Option<&str>,
|
||||||
content: &RawJsonValue,
|
content: &RawJsonValue,
|
||||||
) -> serde_json::Result<Vec<(StateEventType, String)>> {
|
) -> serde_json::Result<Vec<(StateEventType, String)>> {
|
||||||
if kind == &RoomEventType::RoomCreate {
|
if kind == &TimelineEventType::RoomCreate {
|
||||||
return Ok(vec![]);
|
return Ok(vec![]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +62,7 @@ pub fn auth_types_for_event(
|
|||||||
(StateEventType::RoomCreate, "".to_owned()),
|
(StateEventType::RoomCreate, "".to_owned()),
|
||||||
];
|
];
|
||||||
|
|
||||||
if kind == &RoomEventType::RoomMember {
|
if kind == &TimelineEventType::RoomMember {
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
struct RoomMemberContentFields {
|
struct RoomMemberContentFields {
|
||||||
membership: Option<Raw<MembershipState>>,
|
membership: Option<Raw<MembershipState>>,
|
||||||
@ -146,7 +146,7 @@ pub fn auth_check<E: Event>(
|
|||||||
// Implementation of https://spec.matrix.org/v1.4/rooms/v1/#authorization-rules
|
// Implementation of https://spec.matrix.org/v1.4/rooms/v1/#authorization-rules
|
||||||
//
|
//
|
||||||
// 1. If type is m.room.create:
|
// 1. If type is m.room.create:
|
||||||
if *incoming_event.event_type() == RoomEventType::RoomCreate {
|
if *incoming_event.event_type() == TimelineEventType::RoomCreate {
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
struct RoomCreateContentFields {
|
struct RoomCreateContentFields {
|
||||||
room_version: Option<Raw<RoomVersionId>>,
|
room_version: Option<Raw<RoomVersionId>>,
|
||||||
@ -244,7 +244,7 @@ pub fn auth_check<E: Event>(
|
|||||||
// Only in some room versions 6 and below
|
// Only in some room versions 6 and below
|
||||||
if room_version.special_case_aliases_auth {
|
if room_version.special_case_aliases_auth {
|
||||||
// 4. If type is m.room.aliases
|
// 4. If type is m.room.aliases
|
||||||
if *incoming_event.event_type() == RoomEventType::RoomAliases {
|
if *incoming_event.event_type() == TimelineEventType::RoomAliases {
|
||||||
info!("starting m.room.aliases check");
|
info!("starting m.room.aliases check");
|
||||||
|
|
||||||
// If sender's domain doesn't matches state_key, reject
|
// If sender's domain doesn't matches state_key, reject
|
||||||
@ -262,7 +262,7 @@ pub fn auth_check<E: Event>(
|
|||||||
let power_levels_event = fetch_state(&StateEventType::RoomPowerLevels, "");
|
let power_levels_event = fetch_state(&StateEventType::RoomPowerLevels, "");
|
||||||
let sender_member_event = fetch_state(&StateEventType::RoomMember, sender.as_str());
|
let sender_member_event = fetch_state(&StateEventType::RoomMember, sender.as_str());
|
||||||
|
|
||||||
if *incoming_event.event_type() == RoomEventType::RoomMember {
|
if *incoming_event.event_type() == TimelineEventType::RoomMember {
|
||||||
info!("starting m.room.member check");
|
info!("starting m.room.member check");
|
||||||
let state_key = match incoming_event.state_key() {
|
let state_key = match incoming_event.state_key() {
|
||||||
None => {
|
None => {
|
||||||
@ -351,7 +351,7 @@ pub fn auth_check<E: Event>(
|
|||||||
|
|
||||||
// Allow if and only if sender's current power level is greater than
|
// Allow if and only if sender's current power level is greater than
|
||||||
// or equal to the invite level
|
// or equal to the invite level
|
||||||
if *incoming_event.event_type() == RoomEventType::RoomThirdPartyInvite {
|
if *incoming_event.event_type() == TimelineEventType::RoomThirdPartyInvite {
|
||||||
let invite_level = match &power_levels_event {
|
let invite_level = match &power_levels_event {
|
||||||
Some(power_levels) => {
|
Some(power_levels) => {
|
||||||
deserialize_power_levels_content_invite(power_levels.content().get(), room_version)?
|
deserialize_power_levels_content_invite(power_levels.content().get(), room_version)?
|
||||||
@ -377,7 +377,7 @@ pub fn auth_check<E: Event>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If type is m.room.power_levels
|
// If type is m.room.power_levels
|
||||||
if *incoming_event.event_type() == RoomEventType::RoomPowerLevels {
|
if *incoming_event.event_type() == TimelineEventType::RoomPowerLevels {
|
||||||
info!("starting m.room.power_levels check");
|
info!("starting m.room.power_levels check");
|
||||||
|
|
||||||
if let Some(required_pwr_lvl) = check_power_levels(
|
if let Some(required_pwr_lvl) = check_power_levels(
|
||||||
@ -405,7 +405,7 @@ pub fn auth_check<E: Event>(
|
|||||||
// power levels.
|
// power levels.
|
||||||
|
|
||||||
if room_version.extra_redaction_checks
|
if room_version.extra_redaction_checks
|
||||||
&& *incoming_event.event_type() == RoomEventType::RoomRedaction
|
&& *incoming_event.event_type() == TimelineEventType::RoomRedaction
|
||||||
{
|
{
|
||||||
let redact_level = match power_levels_event {
|
let redact_level = match power_levels_event {
|
||||||
Some(pl) => {
|
Some(pl) => {
|
||||||
@ -905,7 +905,7 @@ fn check_redaction(
|
|||||||
/// Helper function to fetch the power level needed to send an event of type
|
/// Helper function to fetch the power level needed to send an event of type
|
||||||
/// `e_type` based on the rooms "m.room.power_level" event.
|
/// `e_type` based on the rooms "m.room.power_level" event.
|
||||||
fn get_send_level(
|
fn get_send_level(
|
||||||
e_type: &RoomEventType,
|
e_type: &TimelineEventType,
|
||||||
state_key: Option<&str>,
|
state_key: Option<&str>,
|
||||||
power_lvl: Option<impl Event>,
|
power_lvl: Option<impl Event>,
|
||||||
) -> Int {
|
) -> Int {
|
||||||
@ -991,7 +991,7 @@ mod tests {
|
|||||||
},
|
},
|
||||||
member::{MembershipState, RoomMemberEventContent},
|
member::{MembershipState, RoomMemberEventContent},
|
||||||
},
|
},
|
||||||
RoomEventType, StateEventType,
|
StateEventType, TimelineEventType,
|
||||||
};
|
};
|
||||||
use serde_json::value::to_raw_value as to_raw_json_value;
|
use serde_json::value::to_raw_value as to_raw_json_value;
|
||||||
|
|
||||||
@ -1018,7 +1018,7 @@ mod tests {
|
|||||||
let requester = to_pdu_event(
|
let requester = to_pdu_event(
|
||||||
"HELLO",
|
"HELLO",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(charlie().as_str()),
|
Some(charlie().as_str()),
|
||||||
member_content_ban(),
|
member_content_ban(),
|
||||||
&[],
|
&[],
|
||||||
@ -1060,7 +1060,7 @@ mod tests {
|
|||||||
let requester = to_pdu_event(
|
let requester = to_pdu_event(
|
||||||
"HELLO",
|
"HELLO",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(charlie().as_str()),
|
Some(charlie().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE"],
|
&["CREATE"],
|
||||||
@ -1102,7 +1102,7 @@ mod tests {
|
|||||||
let requester = to_pdu_event(
|
let requester = to_pdu_event(
|
||||||
"HELLO",
|
"HELLO",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(alice().as_str()),
|
Some(alice().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE"],
|
&["CREATE"],
|
||||||
@ -1144,7 +1144,7 @@ mod tests {
|
|||||||
let requester = to_pdu_event(
|
let requester = to_pdu_event(
|
||||||
"HELLO",
|
"HELLO",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(alice().as_str()),
|
Some(alice().as_str()),
|
||||||
member_content_ban(),
|
member_content_ban(),
|
||||||
&[],
|
&[],
|
||||||
@ -1180,7 +1180,7 @@ mod tests {
|
|||||||
*events.get_mut(&event_id("IJR")).unwrap() = to_pdu_event(
|
*events.get_mut(&event_id("IJR")).unwrap() = to_pdu_event(
|
||||||
"IJR",
|
"IJR",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomJoinRules,
|
TimelineEventType::RoomJoinRules,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Restricted(
|
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Restricted(
|
||||||
Restricted::new(vec![AllowRule::RoomMembership(RoomMembership::new(
|
Restricted::new(vec![AllowRule::RoomMembership(RoomMembership::new(
|
||||||
@ -1203,7 +1203,7 @@ mod tests {
|
|||||||
let requester = to_pdu_event(
|
let requester = to_pdu_event(
|
||||||
"HELLO",
|
"HELLO",
|
||||||
ella(),
|
ella(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(ella().as_str()),
|
Some(ella().as_str()),
|
||||||
to_raw_json_value(&RoomMemberEventContent::new(MembershipState::Join)).unwrap(),
|
to_raw_json_value(&RoomMemberEventContent::new(MembershipState::Join)).unwrap(),
|
||||||
&["CREATE", "IJR", "IPOWER", "new"],
|
&["CREATE", "IJR", "IPOWER", "new"],
|
||||||
@ -1255,7 +1255,7 @@ mod tests {
|
|||||||
*events.get_mut(&event_id("IJR")).unwrap() = to_pdu_event(
|
*events.get_mut(&event_id("IJR")).unwrap() = to_pdu_event(
|
||||||
"IJR",
|
"IJR",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomJoinRules,
|
TimelineEventType::RoomJoinRules,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Knock)).unwrap(),
|
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Knock)).unwrap(),
|
||||||
&["CREATE", "IMA", "IPOWER"],
|
&["CREATE", "IMA", "IPOWER"],
|
||||||
@ -1270,7 +1270,7 @@ mod tests {
|
|||||||
let requester = to_pdu_event(
|
let requester = to_pdu_event(
|
||||||
"HELLO",
|
"HELLO",
|
||||||
ella(),
|
ella(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(ella().as_str()),
|
Some(ella().as_str()),
|
||||||
to_raw_json_value(&RoomMemberEventContent::new(MembershipState::Knock)).unwrap(),
|
to_raw_json_value(&RoomMemberEventContent::new(MembershipState::Knock)).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
|
@ -10,7 +10,7 @@ use js_int::{int, Int};
|
|||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
events::{
|
events::{
|
||||||
room::member::{MembershipState, RoomMemberEventContent},
|
room::member::{MembershipState, RoomMemberEventContent},
|
||||||
RoomEventType, StateEventType,
|
StateEventType, TimelineEventType,
|
||||||
},
|
},
|
||||||
EventId, MilliSecondsSinceUnixEpoch, RoomVersionId,
|
EventId, MilliSecondsSinceUnixEpoch, RoomVersionId,
|
||||||
};
|
};
|
||||||
@ -352,7 +352,7 @@ fn get_power_level_for_sender<E: Event>(
|
|||||||
|
|
||||||
for aid in event.as_ref().map(|pdu| pdu.auth_events()).into_iter().flatten() {
|
for aid in event.as_ref().map(|pdu| pdu.auth_events()).into_iter().flatten() {
|
||||||
if let Some(aev) = fetch_event(aid.borrow()) {
|
if let Some(aev) = fetch_event(aid.borrow()) {
|
||||||
if is_type_and_key(&aev, &RoomEventType::RoomPowerLevels, "") {
|
if is_type_and_key(&aev, &TimelineEventType::RoomPowerLevels, "") {
|
||||||
pl = Some(aev);
|
pl = Some(aev);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -437,7 +437,7 @@ fn iterative_auth_check<E: Event + Clone>(
|
|||||||
// The key for this is (eventType + a state_key of the signed token not sender) so
|
// The key for this is (eventType + a state_key of the signed token not sender) so
|
||||||
// search for it
|
// search for it
|
||||||
let current_third_party = auth_events.iter().find_map(|(_, pdu)| {
|
let current_third_party = auth_events.iter().find_map(|(_, pdu)| {
|
||||||
(*pdu.event_type() == RoomEventType::RoomThirdPartyInvite).then_some(pdu)
|
(*pdu.event_type() == TimelineEventType::RoomThirdPartyInvite).then_some(pdu)
|
||||||
});
|
});
|
||||||
|
|
||||||
if auth_check(room_version, &event, current_third_party, |ty, key| {
|
if auth_check(room_version, &event, current_third_party, |ty, key| {
|
||||||
@ -487,7 +487,7 @@ fn mainline_sort<E: Event>(
|
|||||||
for aid in event.auth_events() {
|
for aid in event.auth_events() {
|
||||||
let ev = fetch_event(aid.borrow())
|
let ev = fetch_event(aid.borrow())
|
||||||
.ok_or_else(|| Error::NotFound(format!("Failed to find {aid}")))?;
|
.ok_or_else(|| Error::NotFound(format!("Failed to find {aid}")))?;
|
||||||
if is_type_and_key(&ev, &RoomEventType::RoomPowerLevels, "") {
|
if is_type_and_key(&ev, &TimelineEventType::RoomPowerLevels, "") {
|
||||||
pl = Some(aid.to_owned());
|
pl = Some(aid.to_owned());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -546,7 +546,7 @@ fn get_mainline_depth<E: Event>(
|
|||||||
for aid in sort_ev.auth_events() {
|
for aid in sort_ev.auth_events() {
|
||||||
let aev = fetch_event(aid.borrow())
|
let aev = fetch_event(aid.borrow())
|
||||||
.ok_or_else(|| Error::NotFound(format!("Failed to find {aid}")))?;
|
.ok_or_else(|| Error::NotFound(format!("Failed to find {aid}")))?;
|
||||||
if is_type_and_key(&aev, &RoomEventType::RoomPowerLevels, "") {
|
if is_type_and_key(&aev, &TimelineEventType::RoomPowerLevels, "") {
|
||||||
event = Some(aev);
|
event = Some(aev);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -588,16 +588,16 @@ fn is_power_event_id<E: Event>(event_id: &EventId, fetch: impl Fn(&EventId) -> O
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_type_and_key(ev: impl Event, ev_type: &RoomEventType, state_key: &str) -> bool {
|
fn is_type_and_key(ev: impl Event, ev_type: &TimelineEventType, state_key: &str) -> bool {
|
||||||
ev.event_type() == ev_type && ev.state_key() == Some(state_key)
|
ev.event_type() == ev_type && ev.state_key() == Some(state_key)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_power_event(event: impl Event) -> bool {
|
fn is_power_event(event: impl Event) -> bool {
|
||||||
match event.event_type() {
|
match event.event_type() {
|
||||||
RoomEventType::RoomPowerLevels
|
TimelineEventType::RoomPowerLevels
|
||||||
| RoomEventType::RoomJoinRules
|
| TimelineEventType::RoomJoinRules
|
||||||
| RoomEventType::RoomCreate => event.state_key() == Some(""),
|
| TimelineEventType::RoomCreate => event.state_key() == Some(""),
|
||||||
RoomEventType::RoomMember => {
|
TimelineEventType::RoomMember => {
|
||||||
if let Ok(content) = from_json_str::<RoomMemberEventContent>(event.content().get()) {
|
if let Ok(content) = from_json_str::<RoomMemberEventContent>(event.content().get()) {
|
||||||
if [MembershipState::Leave, MembershipState::Ban].contains(&content.membership) {
|
if [MembershipState::Leave, MembershipState::Ban].contains(&content.membership) {
|
||||||
return Some(event.sender().as_str()) != event.state_key();
|
return Some(event.sender().as_str()) != event.state_key();
|
||||||
@ -621,7 +621,7 @@ impl EventTypeExt for StateEventType {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl EventTypeExt for RoomEventType {
|
impl EventTypeExt for TimelineEventType {
|
||||||
fn with_state_key(self, state_key: impl Into<String>) -> (StateEventType, String) {
|
fn with_state_key(self, state_key: impl Into<String>) -> (StateEventType, String) {
|
||||||
(self.to_string().into(), state_key.into())
|
(self.to_string().into(), state_key.into())
|
||||||
}
|
}
|
||||||
@ -649,7 +649,7 @@ mod tests {
|
|||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
events::{
|
events::{
|
||||||
room::join_rules::{JoinRule, RoomJoinRulesEventContent},
|
room::join_rules::{JoinRule, RoomJoinRulesEventContent},
|
||||||
RoomEventType, StateEventType,
|
StateEventType, TimelineEventType,
|
||||||
},
|
},
|
||||||
MilliSecondsSinceUnixEpoch, OwnedEventId, RoomVersionId,
|
MilliSecondsSinceUnixEpoch, OwnedEventId, RoomVersionId,
|
||||||
};
|
};
|
||||||
@ -743,28 +743,28 @@ mod tests {
|
|||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PA",
|
"PA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"MA",
|
"MA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(alice().to_string().as_str()),
|
Some(alice().to_string().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"MB",
|
"MB",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(bob().to_string().as_str()),
|
Some(bob().to_string().as_str()),
|
||||||
member_content_ban(),
|
member_content_ban(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PB",
|
"PB",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
),
|
),
|
||||||
@ -790,42 +790,42 @@ mod tests {
|
|||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"T1",
|
"T1",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PA1",
|
"PA1",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"T2",
|
"T2",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PA2",
|
"PA2",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 0 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 0 } })).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PB",
|
"PB",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"T3",
|
"T3",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
@ -851,28 +851,28 @@ mod tests {
|
|||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"T1",
|
"T1",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PA",
|
"PA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"T2",
|
"T2",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"MB",
|
"MB",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(bob().to_string().as_str()),
|
Some(bob().to_string().as_str()),
|
||||||
member_content_ban(),
|
member_content_ban(),
|
||||||
),
|
),
|
||||||
@ -898,14 +898,14 @@ mod tests {
|
|||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"JR",
|
"JR",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomJoinRules,
|
TimelineEventType::RoomJoinRules,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Private)).unwrap(),
|
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Private)).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"ME",
|
"ME",
|
||||||
ella(),
|
ella(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(ella().to_string().as_str()),
|
Some(ella().to_string().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
),
|
),
|
||||||
@ -930,14 +930,14 @@ mod tests {
|
|||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PA",
|
"PA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PB",
|
"PB",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50, charlie(): 50 } }))
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50, charlie(): 50 } }))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
@ -945,7 +945,7 @@ mod tests {
|
|||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PC",
|
"PC",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50, charlie(): 0 } }))
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50, charlie(): 0 } }))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
@ -971,56 +971,56 @@ mod tests {
|
|||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"T1",
|
"T1",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PA1",
|
"PA1",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"T2",
|
"T2",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PA2",
|
"PA2",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 0 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 0 } })).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"PB",
|
"PB",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"T3",
|
"T3",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"MZ1",
|
"MZ1",
|
||||||
zara(),
|
zara(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
to_init_pdu_event(
|
to_init_pdu_event(
|
||||||
"T4",
|
"T4",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomTopic,
|
TimelineEventType::RoomTopic,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
),
|
),
|
||||||
@ -1211,7 +1211,7 @@ mod tests {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"PA",
|
"PA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
&["CREATE", "IMA", "IPOWER"], // auth_events
|
&["CREATE", "IMA", "IPOWER"], // auth_events
|
||||||
@ -1220,7 +1220,7 @@ mod tests {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"PB",
|
"PB",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100, bob(): 50 } })).unwrap(),
|
||||||
&["CREATE", "IMA", "IPOWER"],
|
&["CREATE", "IMA", "IPOWER"],
|
||||||
@ -1229,7 +1229,7 @@ mod tests {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"MB",
|
"MB",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(ella().as_str()),
|
Some(ella().as_str()),
|
||||||
member_content_ban(),
|
member_content_ban(),
|
||||||
&["CREATE", "IMA", "PB"],
|
&["CREATE", "IMA", "PB"],
|
||||||
@ -1238,7 +1238,7 @@ mod tests {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IME",
|
"IME",
|
||||||
ella(),
|
ella(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(ella().as_str()),
|
Some(ella().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE", "IJR", "PA"],
|
&["CREATE", "IJR", "PA"],
|
||||||
@ -1256,7 +1256,7 @@ mod tests {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"JR",
|
"JR",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomJoinRules,
|
TimelineEventType::RoomJoinRules,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "join_rule": "invite" })).unwrap(),
|
to_raw_json_value(&json!({ "join_rule": "invite" })).unwrap(),
|
||||||
&["CREATE", "IMA", "IPOWER"],
|
&["CREATE", "IMA", "IPOWER"],
|
||||||
@ -1265,7 +1265,7 @@ mod tests {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IMZ",
|
"IMZ",
|
||||||
zara(),
|
zara(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(zara().as_str()),
|
Some(zara().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE", "JR", "IPOWER"],
|
&["CREATE", "JR", "IPOWER"],
|
||||||
|
@ -2,7 +2,7 @@ use std::collections::BTreeMap;
|
|||||||
|
|
||||||
use js_int::Int;
|
use js_int::Int;
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
events::{room::power_levels::RoomPowerLevelsEventContent, RoomEventType},
|
events::{room::power_levels::RoomPowerLevelsEventContent, TimelineEventType},
|
||||||
power_levels::{default_power_level, NotificationPowerLevels},
|
power_levels::{default_power_level, NotificationPowerLevels},
|
||||||
serde::{btreemap_deserialize_v1_powerlevel_values, deserialize_v1_powerlevel},
|
serde::{btreemap_deserialize_v1_powerlevel_values, deserialize_v1_powerlevel},
|
||||||
OwnedUserId,
|
OwnedUserId,
|
||||||
@ -19,7 +19,7 @@ struct IntRoomPowerLevelsEventContent {
|
|||||||
pub ban: Int,
|
pub ban: Int,
|
||||||
|
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub events: BTreeMap<RoomEventType, Int>,
|
pub events: BTreeMap<TimelineEventType, Int>,
|
||||||
|
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub events_default: Int,
|
pub events_default: Int,
|
||||||
|
@ -5,7 +5,7 @@ use std::{
|
|||||||
sync::Arc,
|
sync::Arc,
|
||||||
};
|
};
|
||||||
|
|
||||||
use ruma_common::{events::RoomEventType, EventId, MilliSecondsSinceUnixEpoch, RoomId, UserId};
|
use ruma_common::{events::TimelineEventType, EventId, MilliSecondsSinceUnixEpoch, RoomId, UserId};
|
||||||
use serde_json::value::RawValue as RawJsonValue;
|
use serde_json::value::RawValue as RawJsonValue;
|
||||||
|
|
||||||
/// Abstraction of a PDU so users can have their own PDU types.
|
/// Abstraction of a PDU so users can have their own PDU types.
|
||||||
@ -25,7 +25,7 @@ pub trait Event {
|
|||||||
fn origin_server_ts(&self) -> MilliSecondsSinceUnixEpoch;
|
fn origin_server_ts(&self) -> MilliSecondsSinceUnixEpoch;
|
||||||
|
|
||||||
/// The event type.
|
/// The event type.
|
||||||
fn event_type(&self) -> &RoomEventType;
|
fn event_type(&self) -> &TimelineEventType;
|
||||||
|
|
||||||
/// The event's content.
|
/// The event's content.
|
||||||
fn content(&self) -> &RawJsonValue;
|
fn content(&self) -> &RawJsonValue;
|
||||||
@ -64,7 +64,7 @@ impl<T: Event> Event for &T {
|
|||||||
(*self).origin_server_ts()
|
(*self).origin_server_ts()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn event_type(&self) -> &RoomEventType {
|
fn event_type(&self) -> &TimelineEventType {
|
||||||
(*self).event_type()
|
(*self).event_type()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ impl<T: Event> Event for Arc<T> {
|
|||||||
(**self).origin_server_ts()
|
(**self).origin_server_ts()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn event_type(&self) -> &RoomEventType {
|
fn event_type(&self) -> &TimelineEventType {
|
||||||
(**self).event_type()
|
(**self).event_type()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ use ruma_common::{
|
|||||||
join_rules::{JoinRule, RoomJoinRulesEventContent},
|
join_rules::{JoinRule, RoomJoinRulesEventContent},
|
||||||
member::{MembershipState, RoomMemberEventContent},
|
member::{MembershipState, RoomMemberEventContent},
|
||||||
},
|
},
|
||||||
RoomEventType,
|
TimelineEventType,
|
||||||
},
|
},
|
||||||
room_id, user_id, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, RoomVersionId,
|
room_id, user_id, EventId, MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, RoomVersionId,
|
||||||
UserId,
|
UserId,
|
||||||
@ -251,7 +251,7 @@ impl TestStore<PduEvent> {
|
|||||||
let create_event = to_pdu_event::<&EventId>(
|
let create_event = to_pdu_event::<&EventId>(
|
||||||
"CREATE",
|
"CREATE",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomCreate,
|
TimelineEventType::RoomCreate,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
@ -263,7 +263,7 @@ impl TestStore<PduEvent> {
|
|||||||
let alice_mem = to_pdu_event(
|
let alice_mem = to_pdu_event(
|
||||||
"IMA",
|
"IMA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(alice().as_str()),
|
Some(alice().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&[cre.clone()],
|
&[cre.clone()],
|
||||||
@ -274,7 +274,7 @@ impl TestStore<PduEvent> {
|
|||||||
let join_rules = to_pdu_event(
|
let join_rules = to_pdu_event(
|
||||||
"IJR",
|
"IJR",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomJoinRules,
|
TimelineEventType::RoomJoinRules,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Public)).unwrap(),
|
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Public)).unwrap(),
|
||||||
&[cre.clone(), alice_mem.event_id().to_owned()],
|
&[cre.clone(), alice_mem.event_id().to_owned()],
|
||||||
@ -287,7 +287,7 @@ impl TestStore<PduEvent> {
|
|||||||
let bob_mem = to_pdu_event(
|
let bob_mem = to_pdu_event(
|
||||||
"IMB",
|
"IMB",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(bob().as_str()),
|
Some(bob().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&[cre.clone(), join_rules.event_id().to_owned()],
|
&[cre.clone(), join_rules.event_id().to_owned()],
|
||||||
@ -298,7 +298,7 @@ impl TestStore<PduEvent> {
|
|||||||
let charlie_mem = to_pdu_event(
|
let charlie_mem = to_pdu_event(
|
||||||
"IMC",
|
"IMC",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(charlie().as_str()),
|
Some(charlie().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&[cre, join_rules.event_id().to_owned()],
|
&[cre, join_rules.event_id().to_owned()],
|
||||||
@ -374,7 +374,7 @@ pub fn member_content_join() -> Box<RawJsonValue> {
|
|||||||
pub fn to_init_pdu_event(
|
pub fn to_init_pdu_event(
|
||||||
id: &str,
|
id: &str,
|
||||||
sender: &UserId,
|
sender: &UserId,
|
||||||
ev_type: RoomEventType,
|
ev_type: TimelineEventType,
|
||||||
state_key: Option<&str>,
|
state_key: Option<&str>,
|
||||||
content: Box<RawJsonValue>,
|
content: Box<RawJsonValue>,
|
||||||
) -> Arc<PduEvent> {
|
) -> Arc<PduEvent> {
|
||||||
@ -405,7 +405,7 @@ pub fn to_init_pdu_event(
|
|||||||
pub fn to_pdu_event<S>(
|
pub fn to_pdu_event<S>(
|
||||||
id: &str,
|
id: &str,
|
||||||
sender: &UserId,
|
sender: &UserId,
|
||||||
ev_type: RoomEventType,
|
ev_type: TimelineEventType,
|
||||||
state_key: Option<&str>,
|
state_key: Option<&str>,
|
||||||
content: Box<RawJsonValue>,
|
content: Box<RawJsonValue>,
|
||||||
auth_events: &[S],
|
auth_events: &[S],
|
||||||
@ -447,7 +447,7 @@ pub fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event::<&EventId>(
|
to_pdu_event::<&EventId>(
|
||||||
"CREATE",
|
"CREATE",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomCreate,
|
TimelineEventType::RoomCreate,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
@ -456,7 +456,7 @@ pub fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IMA",
|
"IMA",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(alice().as_str()),
|
Some(alice().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE"],
|
&["CREATE"],
|
||||||
@ -465,7 +465,7 @@ pub fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IPOWER",
|
"IPOWER",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomPowerLevels,
|
TimelineEventType::RoomPowerLevels,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "users": { alice(): 100 } })).unwrap(),
|
to_raw_json_value(&json!({ "users": { alice(): 100 } })).unwrap(),
|
||||||
&["CREATE", "IMA"],
|
&["CREATE", "IMA"],
|
||||||
@ -474,7 +474,7 @@ pub fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IJR",
|
"IJR",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomJoinRules,
|
TimelineEventType::RoomJoinRules,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Public)).unwrap(),
|
to_raw_json_value(&RoomJoinRulesEventContent::new(JoinRule::Public)).unwrap(),
|
||||||
&["CREATE", "IMA", "IPOWER"],
|
&["CREATE", "IMA", "IPOWER"],
|
||||||
@ -483,7 +483,7 @@ pub fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IMB",
|
"IMB",
|
||||||
bob(),
|
bob(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(bob().as_str()),
|
Some(bob().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE", "IJR", "IPOWER"],
|
&["CREATE", "IJR", "IPOWER"],
|
||||||
@ -492,7 +492,7 @@ pub fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event(
|
to_pdu_event(
|
||||||
"IMC",
|
"IMC",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomMember,
|
TimelineEventType::RoomMember,
|
||||||
Some(charlie().as_str()),
|
Some(charlie().as_str()),
|
||||||
member_content_join(),
|
member_content_join(),
|
||||||
&["CREATE", "IJR", "IPOWER"],
|
&["CREATE", "IJR", "IPOWER"],
|
||||||
@ -501,7 +501,7 @@ pub fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event::<&EventId>(
|
to_pdu_event::<&EventId>(
|
||||||
"START",
|
"START",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomMessage,
|
TimelineEventType::RoomMessage,
|
||||||
Some("dummy"),
|
Some("dummy"),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
@ -510,7 +510,7 @@ pub fn INITIAL_EVENTS() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
to_pdu_event::<&EventId>(
|
to_pdu_event::<&EventId>(
|
||||||
"END",
|
"END",
|
||||||
charlie(),
|
charlie(),
|
||||||
RoomEventType::RoomMessage,
|
TimelineEventType::RoomMessage,
|
||||||
Some("dummy"),
|
Some("dummy"),
|
||||||
to_raw_json_value(&json!({})).unwrap(),
|
to_raw_json_value(&json!({})).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
@ -528,7 +528,7 @@ pub fn INITIAL_EVENTS_CREATE_ROOM() -> HashMap<OwnedEventId, Arc<PduEvent>> {
|
|||||||
vec![to_pdu_event::<&EventId>(
|
vec![to_pdu_event::<&EventId>(
|
||||||
"CREATE",
|
"CREATE",
|
||||||
alice(),
|
alice(),
|
||||||
RoomEventType::RoomCreate,
|
TimelineEventType::RoomCreate,
|
||||||
Some(""),
|
Some(""),
|
||||||
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
to_raw_json_value(&json!({ "creator": alice() })).unwrap(),
|
||||||
&[],
|
&[],
|
||||||
@ -549,7 +549,7 @@ pub fn INITIAL_EDGES() -> Vec<OwnedEventId> {
|
|||||||
|
|
||||||
pub mod event {
|
pub mod event {
|
||||||
use ruma_common::{
|
use ruma_common::{
|
||||||
events::{pdu::Pdu, RoomEventType},
|
events::{pdu::Pdu, TimelineEventType},
|
||||||
MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, UserId,
|
MilliSecondsSinceUnixEpoch, OwnedEventId, RoomId, UserId,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@ -582,7 +582,7 @@ pub mod event {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn event_type(&self) -> &RoomEventType {
|
fn event_type(&self) -> &TimelineEventType {
|
||||||
match &self.rest {
|
match &self.rest {
|
||||||
Pdu::RoomV1Pdu(ev) => &ev.kind,
|
Pdu::RoomV1Pdu(ev) => &ev.kind,
|
||||||
Pdu::RoomV3Pdu(ev) => &ev.kind,
|
Pdu::RoomV3Pdu(ev) => &ev.kind,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user