summary refs log tree commit diff
path: root/src/AvatarProvider.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-28 21:11:40 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-28 21:11:40 +0300
commite224440f5df4e39df3fed5f30e13c773a65fe01b (patch)
tree2c8c41b45da6a78e5638a76d6cecc566d239afc2 /src/AvatarProvider.cc
parentSave the changes between syncs in cache (diff)
downloadnheko-e224440f5df4e39df3fed5f30e13c773a65fe01b.tar.xz
Display user avatar changes
Diffstat (limited to 'src/AvatarProvider.cc')
-rw-r--r--src/AvatarProvider.cc42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/AvatarProvider.cc b/src/AvatarProvider.cc

index ab938cb1..7e8c9e49 100644 --- a/src/AvatarProvider.cc +++ b/src/AvatarProvider.cc
@@ -21,8 +21,7 @@ QSharedPointer<MatrixClient> AvatarProvider::client_; -QMap<QString, QImage> AvatarProvider::userAvatars_; -QMap<QString, QUrl> AvatarProvider::avatarUrls_; +QMap<QString, AvatarData> AvatarProvider::avatars_; QMap<QString, QList<TimelineItem *>> AvatarProvider::toBeResolved_; void @@ -46,45 +45,50 @@ AvatarProvider::updateAvatar(const QString &uid, const QImage &img) toBeResolved_.remove(uid); } - userAvatars_.insert(uid, img); + auto avatarData = avatars_[uid]; + avatarData.img = img; + + avatars_.insert(uid, avatarData); } void AvatarProvider::resolve(const QString &userId, TimelineItem *item) { - if (userAvatars_.contains(userId)) { - auto img = userAvatars_[userId]; + if (!avatars_.contains(userId)) + return; - item->setUserAvatar(img); + auto img = avatars_[userId].img; + if (!img.isNull()) { + item->setUserAvatar(img); return; } - if (avatarUrls_.contains(userId)) { - // Add the current timeline item to the waiting list for this avatar. - if (!toBeResolved_.contains(userId)) { - client_->fetchUserAvatar(userId, avatarUrls_[userId]); + // Add the current timeline item to the waiting list for this avatar. + if (!toBeResolved_.contains(userId)) { + client_->fetchUserAvatar(userId, avatars_[userId].url); - QList<TimelineItem *> timelineItems; - timelineItems.push_back(item); + QList<TimelineItem *> timelineItems; + timelineItems.push_back(item); - toBeResolved_.insert(userId, timelineItems); - } else { - toBeResolved_[userId].push_back(item); - } + toBeResolved_.insert(userId, timelineItems); + } else { + toBeResolved_[userId].push_back(item); } } void AvatarProvider::setAvatarUrl(const QString &userId, const QUrl &url) { - avatarUrls_.insert(userId, url); + AvatarData data; + data.url = url; + + avatars_.insert(userId, data); } void AvatarProvider::clear() { - userAvatars_.clear(); - avatarUrls_.clear(); + avatars_.clear(); toBeResolved_.clear(); }