summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-24 10:48:53 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-01-24 10:48:53 +0100
commit07b55e8e8b21873eeb5b39f1306f6665b1630c46 (patch)
treefddf5fdd853658026d81c9c07dbd6831b88b4701
parent18bb7f3549e4e2f03a7110df8b5f0cfdf969f64c (diff)
downloadkube-07b55e8e8b21873eeb5b39f1306f6665b1630c46.tar.gz
kube-07b55e8e8b21873eeb5b39f1306f6665b1630c46.zip
New KAsync api
-rw-r--r--framework/domain/composercontroller.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/framework/domain/composercontroller.cpp b/framework/domain/composercontroller.cpp
index 85faf235..207c5047 100644
--- a/framework/domain/composercontroller.cpp
+++ b/framework/domain/composercontroller.cpp
@@ -230,7 +230,7 @@ void ComposerController::send()
230 query.containsFilter<ApplicationDomain::SinkResource::Capabilities>(ApplicationDomain::ResourceCapabilities::Mail::transport); 230 query.containsFilter<ApplicationDomain::SinkResource::Capabilities>(ApplicationDomain::ResourceCapabilities::Mail::transport);
231 query.filter<SinkResource::Account>(accountId); 231 query.filter<SinkResource::Account>(accountId);
232 auto job = Store::fetchAll<ApplicationDomain::SinkResource>(query) 232 auto job = Store::fetchAll<ApplicationDomain::SinkResource>(query)
233 .then<void, QList<ApplicationDomain::SinkResource::Ptr>>([=](const QList<ApplicationDomain::SinkResource::Ptr> &resources) -> KAsync::Job<void> { 233 .then([=](const QList<ApplicationDomain::SinkResource::Ptr> &resources) {
234 if (!resources.isEmpty()) { 234 if (!resources.isEmpty()) {
235 auto resourceId = resources[0]->identifier(); 235 auto resourceId = resources[0]->identifier();
236 SinkLog() << "Sending message via resource: " << resourceId; 236 SinkLog() << "Sending message via resource: " << resourceId;
@@ -240,12 +240,13 @@ void ComposerController::send()
240 .then<void>([=] { 240 .then<void>([=] {
241 //Trigger a sync, but don't wait for it. 241 //Trigger a sync, but don't wait for it.
242 Store::synchronize(Sink::SyncScope{}.resourceFilter(resourceId)).exec(); 242 Store::synchronize(Sink::SyncScope{}.resourceFilter(resourceId)).exec();
243 return KAsync::null<void>();
244 }); 243 });
245 } 244 }
245 SinkWarning() << "Failed to find a mailtransport resource";
246 return KAsync::error<void>(0, "Failed to find a MailTransport resource."); 246 return KAsync::error<void>(0, "Failed to find a MailTransport resource.");
247 }) 247 })
248 .then([&] (const KAsync::Error &error) { 248 .then([&] (const KAsync::Error &error) {
249 SinkLog() << "Message was sent: ";
249 emit done(); 250 emit done();
250 }); 251 });
251 run(job); 252 run(job);
@@ -259,6 +260,7 @@ void ComposerController::updateSaveAsDraftAction()
259 260
260void ComposerController::saveAsDraft() 261void ComposerController::saveAsDraft()
261{ 262{
263 SinkLog() << "Save as draft";
262 const auto accountId = getAccountId(); 264 const auto accountId = getAccountId();
263 auto existingMail = getExistingMail(); 265 auto existingMail = getExistingMail();
264 266
@@ -274,15 +276,19 @@ void ComposerController::saveAsDraft()
274 276
275 auto job = [&] { 277 auto job = [&] {
276 if (existingMail.identifier().isEmpty()) { 278 if (existingMail.identifier().isEmpty()) {
279 SinkLog() << "Creating a new draft" << existingMail.identifier();
277 Query query; 280 Query query;
278 query.containsFilter<SinkResource::Capabilities>(ApplicationDomain::ResourceCapabilities::Mail::drafts); 281 query.containsFilter<SinkResource::Capabilities>(ApplicationDomain::ResourceCapabilities::Mail::drafts);
279 query.filter<SinkResource::Account>(accountId); 282 query.filter<SinkResource::Account>(accountId);
280 return Store::fetchOne<SinkResource>(query) 283 return Store::fetchOne<SinkResource>(query)
281 .then<void, SinkResource>([=](const SinkResource &resource) -> KAsync::Job<void> { 284 .then([=](const SinkResource &resource) {
282 Mail mail(resource.identifier()); 285 Mail mail(resource.identifier());
283 mail.setDraft(true); 286 mail.setDraft(true);
284 mail.setMimeMessage(message->encodedContent()); 287 mail.setMimeMessage(message->encodedContent());
285 return Store::create(mail); 288 return Store::create(mail);
289 })
290 .onError([] (const KAsync::Error &error) {
291 SinkWarning() << "Error while creating draft: " << error.errorMessage;
286 }); 292 });
287 } else { 293 } else {
288 SinkLog() << "Modifying an existing mail" << existingMail.identifier(); 294 SinkLog() << "Modifying an existing mail" << existingMail.identifier();
@@ -291,7 +297,7 @@ void ComposerController::saveAsDraft()
291 return Store::modify(existingMail); 297 return Store::modify(existingMail);
292 } 298 }
293 }(); 299 }();
294 job = job.then([&] { 300 job = job.then([&] (const KAsync::Error &) {
295 emit done(); 301 emit done();
296 }); 302 });
297 run(job); 303 run(job);