Fix avatars in notifications

pull/284/head
Nicolas Werner 4 years ago
parent fef0cc2d71
commit 8af056faa9
  1. 11
      src/AvatarProvider.cpp
  2. 24
      src/ChatPage.cpp

@ -34,10 +34,12 @@ resolve(const QString &avatarUrl, int size, QObject *receiver, AvatarCallback ca
{
const auto cacheKey = QString("%1_size_%2").arg(avatarUrl).arg(size);
if (avatarUrl.isEmpty())
QPixmap pixmap;
if (avatarUrl.isEmpty()) {
callback(pixmap);
return;
}
QPixmap pixmap;
if (avatar_cache.find(cacheKey, &pixmap)) {
callback(pixmap);
return;
@ -75,11 +77,10 @@ resolve(const QString &avatarUrl, int size, QObject *receiver, AvatarCallback ca
opts.mxc_url,
mtx::errors::to_string(err->matrix_error.errcode),
err->matrix_error.error);
return;
} else {
cache::saveImage(cacheKey.toStdString(), res);
}
cache::saveImage(cacheKey.toStdString(), res);
emit proxy->avatarDownloaded(QByteArray(res.data(), res.size()));
});
}

@ -895,14 +895,22 @@ ChatPage::sendNotifications(const mtx::responses::Notifications &res)
}
if (userSettings_->hasDesktopNotifications()) {
notificationsManager.postNotification(
room_id,
QString::fromStdString(event_id),
QString::fromStdString(
cache::singleRoomInfo(item.room_id).name),
cache::displayName(room_id, user_id),
utils::event_body(item.event),
cache::getRoomAvatar(room_id));
auto info = cache::singleRoomInfo(item.room_id);
AvatarProvider::resolve(
QString::fromStdString(info.avatar_url),
96,
this,
[this, room_id, event_id, item, user_id, info](
QPixmap image) {
notificationsManager.postNotification(
room_id,
QString::fromStdString(event_id),
QString::fromStdString(info.name),
cache::displayName(room_id, user_id),
utils::event_body(item.event),
image.toImage());
});
}
}
} catch (const lmdb::error &e) {

Loading…
Cancel
Save