diff --git a/src/infrastructure/daemon/bot/handler/PhabricatorBotFeedNotificationHandler.php b/src/infrastructure/daemon/bot/handler/PhabricatorBotFeedNotificationHandler.php index 21eadf1..a058789 100644 --- a/src/infrastructure/daemon/bot/handler/PhabricatorBotFeedNotificationHandler.php +++ b/src/infrastructure/daemon/bot/handler/PhabricatorBotFeedNotificationHandler.php @@ -17,12 +17,31 @@ final class PhabricatorBotFeedNotificationHandler $show = $this->getConfig('notification.types'); + $projects = $this->getConfig('notification.projects'); + + $obj_type = phid_get_type($story_objectphid); if ($show) { - $obj_type = phid_get_type($story_objectphid); if (!in_array(strtolower($obj_type), $show)) { return false; } } + if ($projects) { + if ($obj_type == 'TASK') { + $api_parameters = array( + 'phids' => array( + $story_objectphid + ), + 'projectPHIDs' => $projects + ); + $objects = $this->getConduit()->callMethodSynchronous( + 'maniphest.query', + $api_parameters + ); + if(empty($objects)) { + return false; + } + } + } $verbosity = $this->getConfig('notification.verbosity', 3); @@ -125,12 +144,12 @@ final class PhabricatorBotFeedNotificationHandler 'feed.query', array( 'limit' => $config_page_size, - 'after' => $chrono_key_cursor, + 'before' => $chrono_key_cursor, 'view' => 'text', )); foreach ($stories as $story) { - if ($story['chronologicalKey'] == $last_seen_chrono_key) { + if ($story['chronologicalKey'] <= $last_seen_chrono_key) { // Caught up on feed return; } @@ -161,7 +180,7 @@ final class PhabricatorBotFeedNotificationHandler $message .= ' '.$objects[$story['objectPHID']]['uri']; } - $channels = $this->getConfig('join'); + $channels = $this->getConfig('notification.channels'); foreach ($channels as $channel_name) { $channel = id(new PhabricatorBotChannel())