diff options
Diffstat (limited to 'examples/imapresource/imapresource.cpp')
-rw-r--r-- | examples/imapresource/imapresource.cpp | 45 |
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 | } |