Rebase with key backups and cross signing

Moved back to a fork of ruma with timo's key-backup and cross-signing
branch. Ephemeral events in sync responses are EphemeralRoomEventStub
(they also have no room_id like all of sync responses events)
next
Devin R 2020-06-26 18:34:11 -04:00
parent 84dcb885a7
commit 63e23154f3
6 changed files with 2149 additions and 25 deletions

2128
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2523,13 +2523,6 @@ pub fn sync_route(
.edus
.roomlatests_since(&room_id, since)?
.filter_map(|r| r.ok()) // Filter out buggy events
.filter_map(|r| {
if let Ok(EduEvent::Ephemeral(ev)) = r.deserialize() {
Some(EventJson::from(ev))
} else {
None
}
})
.collect::<Vec<_>>();
if db
@ -2617,13 +2610,6 @@ pub fn sync_route(
.edus
.roomlatests_since(&room_id, since)?
.filter_map(|r| r.ok()) // Filter out buggy events
.filter_map(|r| {
if let Ok(EduEvent::Ephemeral(ev)) = r.deserialize() {
Some(EventJson::from(ev))
} else {
None
}
})
.collect::<Vec<_>>();
if db
@ -2634,9 +2620,9 @@ pub fn sync_route(
{
edus.push(
serde_json::from_str(
&serde_json::to_string(&EduEvent::Ephemeral(AnyEphemeralRoomEvent::Typing(
&serde_json::to_string(&ruma::events::AnyEphemeralRoomEventStub::Typing(
db.rooms.edus.roomactives_all(&room_id)?,
)))
))
.expect("event is valid, we just created it"),
)
.expect("event is valid, we just created it"),

View File

@ -62,6 +62,7 @@ impl Database {
.to_owned())
})?;
println!("{:?}", path);
let db = sled::open(&path)?;
info!("Opened sled database at {}", path);

View File

@ -61,7 +61,8 @@ impl RoomEdus {
&self,
room_id: &RoomId,
since: u64,
) -> Result<impl Iterator<Item = Result<EventJson<EduEvent>>>> {
) -> Result<impl Iterator<Item = Result<EventJson<ruma::events::AnyEphemeralRoomEventStub>>>>
{
let mut prefix = room_id.to_string().as_bytes().to_vec();
prefix.push(0xff);

View File

@ -2,8 +2,9 @@ use crate::{Error, Result};
use js_int::UInt;
use ruma::{
events::{
pdu::EventHash, AnyRoomEvent, AnyRoomEventStub, AnyStateEvent, AnyStateEventStub,
AnyStrippedStateEventStub, EventJson, EventType,
pdu::EventHash, room::member::MemberEventContent, AnyRoomEvent, AnyRoomEventStub,
AnyStateEvent, AnyStateEventStub, AnyStrippedStateEventStub, EventJson, EventType,
StateEvent,
},
identifiers::{EventId, RoomId, UserId},
};
@ -103,9 +104,9 @@ impl PduEvent {
serde_json::from_str::<EventJson<AnyStrippedStateEventStub>>(&json)
.expect("EventJson::from_str always works")
}
pub fn to_member_event(&self) -> EventJson<MemberEvent> {
pub fn to_member_event(&self) -> EventJson<StateEvent<MemberEventContent>> {
let json = serde_json::to_string(&self).expect("PDUs are always valid");
serde_json::from_str::<EventJson<MemberEvent>>(&json)
serde_json::from_str::<EventJson<StateEvent<MemberEventContent>>>(&json)
.expect("EventJson::from_str always works")
}
}

View File

@ -1,7 +1,10 @@
use js_int::uint;
use ruma::{
events::push_rules::{ConditionalPushRule, PatternedPushRule, PushCondition, Ruleset},
identifiers::UserId,
push::{Action, Tweak},
push::{
Action, ConditionalPushRule, PatternedPushRule, PushCondition, RoomMemberCountIs, Ruleset,
Tweak,
},
};
pub fn default_pushrules(user_id: &UserId) -> Ruleset {
@ -174,7 +177,9 @@ pub fn encrypted_room_one_to_one_rule() -> ConditionalPushRule {
enabled: true,
rule_id: ".m.rule.encrypted_room_one_to_one".to_owned(),
conditions: vec![
PushCondition::RoomMemberCount { is: "2".to_owned() },
PushCondition::RoomMemberCount {
is: RoomMemberCountIs::from(uint!(2)..),
},
PushCondition::EventMatch {
key: "type".to_owned(),
pattern: "m.room.encrypted".to_owned(),
@ -194,7 +199,9 @@ pub fn room_one_to_one_rule() -> ConditionalPushRule {
enabled: true,
rule_id: ".m.rule.room_one_to_one".to_owned(),
conditions: vec![
PushCondition::RoomMemberCount { is: "2".to_owned() },
PushCondition::RoomMemberCount {
is: RoomMemberCountIs::from(uint!(2)..),
},
PushCondition::EventMatch {
key: "type".to_owned(),
pattern: "m.room.message".to_owned(),