diff --git a/src/applications/doorkeeper/worker/DoorkeeperFeedWorkerAsana.php b/src/applications/doorkeeper/worker/DoorkeeperFeedWorkerAsana.php index 2affc2038b..4049ae727f 100644 --- a/src/applications/doorkeeper/worker/DoorkeeperFeedWorkerAsana.php +++ b/src/applications/doorkeeper/worker/DoorkeeperFeedWorkerAsana.php @@ -493,12 +493,18 @@ final class DoorkeeperFeedWorkerAsana extends FeedPushWorker { // because everything else is idempotent, so this is the only effect we // can't safely run more than once. + if ($story instanceof PhabricatorFeedStoryDifferential) { + $text = $story->renderForAsanaBridge(); + } else { + $text = $story->renderText(); + } + $this->makeAsanaAPICall( $oauth_token, 'tasks/'.$parent_ref->getObjectID().'/stories', 'POST', array( - 'text' => $story->renderText(), + 'text' => $text, )); } diff --git a/src/applications/feed/story/PhabricatorFeedStoryDifferential.php b/src/applications/feed/story/PhabricatorFeedStoryDifferential.php index fce311b4bc..848bf510e7 100644 --- a/src/applications/feed/story/PhabricatorFeedStoryDifferential.php +++ b/src/applications/feed/story/PhabricatorFeedStoryDifferential.php @@ -74,4 +74,31 @@ final class PhabricatorFeedStoryDifferential extends PhabricatorFeedStory { => 'PhabricatorFeedStoryDifferentialAggregate', ); } + + // TODO: At some point, make feed rendering not terrible and remove this + // hacky mess. + public function renderForAsanaBridge() { + $data = $this->getStoryData(); + $comment = $data->getValue('feedback_content'); + + $author_name = $this->getHandle($this->getAuthorPHID())->getName(); + $action = $this->getValue('action'); + $verb = DifferentialAction::getActionPastTenseVerb($action); + + $title = "{$author_name} {$verb} this revision."; + if (strlen($comment)) { + $engine = PhabricatorMarkupEngine::newMarkupEngine(array()) + ->setConfig('viewer', new PhabricatorUser()) + ->setMode(PhutilRemarkupEngine::MODE_TEXT); + + $comment = $engine->markupText($comment); + + $title .= "\n\n"; + $title .= $comment; + } + + return $title; + } + + }