From 1587f2cd52ea3886c7c0c2434f5b860a6978e5b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timo=20K=C3=B6sters?= <timo@koesters.xyz>
Date: Wed, 21 Jul 2021 09:39:15 +0200
Subject: [PATCH] fix: check events in timeline (not only state) for member
 changes

---
 src/client_server/membership.rs | 4 ++--
 src/client_server/sync.rs       | 5 ++++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/client_server/membership.rs b/src/client_server/membership.rs
index d8c27816..e17a4d70 100644
--- a/src/client_server/membership.rs
+++ b/src/client_server/membership.rs
@@ -836,7 +836,7 @@ pub async fn invite_helper<'a>(
             is_direct: Some(is_direct),
             membership: MembershipState::Invite,
             third_party_invite: None,
-            blurhash: db.users.blurhash(&sender_user)?,
+            blurhash: None,
         })
         .expect("member event is valid value");
 
@@ -1012,7 +1012,7 @@ pub async fn invite_helper<'a>(
                 avatar_url: db.users.avatar_url(&user_id)?,
                 is_direct: Some(is_direct),
                 third_party_invite: None,
-                blurhash: db.users.blurhash(&sender_user)?,
+                blurhash: db.users.blurhash(&user_id)?,
             })
             .expect("event is valid, we just created it"),
             unsigned: None,
diff --git a/src/client_server/sync.rs b/src/client_server/sync.rs
index 427b9add..fdb8f256 100644
--- a/src/client_server/sync.rs
+++ b/src/client_server/sync.rs
@@ -421,7 +421,10 @@ async fn sync_helper(
 
             let send_member_count = state_events
                 .iter()
-                .any(|event| event.kind == EventType::RoomMember);
+                .any(|event| event.kind == EventType::RoomMember)
+                || timeline_pdus.iter().any(|(_, event)| {
+                    event.state_key.is_some() && event.kind == EventType::RoomMember
+                });
 
             if encrypted_room {
                 for (user_id, current_member) in db