summary refs log tree commit diff
path: root/src/timeline/widgets/ImageItem.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-03-07 21:23:57 +0200
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-03-07 21:23:57 +0200
commit39abf163b8ec42b27a3ece4bb861aad4d3cfe5f1 (patch)
tree8576b2915a81c392234b58d6ec383ff1b2e1252d /src/timeline/widgets/ImageItem.cc
parentAdd a unique id for locally uploaded images (diff)
downloadnheko-39abf163b8ec42b27a3ece4bb861aad4d3cfe5f1.tar.xz
Crete a proxy for media to uniquely match signal to the caller
Diffstat (limited to 'src/timeline/widgets/ImageItem.cc')
-rw-r--r--src/timeline/widgets/ImageItem.cc29
1 files changed, 12 insertions, 17 deletions
diff --git a/src/timeline/widgets/ImageItem.cc b/src/timeline/widgets/ImageItem.cc

index a4f1ca57..2784f386 100644 --- a/src/timeline/widgets/ImageItem.cc +++ b/src/timeline/widgets/ImageItem.cc
@@ -53,15 +53,13 @@ ImageItem::ImageItem(QSharedPointer<MatrixClient> client, url_ = QString("%1/_matrix/media/r0/download/%2") .arg(client_.data()->getHomeServer().toString(), media_params); - client_.data()->downloadImage(QString::fromStdString(event.event_id), url_); + auto proxy = client_.data()->downloadImage(url_); - connect(client_.data(), - &MatrixClient::imageDownloaded, - this, - [this](const QString &id, const QPixmap &img) { - if (id == QString::fromStdString(event_.event_id)) - setImage(img); - }); + connect( + proxy, &DownloadMediaProxy::imageDownloaded, this, [this, proxy](const QPixmap &img) { + proxy->deleteLater(); + setImage(img); + }); } ImageItem::ImageItem(QSharedPointer<MatrixClient> client, @@ -91,16 +89,13 @@ ImageItem::ImageItem(QSharedPointer<MatrixClient> client, url_ = QString("%1/_matrix/media/r0/download/%2") .arg(client_.data()->getHomeServer().toString(), media_params); - const auto request_id = QUuid::createUuid().toString(); - client_.data()->downloadImage(request_id, url_); + auto proxy = client_.data()->downloadImage(url_); - connect(client_.data(), - &MatrixClient::imageDownloaded, - this, - [request_id, this](const QString &id, const QPixmap &img) { - if (id == request_id) - setImage(img); - }); + connect( + proxy, &DownloadMediaProxy::imageDownloaded, this, [proxy, this](const QPixmap &img) { + proxy->deleteLater(); + setImage(img); + }); } void