diff --git a/src/job/gravatarresolvurljob.h b/src/job/gravatarresolvurljob.h --- a/src/job/gravatarresolvurljob.h +++ b/src/job/gravatarresolvurljob.h @@ -79,6 +79,7 @@ void startNetworkManager(const QUrl &url); QUrl createUrl(bool useLibravatar); QString calculateHash(bool useLibravator); + bool cacheLookup(const QString &hash); GravatarResolvUrlJobPrivate *const d; }; } diff --git a/src/job/gravatarresolvurljob.cpp b/src/job/gravatarresolvurljob.cpp --- a/src/job/gravatarresolvurljob.cpp +++ b/src/job/gravatarresolvurljob.cpp @@ -114,16 +114,8 @@ d->mCalculatedHash.clear(); const QUrl url = createUrl(d->mUseLibravatar); Q_EMIT resolvUrl(url); - bool haveStoredPixmap = false; - const QPixmap pix = GravatarCache::self()->loadGravatarPixmap(d->mCalculatedHash, haveStoredPixmap); - if (haveStoredPixmap && !pix.isNull()) { - d->mPixmap = pix; - d->mHasGravatar = true; - Q_EMIT finished(this); - deleteLater(); - } else { + if (!cacheLookup(d->mCalculatedHash)) startNetworkManager(url); - } } else { qCDebug(GRAVATAR_LOG) << "Gravatar can not start"; deleteLater(); @@ -144,7 +136,8 @@ d->mCalculatedHash.clear(); const QUrl url = createUrl(false); Q_EMIT resolvUrl(url); - startNetworkManager(url); + if (!cacheLookup(d->mCalculatedHash)) + startNetworkManager(url); return; } reply->deleteLater(); @@ -278,3 +271,17 @@ url.setQuery(query); return url; } + +bool GravatarResolvUrlJob::cacheLookup(const QString &hash) +{ + bool haveStoredPixmap = false; + const QPixmap pix = GravatarCache::self()->loadGravatarPixmap(hash, haveStoredPixmap); + if (haveStoredPixmap && !pix.isNull()) { + d->mPixmap = pix; + d->mHasGravatar = true; + Q_EMIT finished(this); + deleteLater(); + return true; + } + return false; +}