diff --git a/matrix_sdk_base/src/client.rs b/matrix_sdk_base/src/client.rs index 25f9cb45..c3528880 100644 --- a/matrix_sdk_base/src/client.rs +++ b/matrix_sdk_base/src/client.rs @@ -1628,6 +1628,7 @@ impl BaseClient { NonRoomEvent::FullyRead(full_read) => { event_emitter.on_non_room_fully_read(room, &full_read).await } + NonRoomEvent::Typing(typing) => event_emitter.on_non_room_typing(room, &typing).await, _ => {} } } @@ -1684,6 +1685,7 @@ impl BaseClient { NonRoomEvent::FullyRead(full_read) => { event_emitter.on_non_room_fully_read(room, &full_read).await } + NonRoomEvent::Typing(typing) => event_emitter.on_non_room_typing(room, &typing).await, _ => {} } } diff --git a/matrix_sdk_base/src/event_emitter/mod.rs b/matrix_sdk_base/src/event_emitter/mod.rs index a1ec2a5c..97d24e0b 100644 --- a/matrix_sdk_base/src/event_emitter/mod.rs +++ b/matrix_sdk_base/src/event_emitter/mod.rs @@ -319,9 +319,15 @@ mod test { async fn on_non_room_fully_read(&self, _: SyncRoom, _: &FullyReadEvent) { self.0.lock().await.push("account read".to_string()) } + async fn on_non_room_typing(&self, _: SyncRoom, _: &TypingEvent) { + self.0.lock().await.push("typing event".to_string()) + } async fn on_presence_event(&self, _: SyncRoom, _: &PresenceEvent) { self.0.lock().await.push("presence event".to_string()) } + async fn on_unrecognized_event(&self, _: SyncRoom, _: &CustomOrRawEvent<'_>) { + self.0.lock().await.push("unrecognized event".to_string()) + } } use crate::identifiers::UserId; @@ -417,4 +423,30 @@ mod test { ], ) } + + #[async_test] + async fn event_emitter_more_events() { + let vec = Arc::new(Mutex::new(Vec::new())); + let test_vec = Arc::clone(&vec); + let emitter = Box::new(EvEmitterTest(vec)); + + let client = get_client().await; + client.add_event_emitter(emitter).await; + + let mut response = sync_response(SyncResponseFile::All); + client.receive_sync_response(&mut response).await.unwrap(); + + let v = test_vec.lock().await; + assert_eq!( + v.as_slice(), + [ + "message", + "unrecognized event", + "redaction", + "unrecognized event", + "unrecognized event", + "typing event" + ], + ) + } } diff --git a/matrix_sdk_test/src/lib.rs b/matrix_sdk_test/src/lib.rs index 41b43ec4..0adbcb73 100644 --- a/matrix_sdk_test/src/lib.rs +++ b/matrix_sdk_test/src/lib.rs @@ -329,6 +329,7 @@ impl EventBuilder { /// Embedded sync reponse files pub enum SyncResponseFile { + All, Default, DefaultWithSummary, Invite, @@ -338,6 +339,7 @@ pub enum SyncResponseFile { /// Get specific API responses for testing pub fn sync_response(kind: SyncResponseFile) -> SyncResponse { let data = match kind { + SyncResponseFile::All => include_bytes!("../test_data/more_sync.json").to_vec(), SyncResponseFile::Default => include_bytes!("../test_data/sync.json").to_vec(), SyncResponseFile::DefaultWithSummary => { include_bytes!("../test_data/sync_with_summary.json").to_vec() diff --git a/matrix_sdk_test/test_data/more_sync.json b/matrix_sdk_test/test_data/more_sync.json new file mode 100644 index 00000000..f487281c --- /dev/null +++ b/matrix_sdk_test/test_data/more_sync.json @@ -0,0 +1,151 @@ +{ + "device_one_time_keys_count": {}, + "next_batch": "s526_47314_0_7_1_1_1_11444_1", + "device_lists": { + "changed": [ + "@example:example.org" + ], + "left": [] + }, + "rooms": { + "invite": {}, + "join": { + "!SVkFJHzfwvuaIEawgC:localhost": { + "summary": {}, + "account_data": { + "events": [] + }, + "ephemeral": { + "events": [ + { + "content": { + "$151680659217152dPKjd:localhost": { + "m.read": { + "@example:localhost": { + "ts": 1516809890615 + } + } + } + }, + "type": "m.receipt" + }, + { + "content": { + "user_ids": [ + "@alice:matrix.org", + "@bob:example.com" + ] + }, + "room_id": "!jEsUZKDJdhlrceRyVU:example.org", + "type": "m.typing" + } + ] + }, + "state": { + "events": [] + }, + "timeline": { + "events": [ + { + "content": { + "body": "baba", + "format": "org.matrix.custom.html", + "formatted_body": "baba", + "msgtype": "m.text" + }, + "event_id": "$152037280074GZeOm:localhost", + "origin_server_ts": 1520372800469, + "sender": "@example:localhost", + "type": "m.room.message", + "unsigned": { + "age": 598971425 + } + }, + { + "content": { + "body": " * edited message", + "m.new_content": { + "body": "edited message", + "msgtype": "m.text" + }, + "m.relates_to": { + "event_id": "some event id", + "rel_type": "m.replace" + }, + "msgtype": "m.text" + }, + "event_id": "edit event id", + "origin_server_ts": 1590262659984, + "sender": "@alice:matrix.org", + "type": "m.room.message", + "unsigned": { + "age": 85 + } + }, + { + "content": { + "reason": "😀" + }, + "event_id": "$151957878228ssqrJ:localhost", + "origin_server_ts": 1519578782185, + "sender": "@example:localhost", + "type": "m.room.redaction", + "redacts": "$151957878228ssqrj:localhost" + }, + { + "content": {}, + "event_id": "$15275046980maRLj:localhost", + "origin_server_ts": 1527504698685, + "sender": "@example:localhost", + "type": "m.room.message", + "unsigned": { + "age": 19334, + "redacted_because": { + "content": {}, + "event_id": "$15275047031IXQRi:localhost", + "origin_server_ts": 1527504703496, + "redacts": "$15275046980maRLj:localhost", + "sender": "@example:localhost", + "type": "m.room.redaction", + "unsigned": { + "age": 14523 + } + }, + "redacted_by": "$15275047031IXQRi:localhost" + } + }, + { + "content": { + "m.relates_to": { + "event_id": "some event id", + "key": "👍", + "rel_type": "m.annotation" + } + }, + "event_id": "event id", + "origin_server_ts": 1590275813161, + "sender": "@alice:matrix.org", + "type": "m.reaction", + "unsigned": { + "age": 85 + } + } + ], + "limited": true, + "prev_batch": "t392-516_47314_0_7_1_1_1_11444_1" + }, + "unread_notifications": { + "highlight_count": 0, + "notification_count": 11 + } + } + }, + "leave": {} + }, + "to_device": { + "events": [] + }, + "presence": { + "events": [] + } +} diff --git a/test_data/events/message_edit.json b/test_data/events/message_edit.json index 60fc1a77..8a84c4be 100644 --- a/test_data/events/message_edit.json +++ b/test_data/events/message_edit.json @@ -1,19 +1,19 @@ { "content": { - "body": " * f fjkdslasdf $$$$$$$$$$$$$$$$$$$$$$$$$$$$", + "body": " * edited message", "m.new_content": { - "body": "f fjkdslasdf $$$$$$$$$$$$$$$$$$$$$$$$$$$$", + "body": "edited message", "msgtype": "m.text" }, "m.relates_to": { - "event_id": "$MbS0nMfvub-CPbytp7KRmExAp3oVfdjWOvf2ifG1zWI", + "event_id": "some event id", "rel_type": "m.replace" }, "msgtype": "m.text" }, - "event_id": "$xXL9cVB_10jkpxUFTsubeusygV0yv5b_63ADjgiQnOA", + "event_id": "edit event id", "origin_server_ts": 1590262659984, - "sender": "@devinr528:matrix.org", + "sender": "@alice:matrix.org", "type": "m.room.message", "unsigned": { "age": 85 diff --git a/test_data/events/reaction.json b/test_data/events/reaction.json index ef0ee79b..4fdce2e0 100644 --- a/test_data/events/reaction.json +++ b/test_data/events/reaction.json @@ -1,12 +1,12 @@ { "content": { "m.relates_to": { - "event_id": "$MDit176PkuBlpP7S6c64iuf74KC2HqZ3peV1NrV4PKA", + "event_id": "$MDitXXXXXXuBlpP7S6c6XXXXXXXC2HqZ3peV1NrV4PKA", "key": "👍", "rel_type": "m.annotation" } }, - "event_id": "$QZn9xEx72PUfd2tAGFH-FFgsffZlVMobk47Tl5Lpdtg", + "event_id": "$QZn9xEXXXXXfd2tAGFH-XXgsffZlVMobk47Tl5Lpdtg", "origin_server_ts": 1590275813161, "sender": "@devinr528:matrix.org", "type": "m.reaction", diff --git a/test_data/more_sync.json b/test_data/more_sync.json new file mode 100644 index 00000000..27b2e8d6 --- /dev/null +++ b/test_data/more_sync.json @@ -0,0 +1,129 @@ +{ + "device_one_time_keys_count": {}, + "next_batch": "s526_47314_0_7_1_1_1_11444_1", + "device_lists": { + "changed": [ + "@example:example.org" + ], + "left": [] + }, + "rooms": { + "invite": {}, + "join": { + "!SVkFJHzfwvuaIEawgC:localhost": { + "summary": {}, + "account_data": { + "events": [] + }, + "ephemeral": { + "events": [ + { + "content": { + "$151680659217152dPKjd:localhost": { + "m.read": { + "@example:localhost": { + "ts": 1516809890615 + } + } + } + }, + "type": "m.receipt" + }, + { + "content": { + "user_ids": [ + "@alice:matrix.org", + "@bob:example.com" + ] + }, + "room_id": "!jEsUZKDJdhlrceRyVU:example.org", + "type": "m.typing" + } + ] + }, + "state": { + "events": [] + }, + "timeline": { + "events": [ + { + "content": { + "body": "baba", + "format": "org.matrix.custom.html", + "formatted_body": "baba", + "msgtype": "m.text" + }, + "event_id": "$152037280074GZeOm:localhost", + "origin_server_ts": 1520372800469, + "sender": "@example:localhost", + "type": "m.room.message", + "unsigned": { + "age": 598971425 + } + }, + { + "content": { + "body": " * edited message", + "m.new_content": { + "body": "edited message", + "msgtype": "m.text" + }, + "m.relates_to": { + "event_id": "some event id", + "rel_type": "m.replace" + }, + "msgtype": "m.text" + }, + "event_id": "edit event id", + "origin_server_ts": 1590262659984, + "sender": "@alice:matrix.org", + "type": "m.room.message", + "unsigned": { + "age": 85 + } + }, + { + "content": { + "reason": "😀" + }, + "event_id": "$151957878228ssqrJ:localhost", + "origin_server_ts": 1519578782185, + "sender": "@example:localhost", + "type": "m.room.redaction", + "redacts": "$151957878228ssqrj:localhost" + }, + { + "content": { + "m.relates_to": { + "event_id": "some event id", + "key": "👍", + "rel_type": "m.annotation" + } + }, + "event_id": "event id", + "origin_server_ts": 1590275813161, + "sender": "@alice:matrix.org", + "type": "m.reaction", + "unsigned": { + "age": 85 + } + } + ], + "limited": true, + "prev_batch": "t392-516_47314_0_7_1_1_1_11444_1" + }, + "unread_notifications": { + "highlight_count": 0, + "notification_count": 11 + } + } + }, + "leave": {} + }, + "to_device": { + "events": [] + }, + "presence": { + "events": [] + } +}