mirror of
https://gitlab.com/famedly/conduit.git
synced 2024-12-25 18:14:38 +01:00
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)
This commit is contained in:
parent
84dcb885a7
commit
63e23154f3
6 changed files with 2149 additions and 25 deletions
2128
Cargo.lock
generated
Normal file
2128
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
|
@ -2523,13 +2523,6 @@ pub fn sync_route(
|
||||||
.edus
|
.edus
|
||||||
.roomlatests_since(&room_id, since)?
|
.roomlatests_since(&room_id, since)?
|
||||||
.filter_map(|r| r.ok()) // Filter out buggy events
|
.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<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
if db
|
if db
|
||||||
|
@ -2617,13 +2610,6 @@ pub fn sync_route(
|
||||||
.edus
|
.edus
|
||||||
.roomlatests_since(&room_id, since)?
|
.roomlatests_since(&room_id, since)?
|
||||||
.filter_map(|r| r.ok()) // Filter out buggy events
|
.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<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
if db
|
if db
|
||||||
|
@ -2634,9 +2620,9 @@ pub fn sync_route(
|
||||||
{
|
{
|
||||||
edus.push(
|
edus.push(
|
||||||
serde_json::from_str(
|
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)?,
|
db.rooms.edus.roomactives_all(&room_id)?,
|
||||||
)))
|
))
|
||||||
.expect("event is valid, we just created it"),
|
.expect("event is valid, we just created it"),
|
||||||
)
|
)
|
||||||
.expect("event is valid, we just created it"),
|
.expect("event is valid, we just created it"),
|
||||||
|
|
|
@ -62,6 +62,7 @@ impl Database {
|
||||||
.to_owned())
|
.to_owned())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
println!("{:?}", path);
|
||||||
let db = sled::open(&path)?;
|
let db = sled::open(&path)?;
|
||||||
info!("Opened sled database at {}", path);
|
info!("Opened sled database at {}", path);
|
||||||
|
|
||||||
|
|
|
@ -61,7 +61,8 @@ impl RoomEdus {
|
||||||
&self,
|
&self,
|
||||||
room_id: &RoomId,
|
room_id: &RoomId,
|
||||||
since: u64,
|
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();
|
let mut prefix = room_id.to_string().as_bytes().to_vec();
|
||||||
prefix.push(0xff);
|
prefix.push(0xff);
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,9 @@ use crate::{Error, Result};
|
||||||
use js_int::UInt;
|
use js_int::UInt;
|
||||||
use ruma::{
|
use ruma::{
|
||||||
events::{
|
events::{
|
||||||
pdu::EventHash, AnyRoomEvent, AnyRoomEventStub, AnyStateEvent, AnyStateEventStub,
|
pdu::EventHash, room::member::MemberEventContent, AnyRoomEvent, AnyRoomEventStub,
|
||||||
AnyStrippedStateEventStub, EventJson, EventType,
|
AnyStateEvent, AnyStateEventStub, AnyStrippedStateEventStub, EventJson, EventType,
|
||||||
|
StateEvent,
|
||||||
},
|
},
|
||||||
identifiers::{EventId, RoomId, UserId},
|
identifiers::{EventId, RoomId, UserId},
|
||||||
};
|
};
|
||||||
|
@ -103,9 +104,9 @@ impl PduEvent {
|
||||||
serde_json::from_str::<EventJson<AnyStrippedStateEventStub>>(&json)
|
serde_json::from_str::<EventJson<AnyStrippedStateEventStub>>(&json)
|
||||||
.expect("EventJson::from_str always works")
|
.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");
|
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")
|
.expect("EventJson::from_str always works")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
|
use js_int::uint;
|
||||||
use ruma::{
|
use ruma::{
|
||||||
events::push_rules::{ConditionalPushRule, PatternedPushRule, PushCondition, Ruleset},
|
|
||||||
identifiers::UserId,
|
identifiers::UserId,
|
||||||
push::{Action, Tweak},
|
push::{
|
||||||
|
Action, ConditionalPushRule, PatternedPushRule, PushCondition, RoomMemberCountIs, Ruleset,
|
||||||
|
Tweak,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn default_pushrules(user_id: &UserId) -> Ruleset {
|
pub fn default_pushrules(user_id: &UserId) -> Ruleset {
|
||||||
|
@ -174,7 +177,9 @@ pub fn encrypted_room_one_to_one_rule() -> ConditionalPushRule {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
rule_id: ".m.rule.encrypted_room_one_to_one".to_owned(),
|
rule_id: ".m.rule.encrypted_room_one_to_one".to_owned(),
|
||||||
conditions: vec![
|
conditions: vec![
|
||||||
PushCondition::RoomMemberCount { is: "2".to_owned() },
|
PushCondition::RoomMemberCount {
|
||||||
|
is: RoomMemberCountIs::from(uint!(2)..),
|
||||||
|
},
|
||||||
PushCondition::EventMatch {
|
PushCondition::EventMatch {
|
||||||
key: "type".to_owned(),
|
key: "type".to_owned(),
|
||||||
pattern: "m.room.encrypted".to_owned(),
|
pattern: "m.room.encrypted".to_owned(),
|
||||||
|
@ -194,7 +199,9 @@ pub fn room_one_to_one_rule() -> ConditionalPushRule {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
rule_id: ".m.rule.room_one_to_one".to_owned(),
|
rule_id: ".m.rule.room_one_to_one".to_owned(),
|
||||||
conditions: vec![
|
conditions: vec![
|
||||||
PushCondition::RoomMemberCount { is: "2".to_owned() },
|
PushCondition::RoomMemberCount {
|
||||||
|
is: RoomMemberCountIs::from(uint!(2)..),
|
||||||
|
},
|
||||||
PushCondition::EventMatch {
|
PushCondition::EventMatch {
|
||||||
key: "type".to_owned(),
|
key: "type".to_owned(),
|
||||||
pattern: "m.room.message".to_owned(),
|
pattern: "m.room.message".to_owned(),
|
||||||
|
|
Loading…
Reference in a new issue