Skip to content

Commit fd287fd

Browse files
committed
room edit: don't use async_trait for EventSource either
1 parent e471496 commit fd287fd

File tree

1 file changed

+35
-25
lines changed

1 file changed

+35
-25
lines changed

crates/matrix-sdk/src/room/edit.rs

+35-25
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414

1515
//! Facilities to edit existing events.
1616
17+
use std::future::Future;
18+
1719
use matrix_sdk_base::deserialized_responses::SyncTimelineEvent;
1820
use ruma::{
1921
events::{
@@ -88,34 +90,38 @@ impl Room {
8890
}
8991
}
9092

91-
#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
92-
#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
9393
trait EventSource {
94-
async fn get_event(&self, event_id: &EventId) -> Result<SyncTimelineEvent, EditError>;
94+
fn get_event(
95+
&self,
96+
event_id: &EventId,
97+
) -> impl Future<Output = Result<SyncTimelineEvent, EditError>>;
9598
}
9699

97-
#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
98-
#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
99100
impl<'a> EventSource for &'a Room {
100-
async fn get_event(&self, event_id: &EventId) -> Result<SyncTimelineEvent, EditError> {
101-
match self.event_cache().await {
102-
Ok((event_cache, _drop_handles)) => {
103-
if let Some(event) = event_cache.event(event_id).await {
104-
return Ok(event);
101+
fn get_event(
102+
&self,
103+
event_id: &EventId,
104+
) -> impl Future<Output = Result<SyncTimelineEvent, EditError>> {
105+
async {
106+
match self.event_cache().await {
107+
Ok((event_cache, _drop_handles)) => {
108+
if let Some(event) = event_cache.event(event_id).await {
109+
return Ok(event);
110+
}
111+
// Fallthrough: try with /event.
105112
}
106-
// Fallthrough: try with /event.
107-
}
108113

109-
Err(err) => {
110-
debug!("error when getting the event cache: {err}");
114+
Err(err) => {
115+
debug!("error when getting the event cache: {err}");
116+
}
111117
}
112-
}
113118

114-
trace!("trying with /event now");
115-
self.event(event_id, None)
116-
.await
117-
.map(Into::into)
118-
.map_err(|err| EditError::Fetch(Box::new(err)))
119+
trace!("trying with /event now");
120+
self.event(event_id, None)
121+
.await
122+
.map(Into::into)
123+
.map_err(|err| EditError::Fetch(Box::new(err)))
124+
}
119125
}
120126
}
121127

@@ -200,7 +206,10 @@ async fn make_edit_event<S: EventSource>(
200206

201207
#[cfg(test)]
202208
mod tests {
203-
use std::collections::BTreeMap;
209+
use std::{
210+
collections::BTreeMap,
211+
future::{ready, Future},
212+
};
204213

205214
use assert_matches2::{assert_let, assert_matches};
206215
use matrix_sdk_base::deserialized_responses::SyncTimelineEvent;
@@ -225,11 +234,12 @@ mod tests {
225234
events: BTreeMap<OwnedEventId, SyncTimelineEvent>,
226235
}
227236

228-
#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
229-
#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
230237
impl EventSource for TestEventCache {
231-
async fn get_event(&self, event_id: &EventId) -> Result<SyncTimelineEvent, EditError> {
232-
Ok(self.events.get(event_id).unwrap().clone())
238+
fn get_event(
239+
&self,
240+
event_id: &EventId,
241+
) -> impl Future<Output = Result<SyncTimelineEvent, EditError>> {
242+
ready(Ok(self.events.get(event_id).unwrap().clone()))
233243
}
234244
}
235245

0 commit comments

Comments
 (0)