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 | ||||
|             .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"), | ||||
|  |  | |||
|  | @ -62,6 +62,7 @@ impl Database { | |||
|                     .to_owned()) | ||||
|             })?; | ||||
| 
 | ||||
|         println!("{:?}", path); | ||||
|         let db = sled::open(&path)?; | ||||
|         info!("Opened sled database at {}", path); | ||||
| 
 | ||||
|  |  | |||
|  | @ -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); | ||||
| 
 | ||||
|  |  | |||
|  | @ -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") | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -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(), | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue