Fix avatars in notifications

This commit is contained in:
Nicolas Werner 2020-09-07 18:11:06 +02:00
parent fef0cc2d71
commit 8af056faa9
2 changed files with 23 additions and 14 deletions

View file

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

View file

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