From c2c528f9a7c0e5af840d7c142b47c9436bed4eac Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Fri, 5 Feb 2016 12:49:40 +0100 Subject: Fixed mail appending. --- examples/maildirresource/libmaildir/maildir.cpp | 5 +++++ examples/maildirresource/maildirresource.cpp | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/examples/maildirresource/libmaildir/maildir.cpp b/examples/maildirresource/libmaildir/maildir.cpp index daf2e8f..0057b26 100644 --- a/examples/maildirresource/libmaildir/maildir.cpp +++ b/examples/maildirresource/libmaildir/maildir.cpp @@ -642,9 +642,14 @@ QString Maildir::addEntry(const QByteArray& data) QFile f(key); bool result = f.open(QIODevice::WriteOnly); + if (!result) { + qWarning() << f.errorString(); + qWarning() << "Cannot write to mail file: " << key; + } result = result & (f.write(data) != -1); f.close(); if (!result) { + qWarning() << "Cannot write to mail file: " << key; // d->lastError = i18n("Cannot write to mail file %1." , key); return QString(); } diff --git a/examples/maildirresource/maildirresource.cpp b/examples/maildirresource/maildirresource.cpp index 77ce11c..87623ca 100644 --- a/examples/maildirresource/maildirresource.cpp +++ b/examples/maildirresource/maildirresource.cpp @@ -271,10 +271,19 @@ KAsync::Job MaildirResource::replay(Sink::Storage &synchronizationStore, c } const auto parentFolderPath = parentFolderRemoteId; KPIM::Maildir maildir(parentFolderPath, false); + if (!maildir.isValid(true)) { + return KAsync::error(1, "Invalid folder " + parentFolderPath); + } //FIXME assemble the MIME message + Trace() << "Creating a new mail."; const auto remoteId = maildir.addEntry("foobar"); - Trace() << "Creating a new mail: " << remoteId; - recordRemoteId(ENTITY_TYPE_MAIL, mail.identifier(), remoteId.toUtf8(), synchronizationTransaction); + if (remoteId.isEmpty()) { + Warning() << "Failed to create mail: " << remoteId; + return KAsync::error(1, "Failed to create mail."); + } else { + Trace() << "Mail created: " << remoteId; + recordRemoteId(ENTITY_TYPE_MAIL, mail.identifier(), remoteId.toUtf8(), synchronizationTransaction); + } } else if (operation == Sink::Operation_Removal) { const auto uid = Sink::Storage::uidFromKey(key); const auto remoteId = resolveLocalId(ENTITY_TYPE_MAIL, uid, synchronizationTransaction); -- cgit v1.2.3