@@ -26,8 +26,9 @@ use ruma::{
2626 } ,
2727 assign,
2828 events:: {
29- AnyMessageLikeEventContent , AnyStateEventContent , AnySyncTimelineEvent , AnyTimelineEvent ,
30- MessageLikeEventType , StateEventType , TimelineEventType ,
29+ AnyMessageLikeEventContent , AnyStateEventContent , AnySyncMessageLikeEvent ,
30+ AnySyncStateEvent , AnySyncTimelineEvent , AnyTimelineEvent , MessageLikeEventType ,
31+ StateEventType , TimelineEventType ,
3132 } ,
3233 serde:: { from_raw_json_value, Raw } ,
3334 EventId , RoomId , TransactionId ,
@@ -175,21 +176,31 @@ impl MatrixDriver {
175176 pub ( crate ) fn events ( & self ) -> EventReceiver {
176177 let ( tx, rx) = unbounded_channel ( ) ;
177178 let room_id = self . room . room_id ( ) . to_owned ( ) ;
178- let handle = self . room . add_event_handler ( move |raw : Raw < AnySyncTimelineEvent > | {
179- let _ = tx. send ( attach_room_id ( & raw , & room_id) ) ;
179+
180+ let _tx = tx. clone ( ) ;
181+ let _room_id = room_id. clone ( ) ;
182+ let handle_msg_like =
183+ self . room . add_event_handler ( move |raw : Raw < AnySyncMessageLikeEvent > | {
184+ let _ = _tx. send ( attach_room_id ( raw. cast_ref ( ) , & _room_id) ) ;
185+ async { }
186+ } ) ;
187+ let drop_guard_msg_like = self . room . client ( ) . event_handler_drop_guard ( handle_msg_like) ;
188+
189+ let handle_state = self . room . add_event_handler ( move |raw : Raw < AnySyncStateEvent > | {
190+ let _ = tx. send ( attach_room_id ( raw. cast_ref ( ) , & room_id) ) ;
180191 async { }
181192 } ) ;
193+ let drop_guard_state = self . room . client ( ) . event_handler_drop_guard ( handle_state) ;
182194
183- let drop_guard = self . room . client ( ) . event_handler_drop_guard ( handle) ;
184- EventReceiver { rx, _drop_guard : drop_guard }
195+ EventReceiver { rx, _drop_guards : [ drop_guard_msg_like, drop_guard_state] }
185196 }
186197}
187198
188199/// A simple entity that wraps an `UnboundedReceiver`
189200/// along with the drop guard for the room event handler.
190201pub ( crate ) struct EventReceiver {
191202 rx : UnboundedReceiver < Raw < AnyTimelineEvent > > ,
192- _drop_guard : EventHandlerDropGuard ,
203+ _drop_guards : [ EventHandlerDropGuard ; 2 ] ,
193204}
194205
195206impl EventReceiver {
0 commit comments