Add constructor from CanonicalJsonObject to StateEvent

This commit is contained in:
Devin Ragotzy 2020-11-30 12:04:07 -05:00
parent b04c74ce88
commit db3f68626d
3 changed files with 13 additions and 19 deletions

View File

@ -10,7 +10,6 @@ use criterion::{criterion_group, criterion_main, Criterion};
use maplit::btreemap; use maplit::btreemap;
use ruma::{ use ruma::{
events::{ events::{
pdu::EventHash,
room::{ room::{
join_rules::JoinRule, join_rules::JoinRule,
member::{MemberEventContent, MembershipState}, member::{MemberEventContent, MembershipState},
@ -51,7 +50,7 @@ fn resolution_shallow_auth_chain(c: &mut Criterion) {
b.iter(|| { b.iter(|| {
let _resolved = match StateResolution::resolve( let _resolved = match StateResolution::resolve(
&room_id(), &room_id(),
&RoomVersionId::Version2, &RoomVersionId::Version6,
&[state_at_bob.clone(), state_at_charlie.clone()], &[state_at_bob.clone(), state_at_charlie.clone()],
None, None,
&store, &store,
@ -299,27 +298,11 @@ where
.iter() .iter()
.map(AsRef::as_ref) .map(AsRef::as_ref)
.map(event_id) .map(event_id)
.map(|id| {
(
id,
EventHash {
sha256: "hello".into(),
},
)
})
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let prev_events = prev_events let prev_events = prev_events
.iter() .iter()
.map(AsRef::as_ref) .map(AsRef::as_ref)
.map(event_id) .map(event_id)
.map(|id| {
(
id,
EventHash {
sha256: "hello".into(),
},
)
})
.collect::<Vec<_>>(); .collect::<Vec<_>>();
let json = if let Some(state_key) = state_key { let json = if let Some(state_key) = state_key {

View File

@ -141,6 +141,17 @@ impl StateEvent {
)) ))
} }
pub fn from_id_canon_obj(
id: EventId,
json: ruma::serde::CanonicalJsonObject,
) -> Result<Self, serde_json::Error> {
Ok(Self::Full(
id,
// TODO: this is unfortunate (from_value(to_value(json)))...
Pdu::RoomV3Pdu(serde_json::from_value(serde_json::to_value(json)?)?),
))
}
pub fn to_requester(&self) -> Requester<'_> { pub fn to_requester(&self) -> Requester<'_> {
Requester { Requester {
prev_event_ids: self.prev_event_ids(), prev_event_ids: self.prev_event_ids(),