From 20b76fc1fd539bf95b8cb0d0ea7044718ec99972 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 6 Dec 2016 19:31:31 +0100 Subject: Move mail to sent folder after sending it --- common/pipeline.cpp | 2 +- common/synchronizer.cpp | 22 ++++++++++++---------- common/synchronizer.h | 4 ++-- 3 files changed, 15 insertions(+), 13 deletions(-) (limited to 'common') diff --git a/common/pipeline.cpp b/common/pipeline.cpp index 1620667..4ea43eb 100644 --- a/common/pipeline.cpp +++ b/common/pipeline.cpp @@ -258,7 +258,7 @@ KAsync::Job Pipeline::modifiedEntity(void const *command, size_t size) return KAsync::error(0); } - auto newEntity = *ApplicationDomain::ApplicationDomainType::getInMemoryRepresentation(current, current.availableProperties()); + auto newEntity = *ApplicationDomain::ApplicationDomainType::getInMemoryCopy(current, current.availableProperties()); // Apply diff for (const auto &property : changeset) { diff --git a/common/synchronizer.cpp b/common/synchronizer.cpp index 036288e..fec848f 100644 --- a/common/synchronizer.cpp +++ b/common/synchronizer.cpp @@ -82,7 +82,6 @@ void Synchronizer::createEntity(const QByteArray &sinkId, const QByteArray &buff flatbuffers::FlatBufferBuilder entityFbb; mResourceContext.adaptorFactory(bufferType).createBuffer(domainObject, entityFbb); flatbuffers::FlatBufferBuilder fbb; - // This is the resource type and not the domain type auto entityId = fbb.CreateString(sinkId.toStdString()); auto type = fbb.CreateString(bufferType.toStdString()); auto delta = Sink::EntityBuffer::appendAsVector(fbb, entityFbb.GetBufferPointer(), entityFbb.GetSize()); @@ -91,7 +90,7 @@ void Synchronizer::createEntity(const QByteArray &sinkId, const QByteArray &buff enqueueCommand(Sink::Commands::CreateEntityCommand, BufferUtils::extractBuffer(fbb)); } -void Synchronizer::modifyEntity(const QByteArray &sinkId, qint64 revision, const QByteArray &bufferType, const Sink::ApplicationDomain::ApplicationDomainType &domainObject) +void Synchronizer::modifyEntity(const QByteArray &sinkId, qint64 revision, const QByteArray &bufferType, const Sink::ApplicationDomain::ApplicationDomainType &domainObject, const QByteArray &newResource, bool remove) { // FIXME removals QByteArrayList deletedProperties; @@ -103,10 +102,10 @@ void Synchronizer::modifyEntity(const QByteArray &sinkId, qint64 revision, const auto entityId = fbb.CreateString(sinkId.toStdString()); auto modifiedProperties = BufferUtils::toVector(fbb, domainObject.changedProperties()); auto deletions = BufferUtils::toVector(fbb, deletedProperties); - // This is the resource type and not the domain type auto type = fbb.CreateString(bufferType.toStdString()); auto delta = Sink::EntityBuffer::appendAsVector(fbb, entityFbb.GetBufferPointer(), entityFbb.GetSize()); - auto location = Sink::Commands::CreateModifyEntity(fbb, revision, entityId, deletions, type, delta, replayToSource, modifiedProperties); + auto resource = newResource.isEmpty() ? 0 : fbb.CreateString(newResource.constData()); + auto location = Sink::Commands::CreateModifyEntity(fbb, revision, entityId, deletions, type, delta, replayToSource, modifiedProperties, resource, remove); Sink::Commands::FinishModifyEntityBuffer(fbb, location); enqueueCommand(Sink::Commands::ModifyEntityCommand, BufferUtils::extractBuffer(fbb)); } @@ -247,9 +246,9 @@ QByteArrayList Synchronizer::resolveFilter(const QueryBase::Comparator &filter) } template -void Synchronizer::modify(const DomainType &entity) +void Synchronizer::modify(const DomainType &entity, const QByteArray &newResource, bool remove) { - modifyEntity(entity.identifier(), entity.revision(), ApplicationDomain::getTypeName(), entity); + modifyEntity(entity.identifier(), entity.revision(), ApplicationDomain::getTypeName(), entity, newResource, remove); } QList Synchronizer::getSyncRequests(const Sink::QueryBase &query) @@ -483,9 +482,12 @@ bool Synchronizer::allChangesReplayed() #define REGISTER_TYPE(T) \ template void Synchronizer::createOrModify(const QByteArray &bufferType, const QByteArray &remoteId, const T &entity, const QHash &mergeCriteria); \ - template void Synchronizer::modify(const T &entity); + template void Synchronizer::modify(const T &entity, const QByteArray &newResource, bool remove); + +#define SINK_REGISTER_TYPES() \ + REGISTER_TYPE(ApplicationDomain::Event); \ + REGISTER_TYPE(ApplicationDomain::Mail); \ + REGISTER_TYPE(ApplicationDomain::Folder); \ -REGISTER_TYPE(ApplicationDomain::Event); -REGISTER_TYPE(ApplicationDomain::Mail); -REGISTER_TYPE(ApplicationDomain::Folder); +SINK_REGISTER_TYPES() diff --git a/common/synchronizer.h b/common/synchronizer.h index f9b834e..00b5fba 100644 --- a/common/synchronizer.h +++ b/common/synchronizer.h @@ -79,7 +79,7 @@ protected: void enqueueCommand(int commandId, const QByteArray &data); void createEntity(const QByteArray &localId, const QByteArray &bufferType, const Sink::ApplicationDomain::ApplicationDomainType &domainObject); - void modifyEntity(const QByteArray &localId, qint64 revision, const QByteArray &bufferType, const Sink::ApplicationDomain::ApplicationDomainType &domainObject); + void modifyEntity(const QByteArray &localId, qint64 revision, const QByteArray &bufferType, const Sink::ApplicationDomain::ApplicationDomainType &domainObject, const QByteArray &newResource = QByteArray(), bool remove = false); void deleteEntity(const QByteArray &localId, qint64 revision, const QByteArray &bufferType); /** @@ -109,7 +109,7 @@ protected: // template // void create(const DomainType &entity); template - void modify(const DomainType &entity); + void modify(const DomainType &entity, const QByteArray &newResource = QByteArray(), bool remove = false); // template // void remove(const DomainType &entity); QByteArrayList resolveFilter(const QueryBase::Comparator &filter); -- cgit v1.2.3