diff --git a/examples/login.rs b/examples/login.rs index a076cc846..32af92d21 100644 --- a/examples/login.rs +++ b/examples/login.rs @@ -22,18 +22,7 @@ async fn login( .disable_ssl_verification(); let mut client = AsyncClient::new_with_config(&homeserver_url, None, client_config).unwrap(); - let callback = |event| { - if let RoomEvent::RoomMessage(MessageEvent { - content: MessageEventContent::Text(TextMessageEventContent { body: msg_body, .. }), - sender, - .. - }) = event - { - println!("{}: {}", sender, msg_body); - } - }; - - client.add_event_future(EventType::RoomMessage, |event| { + client.add_event_callback(EventType::RoomMessage, |event| { Box::pin(async { if let RoomEvent::RoomMessage(MessageEvent { content: MessageEventContent::Text(TextMessageEventContent { body: msg_body, .. }), diff --git a/src/async_client.rs b/src/async_client.rs index a15a8fa59..ea63faf4b 100644 --- a/src/async_client.rs +++ b/src/async_client.rs @@ -27,8 +27,7 @@ pub struct AsyncClient { /// User session data. base_client: BaseClient, /// Event callbacks - event_callbacks: HashMap>, - event_futures: + event_callbacks: HashMap Pin>>>>, } @@ -117,7 +116,6 @@ impl AsyncClient { http_client, base_client: BaseClient::new(session), event_callbacks: HashMap::new(), - event_futures: HashMap::new(), }) } @@ -160,24 +158,15 @@ impl AsyncClient { http_client, base_client: BaseClient::new(session), event_callbacks: HashMap::new(), - event_futures: HashMap::new(), }) } pub fn add_event_callback( - &mut self, - event_type: EventType, - callback: impl FnMut(RoomEvent) + 'static, - ) { - self.event_callbacks.insert(event_type, Box::new(callback)); - } - - pub fn add_event_future( &mut self, event_type: EventType, callback: impl FnMut(RoomEvent) -> Pin>> + 'static, ) { - self.event_futures.insert(event_type, Box::new(callback)); + self.event_callbacks.insert(event_type, Box::new(callback)); } pub async fn login>( @@ -246,8 +235,8 @@ impl AsyncClient { cb(event.clone()); } - if self.event_futures.contains_key(&event_type) { - let cb = self.event_futures.get_mut(&event_type).unwrap(); + if self.event_callbacks.contains_key(&event_type) { + let cb = self.event_callbacks.get_mut(&event_type).unwrap(); let future = Pin::from(cb(event.clone())); future.await; }