diff options
Diffstat (limited to 'framework/domain/composercontroller.cpp')
-rw-r--r-- | framework/domain/composercontroller.cpp | 14 |
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 | ||
260 | void ComposerController::saveAsDraft() | 261 | void 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); |