summaryrefslogtreecommitdiffstats
path: root/examples/imapresource/imapresource.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/imapresource/imapresource.cpp')
-rw-r--r--examples/imapresource/imapresource.cpp45
1 files changed, 30 insertions, 15 deletions
diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp
index 2dfb2ea..02713b3 100644
--- a/examples/imapresource/imapresource.cpp
+++ b/examples/imapresource/imapresource.cpp
@@ -384,21 +384,36 @@ public:
384 flags << Imap::Flags::Flagged; 384 flags << Imap::Flags::Flagged;
385 } 385 }
386 386
387 QByteArray content = KMime::LFtoCRLF(mail.getMimeMessage()); 387 bool messageChanged = false;
388 QDateTime internalDate = mail.getDate(); 388 if (messageChanged) {
389 auto rid = QSharedPointer<QByteArray>::create(); 389 QByteArray content = KMime::LFtoCRLF(mail.getMimeMessage());
390 KIMAP::ImapSet set; 390 QDateTime internalDate = mail.getDate();
391 set.add(uid); 391 auto rid = QSharedPointer<QByteArray>::create();
392 return login.then(imap->append(mailbox, content, flags, internalDate)) 392 KIMAP::ImapSet set;
393 .then<void, qint64>([imap, mailbox, rid](qint64 uid) { 393 set.add(uid);
394 const auto remoteId = mailbox + "/" + QByteArray::number(uid); 394 return login.then(imap->append(mailbox, content, flags, internalDate))
395 Trace() << "Finished creating a modified mail: " << remoteId; 395 .then<void, qint64>([imap, mailbox, rid](qint64 uid) {
396 *rid = remoteId; 396 const auto remoteId = mailbox + "/" + QByteArray::number(uid);
397 }) 397 Trace() << "Finished creating a modified mail: " << remoteId;
398 .then(imap->remove(mailbox, set)) 398 *rid = remoteId;
399 .then<QByteArray>([rid, imap]() { 399 })
400 return *rid; 400 .then(imap->remove(mailbox, set))
401 }); 401 .then<QByteArray>([rid, imap]() {
402 return *rid;
403 });
404 } else {
405 KIMAP::ImapSet set;
406 set.add(uid);
407 return login.then(imap->select(mailbox))
408 .then(imap->storeFlags(set, flags))
409 .then<void, qint64>([imap, mailbox](qint64 uid) {
410 const auto remoteId = mailbox + "/" + QByteArray::number(uid);
411 Trace() << "Finished modifying mail: " << remoteId;
412 })
413 .then<QByteArray>([oldRemoteId, imap]() {
414 return oldRemoteId;
415 });
416 }
402 } 417 }
403 return KAsync::null<QByteArray>(); 418 return KAsync::null<QByteArray>();
404 } 419 }