From c66ea567439130e06619cc01da2cbedff2c46370 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 22 Jul 2013 12:21:01 -0700 Subject: [PATCH] Hack up Asana story text so it's more useful Summary: `FeedStory->renderText()` is garbage and I don't want to fix it in general until after T2222 / T2217. Provide an Asana-specific alternative for higher-quality feed stories (notably, including comment text). Test Plan: {F51035} Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T2852 Differential Revision: https://secure.phabricator.com/D6521 --- .../worker/DoorkeeperFeedWorkerAsana.php | 8 +++++- .../PhabricatorFeedStoryDifferential.php | 27 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) 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; + } + + }