From 95272ce4ab0593e10bd6e6634b8ef60ab8188607 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Sun, 22 Mar 2020 20:43:45 +0100
Subject: [PATCH] Try to fix avatars not updating after deletion

---
 src/Cache.cpp            | 3 ++-
 src/RoomInfoListItem.cpp | 5 ++++-
 src/RoomList.cpp         | 3 ---
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/Cache.cpp b/src/Cache.cpp
index 3ef3ca070..fb2ded7d5 100644
--- a/src/Cache.cpp
+++ b/src/Cache.cpp
@@ -1423,7 +1423,8 @@ Cache::getRoomAvatarUrl(lmdb::txn &txn,
                         StateEvent<Avatar> msg =
                           json::parse(std::string(event.data(), event.size()));
 
-                        return QString::fromStdString(msg.content.url);
+                        if (!msg.content.url.empty())
+                                return QString::fromStdString(msg.content.url);
                 } catch (const json::exception &e) {
                         nhlog::db()->warn("failed to parse m.room.avatar event: {}", e.what());
                 }
diff --git a/src/RoomInfoListItem.cpp b/src/RoomInfoListItem.cpp
index cc5f5776f..11818649b 100644
--- a/src/RoomInfoListItem.cpp
+++ b/src/RoomInfoListItem.cpp
@@ -419,7 +419,10 @@ RoomInfoListItem::mousePressEvent(QMouseEvent *event)
 void
 RoomInfoListItem::setAvatar(const QString &avatar_url)
 {
-        avatar_->setImage(avatar_url);
+        if (avatar_url.isEmpty())
+                avatar_->setLetter(utils::firstChar(roomName_));
+        else
+                avatar_->setImage(avatar_url);
 }
 
 void
diff --git a/src/RoomList.cpp b/src/RoomList.cpp
index 1c7c340d7..764fabb43 100644
--- a/src/RoomList.cpp
+++ b/src/RoomList.cpp
@@ -94,9 +94,6 @@ RoomList::addRoom(const QString &room_id, const RoomInfo &info)
 void
 RoomList::updateAvatar(const QString &room_id, const QString &url)
 {
-        if (url.isEmpty())
-                return;
-
         emit updateRoomAvatarCb(room_id, url);
 }
 
-- 
GitLab