diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-06-23 11:26:48 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-06-23 11:26:48 +0200 |
commit | c605c01fb480e634c9edc21e8430e753e4595be8 (patch) | |
tree | 76d59c977e413041c37ab9fbf4913dcc13dbe4b2 | |
parent | 95865281eb7b83cf4c275a817971d88e2c7daff9 (diff) | |
download | kube-c605c01fb480e634c9edc21e8430e753e4595be8.tar.gz kube-c605c01fb480e634c9edc21e8430e753e4595be8.zip |
Refactored the reply generating code for comprehensibility
-rw-r--r-- | framework/src/domain/mime/mailtemplates.cpp | 61 |
1 files changed, 39 insertions, 22 deletions
diff --git a/framework/src/domain/mime/mailtemplates.cpp b/framework/src/domain/mime/mailtemplates.cpp index b1e57742..6158f787 100644 --- a/framework/src/domain/mime/mailtemplates.cpp +++ b/framework/src/domain/mime/mailtemplates.cpp | |||
@@ -562,26 +562,9 @@ enum ReplyStrategy { | |||
562 | ReplyNone | 562 | ReplyNone |
563 | }; | 563 | }; |
564 | 564 | ||
565 | void MailTemplates::reply(const KMime::Message::Ptr &origMsg, const std::function<void(const KMime::Message::Ptr &result)> &callback) | 565 | static KMime::Types::Mailbox::List getMailingListAddresses(const KMime::Message::Ptr &origMsg) |
566 | { | 566 | { |
567 | //FIXME | ||
568 | const bool alwaysPlain = true; | ||
569 | //FIXME | ||
570 | const ReplyStrategy replyStrategy = ReplySmart; | ||
571 | KMime::Message::Ptr msg(new KMime::Message); | ||
572 | //FIXME | ||
573 | //Personal email addresses | ||
574 | KMime::Types::AddrSpecList me; | ||
575 | KMime::Types::Mailbox::List toList; | ||
576 | KMime::Types::Mailbox::List replyToList; | ||
577 | KMime::Types::Mailbox::List mailingListAddresses; | 567 | KMime::Types::Mailbox::List mailingListAddresses; |
578 | |||
579 | // const uint originalIdentity = identityUoid(origMsg); | ||
580 | initHeader(msg); | ||
581 | replyToList = origMsg->replyTo()->mailboxes(); | ||
582 | |||
583 | msg->contentType()->setCharset("utf-8"); | ||
584 | |||
585 | if (origMsg->headerByType("List-Post") && | 568 | if (origMsg->headerByType("List-Post") && |
586 | origMsg->headerByType("List-Post")->asUnicodeString().contains(QStringLiteral("mailto:"), Qt::CaseInsensitive)) { | 569 | origMsg->headerByType("List-Post")->asUnicodeString().contains(QStringLiteral("mailto:"), Qt::CaseInsensitive)) { |
587 | 570 | ||
@@ -593,7 +576,23 @@ void MailTemplates::reply(const KMime::Message::Ptr &origMsg, const std::functio | |||
593 | mailingListAddresses << mailbox; | 576 | mailingListAddresses << mailbox; |
594 | } | 577 | } |
595 | } | 578 | } |
579 | return mailingListAddresses; | ||
580 | } | ||
581 | |||
582 | struct Recipients { | ||
583 | KMime::Types::Mailbox::List to; | ||
584 | KMime::Types::Mailbox::List cc; | ||
585 | }; | ||
586 | |||
587 | static Recipients getRecipients(const KMime::Message::Ptr &origMsg, const KMime::Types::AddrSpecList &me) | ||
588 | { | ||
589 | const KMime::Types::Mailbox::List replyToList = origMsg->replyTo()->mailboxes(); | ||
590 | const KMime::Types::Mailbox::List mailingListAddresses = getMailingListAddresses(origMsg); | ||
596 | 591 | ||
592 | KMime::Types::Mailbox::List toList; | ||
593 | KMime::Types::Mailbox::List ccList; | ||
594 | //FIXME | ||
595 | const ReplyStrategy replyStrategy = ReplySmart; | ||
597 | switch (replyStrategy) { | 596 | switch (replyStrategy) { |
598 | case ReplySmart: { | 597 | case ReplySmart: { |
599 | if (auto hdr = origMsg->headerByType("Mail-Followup-To")) { | 598 | if (auto hdr = origMsg->headerByType("Mail-Followup-To")) { |
@@ -722,9 +721,7 @@ void MailTemplates::reply(const KMime::Message::Ptr &origMsg, const std::functio | |||
722 | ccRecipients.pop_front(); | 721 | ccRecipients.pop_front(); |
723 | } | 722 | } |
724 | 723 | ||
725 | foreach (const KMime::Types::Mailbox &mailbox, ccRecipients) { | 724 | ccList = ccRecipients; |
726 | msg->cc()->addAddress(mailbox); | ||
727 | } | ||
728 | } | 725 | } |
729 | 726 | ||
730 | if (toList.isEmpty() && !recipients.isEmpty()) { | 727 | if (toList.isEmpty() && !recipients.isEmpty()) { |
@@ -763,10 +760,30 @@ void MailTemplates::reply(const KMime::Message::Ptr &origMsg, const std::functio | |||
763 | // the addressees will be set by the caller | 760 | // the addressees will be set by the caller |
764 | break; | 761 | break; |
765 | } | 762 | } |
763 | return {toList, ccList}; | ||
764 | } | ||
766 | 765 | ||
767 | foreach (const KMime::Types::Mailbox &mailbox, toList) { | 766 | void MailTemplates::reply(const KMime::Message::Ptr &origMsg, const std::function<void(const KMime::Message::Ptr &result)> &callback) |
767 | { | ||
768 | //FIXME | ||
769 | const bool alwaysPlain = true; | ||
770 | KMime::Message::Ptr msg(new KMime::Message); | ||
771 | //FIXME | ||
772 | //Personal email addresses, required to detect the case where we reply to a message we have sent ourselves | ||
773 | KMime::Types::AddrSpecList me; | ||
774 | |||
775 | // const uint originalIdentity = identityUoid(origMsg); | ||
776 | initHeader(msg); | ||
777 | |||
778 | msg->contentType()->setCharset("utf-8"); | ||
779 | |||
780 | const auto recipients = getRecipients(origMsg, me); | ||
781 | for (const auto &mailbox : recipients.to) { | ||
768 | msg->to()->addAddress(mailbox); | 782 | msg->to()->addAddress(mailbox); |
769 | } | 783 | } |
784 | for (const auto &mailbox : recipients.cc) { | ||
785 | msg->cc(true)->addAddress(mailbox); | ||
786 | } | ||
770 | 787 | ||
771 | const QByteArray refStr = getRefStr(origMsg); | 788 | const QByteArray refStr = getRefStr(origMsg); |
772 | if (!refStr.isEmpty()) { | 789 | if (!refStr.isEmpty()) { |