diff --git a/src/applications/differential/editor/DifferentialTransactionEditor.php b/src/applications/differential/editor/DifferentialTransactionEditor.php --- a/src/applications/differential/editor/DifferentialTransactionEditor.php +++ b/src/applications/differential/editor/DifferentialTransactionEditor.php @@ -10,7 +10,7 @@ private $hasReviewTransaction = false; private $affectedPaths; private $firstBroadcast = false; - private $wasDraft = false; + private $wasBroadcasting; public function getEditorApplicationClass() { return 'PhabricatorDifferentialApplication'; @@ -137,7 +137,7 @@ } } - $this->wasDraft = $object->isDraft(); + $this->wasBroadcasting = $object->getShouldBroadcast(); return parent::expandTransactions($object, $xactions); } @@ -1594,17 +1594,13 @@ // email so the mail gets enriched with "SUMMARY" and "TEST PLAN". $is_new = $this->getIsNewObject(); - $was_draft = $this->wasDraft; + $was_broadcasting = $this->wasBroadcasting; - if (!$object->isDraft() && ($was_draft || $is_new)) { - if (!$object->getShouldBroadcast()) { + if ($object->getShouldBroadcast()) { + if (!$was_broadcasting || $is_new) { // Mark this as the first broadcast we're sending about the revision // so mail can generate specially. $this->firstBroadcast = true; - - $object - ->setShouldBroadcast(true) - ->save(); } } diff --git a/src/applications/differential/storage/DifferentialRevision.php b/src/applications/differential/storage/DifferentialRevision.php --- a/src/applications/differential/storage/DifferentialRevision.php +++ b/src/applications/differential/storage/DifferentialRevision.php @@ -75,8 +75,10 @@ if (PhabricatorEnv::getEnvConfig('phabricator.show-prototypes')) { $initial_state = DifferentialRevisionStatus::DRAFT; + $should_broadcast = false; } else { $initial_state = DifferentialRevisionStatus::NEEDS_REVIEW; + $should_broadcast = true; } return id(new DifferentialRevision()) @@ -85,7 +87,8 @@ ->attachRepository(null) ->attachActiveDiff(null) ->attachReviewers(array()) - ->setModernRevisionStatus($initial_state); + ->setModernRevisionStatus($initial_state) + ->setShouldBroadcast($should_broadcast); } protected function getConfiguration() { diff --git a/src/applications/differential/xaction/DifferentialRevisionRequestReviewTransaction.php b/src/applications/differential/xaction/DifferentialRevisionRequestReviewTransaction.php --- a/src/applications/differential/xaction/DifferentialRevisionRequestReviewTransaction.php +++ b/src/applications/differential/xaction/DifferentialRevisionRequestReviewTransaction.php @@ -37,7 +37,9 @@ public function applyInternalEffects($object, $value) { $status_review = DifferentialRevisionStatus::NEEDS_REVIEW; - $object->setModernRevisionStatus($status_review); + $object + ->setModernRevisionStatus($status_review) + ->setShouldBroadcast(true); } protected function validateAction($object, PhabricatorUser $viewer) {