diff --git a/src/applications/maniphest/mail/ManiphestReplyHandler.php b/src/applications/maniphest/mail/ManiphestReplyHandler.php index ef815cec29..c866a85a82 100644 --- a/src/applications/maniphest/mail/ManiphestReplyHandler.php +++ b/src/applications/maniphest/mail/ManiphestReplyHandler.php @@ -56,9 +56,7 @@ final class ManiphestReplyHandler extends PhabricatorMailReplyHandler { 'id' => $mail->getID(), )); - $template = new ManiphestTransaction(); - $template->setContentSource($content_source); - $template->setAuthorPHID($user->getPHID()); + $template = new ManiphestTransactionPro(); $is_unsub = false; if ($is_new_task) { @@ -112,12 +110,22 @@ final class ManiphestReplyHandler extends PhabricatorMailReplyHandler { break; } - $xaction = clone $template; - $xaction->setTransactionType($ttype); - $xaction->setNewValue($new_value); - $xaction->setComments($body); + if ($ttype != PhabricatorTransactions::TYPE_COMMENT) { + $xaction = clone $template; + $xaction->setTransactionType($ttype); + $xaction->setNewValue($new_value); + $xactions[] = $xaction; + } + + if (strlen($body)) { + $xaction = clone $template; + $xaction->setTransactionType(PhabricatorTransactions::TYPE_COMMENT); + $xaction->attachComment( + id(new ManiphestTransactionComment()) + ->setContent($body)); + $xactions[] = $xaction; + } - $xactions[] = $xaction; } $ccs = $mail->loadCCPHIDs(); @@ -149,13 +157,14 @@ final class ManiphestReplyHandler extends PhabricatorMailReplyHandler { $task = $event->getValue('task'); $xactions = $event->getValue('transactions'); - - $editor = new ManiphestTransactionEditor(); - $editor->setActor($user); - $editor->setParentMessageID($mail->getMessageID()); - $editor->setExcludeMailRecipientPHIDs( - $this->getExcludeMailRecipientPHIDs()); - $editor->applyTransactions($task, $xactions); + $editor = id(new ManiphestTransactionEditorPro()) + ->setActor($user) + ->setParentMessageID($mail->getMessageID()) + ->setExcludeMailRecipientPHIDs($this->getExcludeMailRecipientPHIDs()) + ->setContinueOnNoEffect(true) + ->setContinueOnMissingFields(true) + ->setContentSource($content_source) + ->applyTransactions($task, $xactions); $event = new PhabricatorEvent( PhabricatorEventType::TYPE_MANIPHEST_DIDEDITTASK,