From 2b9bd7855843b1b58f0b124b0c92b9a8c601e2ba Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 12 Jan 2017 23:37:37 +0100 Subject: Simplification --- .../mailtransportresource.cpp | 44 ++++++++++------------ 1 file changed, 20 insertions(+), 24 deletions(-) (limited to 'examples') diff --git a/examples/mailtransportresource/mailtransportresource.cpp b/examples/mailtransportresource/mailtransportresource.cpp index a4622f3..a49d62b 100644 --- a/examples/mailtransportresource/mailtransportresource.cpp +++ b/examples/mailtransportresource/mailtransportresource.cpp @@ -81,12 +81,28 @@ public: return KAsync::error(1, "Failed to send the message."); } } - return KAsync::null(); + return KAsync::start([=] { + SinkLog() << "Sent mail, and triggering move to sent mail folder: " << mail.identifier(); + auto modifiedMail = ApplicationDomain::Mail(mResourceInstanceIdentifier, mail.identifier(), mail.revision(), QSharedPointer::create()); + modifiedMail.setSent(true); + + auto resource = Store::readOne(Query{}.filter(mResourceInstanceIdentifier).request()); + //Then copy the mail to the target resource + Query query; + query.containsFilter(ApplicationDomain::ResourceCapabilities::Mail::sent); + query.filter(resource.getAccount()); + return Store::fetchOne(query) + .then([this, modifiedMail](const ApplicationDomain::SinkResource &resource) { + //First modify the mail to have the sent property set to true + modify(modifiedMail, resource.identifier(), true); + return KAsync::null(); + }); + }); } KAsync::Job synchronizeWithSource(const Sink::QueryBase &query) Q_DECL_OVERRIDE { - return KAsync::start([this](KAsync::Future future) { + return KAsync::start([this]() { QList toSend; SinkLog() << "Looking for mails to send."; store().readAll([&](const ApplicationDomain::Mail &mail) -> bool { @@ -99,29 +115,9 @@ public: SinkLog() << "Found " << toSend.size() << " mails to send"; auto job = KAsync::null(); for (const auto &m : toSend) { - job = job.then(send(m, mSettings)) - .then([this, m] { - SinkLog() << "Sent mail, and triggering move to sent mail folder: " << m.identifier(); - auto modifiedMail = ApplicationDomain::Mail(mResourceInstanceIdentifier, m.identifier(), m.revision(), QSharedPointer::create()); - modifiedMail.setSent(true); - - auto resource = Store::readOne(Query{}.filter(mResourceInstanceIdentifier).request()); - //Then copy the mail to the target resource - Query query; - query.containsFilter(ApplicationDomain::ResourceCapabilities::Mail::sent); - query.filter(resource.getAccount()); - return Store::fetchOne(query) - .then([this, modifiedMail](const ApplicationDomain::SinkResource &resource) -> KAsync::Job { - //First modify the mail to have the sent property set to true - modify(modifiedMail, resource.identifier(), true); - return KAsync::null(); - }); - }); + job = job.then(send(m, mSettings)); } - job = job.then([&future](const KAsync::Error &) { - future.setFinished(); - }); - job.exec(); + return job; }); } -- cgit v1.2.3