From 08b857c641d3a62f00b2b7fcbfa1fd51773d170c Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 24 Feb 2017 12:01:05 +0100 Subject: Only fetch every mail once. --- framework/domain/maillistmodel.cpp | 9 ++++----- framework/domain/maillistmodel.h | 3 +++ 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'framework/domain') diff --git a/framework/domain/maillistmodel.cpp b/framework/domain/maillistmodel.cpp index e0b74a3a..58a6b384 100644 --- a/framework/domain/maillistmodel.cpp +++ b/framework/domain/maillistmodel.cpp @@ -20,9 +20,6 @@ #include "maillistmodel.h" -#include -#include - #include MailListModel::MailListModel(QObject *parent) @@ -74,10 +71,11 @@ static QString join(const QList &contact return list.join(", "); } -void fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) +void MailListModel::fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) const { - if (mail && !mail->getFullPayloadAvailable()) { + if (mail && !mail->getFullPayloadAvailable() && !mFetchedMails.contains(mail->identifier())) { qDebug() << "Fetching mail: " << mail->identifier() << mail->getSubject(); + mFetchedMails.insert(mail->identifier()); Sink::Store::synchronize(Sink::SyncScope{*mail}).exec(); } } @@ -208,6 +206,7 @@ void MailListModel::setMail(const QVariant &variant) query.request(); query.request(); mFetchMails = true; + mFetchedMails.clear(); qDebug() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); //Latest mail at the bottom sort(0, Qt::AscendingOrder); diff --git a/framework/domain/maillistmodel.h b/framework/domain/maillistmodel.h index 8c2609e0..af079a1b 100644 --- a/framework/domain/maillistmodel.h +++ b/framework/domain/maillistmodel.h @@ -70,7 +70,10 @@ public: QVariant mail() const; private: + void fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) const; + QSharedPointer m_model; bool mFetchMails = false; + mutable QSet mFetchedMails; QByteArray mCurrentQueryItem; }; -- cgit v1.2.3