diff --git a/src/service/rooms/short/mod.rs b/src/service/rooms/short/mod.rs index edd66028..595a73cb 100644 --- a/src/service/rooms/short/mod.rs +++ b/src/service/rooms/short/mod.rs @@ -149,7 +149,7 @@ pub async fn get_shortstatekey( #[implement(Service)] pub async fn get_eventid_from_short(&self, shorteventid: ShortEventId) -> Result where - Id: for<'de> Deserialize<'de> + Sized + ToOwned, + Id: for<'de> Deserialize<'de> + Send + Sized + ToOwned, ::Owned: Borrow, { const BUFSIZE: usize = size_of::(); @@ -169,7 +169,7 @@ pub fn multi_get_eventid_from_short<'a, Id, S>( ) -> impl Stream> + Send + 'a where S: Stream + Send + 'a, - Id: for<'de> Deserialize<'de> + Sized + ToOwned + 'a, + Id: for<'de> Deserialize<'de> + Send + Sized + ToOwned + 'a, ::Owned: Borrow, { shorteventid diff --git a/src/service/rooms/state_accessor/mod.rs b/src/service/rooms/state_accessor/mod.rs index 86f8c2b4..42b6a7f5 100644 --- a/src/service/rooms/state_accessor/mod.rs +++ b/src/service/rooms/state_accessor/mod.rs @@ -29,7 +29,7 @@ use ruma::{ }; use tuwunel_core::{ Result, err, - matrix::{Event, room_version, state_res::events::RoomCreateEvent}, + matrix::{Pdu, room_version, state_res::events::RoomCreateEvent}, }; pub struct Service { @@ -65,7 +65,7 @@ impl Service { Ok(RoomPowerLevels::new(power_levels.into(), &rules.authorization, creators)) } - pub async fn get_create(&self, room_id: &RoomId) -> Result> { + pub async fn get_create(&self, room_id: &RoomId) -> Result> { self.room_state_get(room_id, &StateEventType::RoomCreate, "") .await .map(RoomCreateEvent::new) diff --git a/src/service/rooms/state_accessor/room_state.rs b/src/service/rooms/state_accessor/room_state.rs index d58acd39..215ba448 100644 --- a/src/service/rooms/state_accessor/room_state.rs +++ b/src/service/rooms/state_accessor/room_state.rs @@ -5,7 +5,7 @@ use ruma::{EventId, RoomId, events::StateEventType}; use serde::Deserialize; use tuwunel_core::{ Result, err, implement, - matrix::{Event, StateKey}, + matrix::{Event, Pdu, StateKey}, }; /// Returns a single PDU from `room_id` with key (`event_type`,`state_key`). @@ -17,7 +17,7 @@ pub async fn room_state_get_content( state_key: &str, ) -> Result where - T: for<'de> Deserialize<'de>, + T: for<'de> Deserialize<'de> + Send, { self.room_state_get(room_id, event_type, state_key) .await @@ -69,7 +69,7 @@ pub async fn room_state_get_id( state_key: &str, ) -> Result where - Id: for<'de> Deserialize<'de> + Sized + ToOwned, + Id: for<'de> Deserialize<'de> + Send + Sized + ToOwned, ::Owned: Borrow, { self.services @@ -88,7 +88,7 @@ pub async fn room_state_get( room_id: &RoomId, event_type: &StateEventType, state_key: &str, -) -> Result { +) -> Result { self.services .state .get_room_shortstatehash(room_id) diff --git a/src/service/rooms/state_accessor/state.rs b/src/service/rooms/state_accessor/state.rs index 95dbd615..2b98e139 100644 --- a/src/service/rooms/state_accessor/state.rs +++ b/src/service/rooms/state_accessor/state.rs @@ -11,7 +11,7 @@ use ruma::{ use serde::Deserialize; use tuwunel_core::{ Result, at, err, implement, - matrix::{Event, StateKey}, + matrix::{Event, Pdu, StateKey}, pair_of, utils::{ result::FlatOk, @@ -64,7 +64,7 @@ pub async fn state_get_content( state_key: &str, ) -> Result where - T: for<'de> Deserialize<'de>, + T: for<'de> Deserialize<'de> + Send, { self.state_get(shortstatehash, event_type, state_key) .await @@ -127,10 +127,12 @@ pub async fn state_get( shortstatehash: ShortStateHash, event_type: &StateEventType, state_key: &str, -) -> Result { - self.state_get_id(shortstatehash, event_type, state_key) - .and_then(async |event_id: OwnedEventId| self.services.timeline.get_pdu(&event_id).await) - .await +) -> Result { + let event_id: OwnedEventId = self + .state_get_id(shortstatehash, event_type, state_key) + .await?; + + self.services.timeline.get_pdu(&event_id).await } /// Returns a single EventId from `room_id` with key (`event_type`, @@ -143,7 +145,7 @@ pub async fn state_get_id( state_key: &str, ) -> Result where - Id: for<'de> Deserialize<'de> + Sized + ToOwned, + Id: for<'de> Deserialize<'de> + Send + Sized + ToOwned, ::Owned: Borrow, { let shorteventid = self