summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-02-24 12:01:05 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-02-24 12:01:05 +0100
commit08b857c641d3a62f00b2b7fcbfa1fd51773d170c (patch)
tree7d8e905078962219690b3549aa8670f6075dcc76
parent99c4d53fd86440ee6c8a76c9d320a319ff5da7bc (diff)
downloadkube-08b857c641d3a62f00b2b7fcbfa1fd51773d170c.tar.gz
kube-08b857c641d3a62f00b2b7fcbfa1fd51773d170c.zip
Only fetch every mail once.
-rw-r--r--framework/domain/maillistmodel.cpp9
-rw-r--r--framework/domain/maillistmodel.h3
2 files changed, 7 insertions, 5 deletions
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 @@
20 20
21#include "maillistmodel.h" 21#include "maillistmodel.h"
22 22
23#include <QFile>
24#include <QDateTime>
25
26#include <sink/standardqueries.h> 23#include <sink/standardqueries.h>
27 24
28MailListModel::MailListModel(QObject *parent) 25MailListModel::MailListModel(QObject *parent)
@@ -74,10 +71,11 @@ static QString join(const QList<Sink::ApplicationDomain::Mail::Contact> &contact
74 return list.join(", "); 71 return list.join(", ");
75} 72}
76 73
77void fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) 74void MailListModel::fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) const
78{ 75{
79 if (mail && !mail->getFullPayloadAvailable()) { 76 if (mail && !mail->getFullPayloadAvailable() && !mFetchedMails.contains(mail->identifier())) {
80 qDebug() << "Fetching mail: " << mail->identifier() << mail->getSubject(); 77 qDebug() << "Fetching mail: " << mail->identifier() << mail->getSubject();
78 mFetchedMails.insert(mail->identifier());
81 Sink::Store::synchronize(Sink::SyncScope{*mail}).exec(); 79 Sink::Store::synchronize(Sink::SyncScope{*mail}).exec();
82 } 80 }
83} 81}
@@ -208,6 +206,7 @@ void MailListModel::setMail(const QVariant &variant)
208 query.request<Mail::MimeMessage>(); 206 query.request<Mail::MimeMessage>();
209 query.request<Mail::FullPayloadAvailable>(); 207 query.request<Mail::FullPayloadAvailable>();
210 mFetchMails = true; 208 mFetchMails = true;
209 mFetchedMails.clear();
211 qDebug() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); 210 qDebug() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier();
212 //Latest mail at the bottom 211 //Latest mail at the bottom
213 sort(0, Qt::AscendingOrder); 212 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:
70 QVariant mail() const; 70 QVariant mail() const;
71 71
72private: 72private:
73 void fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) const;
74
73 QSharedPointer<QAbstractItemModel> m_model; 75 QSharedPointer<QAbstractItemModel> m_model;
74 bool mFetchMails = false; 76 bool mFetchMails = false;
77 mutable QSet<QByteArray> mFetchedMails;
75 QByteArray mCurrentQueryItem; 78 QByteArray mCurrentQueryItem;
76}; 79};