@@ -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:: Raw ,
3334 RoomId , TransactionId ,
@@ -164,21 +165,31 @@ impl MatrixDriver {
164165 pub ( crate ) fn events ( & self ) -> EventReceiver {
165166 let ( tx, rx) = unbounded_channel ( ) ;
166167 let room_id = self . room . room_id ( ) . to_owned ( ) ;
167- let handle = self . room . add_event_handler ( move |raw : Raw < AnySyncTimelineEvent > | {
168- let _ = tx. send ( attach_room_id ( & raw , & room_id) ) ;
168+
169+ let _tx = tx. clone ( ) ;
170+ let _room_id = room_id. clone ( ) ;
171+ let handle_msg_like =
172+ self . room . add_event_handler ( move |raw : Raw < AnySyncMessageLikeEvent > | {
173+ let _ = _tx. send ( attach_room_id ( raw. cast_ref ( ) , & _room_id) ) ;
174+ async { }
175+ } ) ;
176+ let drop_guard_msg_like = self . room . client ( ) . event_handler_drop_guard ( handle_msg_like) ;
177+
178+ let handle_state = self . room . add_event_handler ( move |raw : Raw < AnySyncStateEvent > | {
179+ let _ = tx. send ( attach_room_id ( raw. cast_ref ( ) , & room_id) ) ;
169180 async { }
170181 } ) ;
182+ let drop_guard_state = self . room . client ( ) . event_handler_drop_guard ( handle_state) ;
171183
172- let drop_guard = self . room . client ( ) . event_handler_drop_guard ( handle) ;
173- EventReceiver { rx, _drop_guard : drop_guard }
184+ EventReceiver { rx, _drop_guards : [ drop_guard_msg_like, drop_guard_state] }
174185 }
175186}
176187
177188/// A simple entity that wraps an `UnboundedReceiver`
178189/// along with the drop guard for the room event handler.
179190pub ( crate ) struct EventReceiver {
180191 rx : UnboundedReceiver < Raw < AnyTimelineEvent > > ,
181- _drop_guard : EventHandlerDropGuard ,
192+ _drop_guards : [ EventHandlerDropGuard ; 2 ] ,
182193}
183194
184195impl EventReceiver {
0 commit comments