diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp index 53e8d6879..bbeca5f1c 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.cpp @@ -13,6 +13,8 @@ #include #include +#define ARCHIDEKT_DEFAULT_IMAGE "https://storage.googleapis.com/topdekt-user/images/archidekt_deck_card_shadow.jpg" + QString timeAgo(const QString ×tamp) { QDateTime dt = QDateTime::fromString(timestamp, Qt::ISODate); @@ -78,8 +80,15 @@ ArchidektApiResponseDeckEntryDisplayWidget::ArchidektApiResponseDeckEntryDisplay // Use preview->imageLabel for image loading picture = previewWidget->imageLabel; - QNetworkRequest req(QUrl(response.getFeatured())); - imageNetworkManager->get(req); + imageUrl = response.getFeatured().isEmpty() ? QUrl(ARCHIDEKT_DEFAULT_IMAGE) : QUrl(response.getFeatured()); + + QNetworkRequest req(imageUrl); + QNetworkReply *reply = imageNetworkManager->get(req); + + // tag the reply with "this" so we know it belongs to us later + reply->setProperty("deckWidget", QVariant::fromValue(this)); + reply->setProperty("requestedUrl", imageUrl); + connect(imageNetworkManager, &QNetworkAccessManager::finished, this, &ArchidektApiResponseDeckEntryDisplayWidget::onPreviewImageLoadFinished); @@ -134,7 +143,16 @@ void ArchidektApiResponseDeckEntryDisplayWidget::setScaleFactor(int scale) void ArchidektApiResponseDeckEntryDisplayWidget::onPreviewImageLoadFinished(QNetworkReply *reply) { - if (reply->url() != response.getFeatured()) { + // Check if this is our reply + void *owner = reply->property("deckWidget").value(); + if (owner != this) { + return; // not our reply + } + + // Check that the requested URL matches what we asked + QUrl requestedUrl = reply->property("requestedUrl").toUrl(); + if (requestedUrl != imageUrl) { + reply->deleteLater(); return; } diff --git a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.h b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.h index 19d57fa84..76d9dd05c 100644 --- a/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.h +++ b/cockatrice/src/interface/widgets/tabs/api/archidekt/display/archidekt_api_response_deck_entry_display_widget.h @@ -36,6 +36,7 @@ protected: private: QVBoxLayout *layout; ArchidektApiResponseDeckListingContainer response; + QUrl imageUrl; QNetworkAccessManager *imageNetworkManager; ArchidektDeckPreviewImageDisplayWidget *previewWidget; QLabel *picture;