From 634772c6da51c1d69f804bd45bbedaeb88789cd6 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Wed, 13 Apr 2016 09:26:16 +0200 Subject: Identity Support --- accounts/maildir/maildirsettings.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'accounts/maildir/maildirsettings.cpp') diff --git a/accounts/maildir/maildirsettings.cpp b/accounts/maildir/maildirsettings.cpp index fa30851c..e47b834f 100644 --- a/accounts/maildir/maildirsettings.cpp +++ b/accounts/maildir/maildirsettings.cpp @@ -82,6 +82,18 @@ void MaildirSettings::setAccountIdentifier(const QByteArray &id) [](int errorCode, const QString &errorMessage) { qWarning() << "Failed to find the maildir resource: " << errorMessage; }).exec(); + + //FIXME this assumes that we only ever have one identity per account + Sink::Store::fetchOne(Sink::Query::PropertyFilter("account", QVariant::fromValue(id))) + .then([this](const Sink::ApplicationDomain::Identity &identity) { + mIdentityIdentifier = identity.identifier(); + mUsername = identity.getProperty("username").toString(); + mEmailAddress = identity.getProperty("address").toString(); + emit identityChanged(); + }, + [](int errorCode, const QString &errorMessage) { + qWarning() << "Failed to find the identity resource: " << errorMessage; + }).exec(); } QByteArray MaildirSettings::accountIdentifier() const @@ -207,6 +219,27 @@ void MaildirSettings::save() }) .exec(); } + + if (!mIdentityIdentifier.isEmpty()) { + Sink::ApplicationDomain::Identity identity(mMailtransportIdentifier); + identity.setProperty("username", mUsername); + identity.setProperty("address", mEmailAddress); + Sink::Store::modify(identity).then([](){}, [](int errorCode, const QString &errorMessage) { + qWarning() << "Error while modifying identity: " << errorMessage; + }) + .exec(); + } else { + auto identity = Sink::ApplicationDomain::ApplicationDomainType::createEntity(); + mIdentityIdentifier = identity.identifier(); + identity.setProperty("account", mAccountIdentifier); + identity.setProperty("username", mUsername); + identity.setProperty("address", mEmailAddress); + Sink::Store::create(identity).then([]() {}, + [](int errorCode, const QString &errorMessage) { + qWarning() << "Error while creating identity: " << errorMessage; + }) + .exec(); + } } void MaildirSettings::remove() -- cgit v1.2.3