Skip to content

Commit 454394a

Browse files
committed
Removing the sub-class listeners
The plan will be to break the IssueListener into smaller pieces and then selectively turn on/off different listeners for a repository. But mostly, I want to keep the differences between repositories to a minimum, to avoid these differences.
1 parent ff56b6f commit 454394a

File tree

3 files changed

+58
-131
lines changed

3 files changed

+58
-131
lines changed

src/AppBundle/Issues/IssueListener.php

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,22 @@
33
namespace AppBundle\Issues;
44

55
use AppBundle\Event\GitHubEvent;
6+
use AppBundle\GitHubEvents;
67
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
78

8-
abstract class IssueListener implements EventSubscriberInterface
9+
class IssueListener implements EventSubscriberInterface
910
{
10-
protected static $triggerWordToStatus;
11-
protected static $privateTriggerWordToStatus;
11+
private static $triggerWordToStatus = [
12+
'needs review' => Status::NEEDS_REVIEW,
13+
'needs work' => Status::NEEDS_WORK,
14+
'works for me' => Status::WORKS_FOR_ME,
15+
'reviewed' => Status::REVIEWED,
16+
'needs comments' => Status::NEEDS_COMMENTS,
17+
];
18+
19+
private static $privateTriggerWordToStatus = [
20+
'ready' => Status::READY,
21+
];
1222

1323
/**
1424
* @var StatusApi
@@ -82,13 +92,56 @@ public function onPullRequest(GitHubEvent $event)
8292
$event->setResponseData($responseData);
8393
}
8494

85-
final protected function getIssueStatus($issueNumber)
95+
/**
96+
* Changes "Bug" issues to "Needs Review".
97+
*
98+
* @param GitHubEvent $event
99+
*/
100+
public function onIssues(GitHubEvent $event)
101+
{
102+
$data = $event->getData();
103+
if ('labeled' !== $action = $data['action']) {
104+
$event->setResponseData(array('unsupported_action' => $action));
105+
106+
return;
107+
}
108+
109+
$responseData = array('issue' => $issueNumber = $data['issue']['number']);
110+
// Ignore non-bugs or issue which already has a status
111+
if ('bug' !== strtolower($data['label']['name']) || null !== $currentStatus = $this->getIssueStatus($issueNumber)) {
112+
$responseData['status_change'] = null;
113+
$event->setResponseData($responseData);
114+
115+
return;
116+
}
117+
118+
$newStatus = Status::NEEDS_REVIEW;
119+
120+
$this->setIssueStatus($issueNumber, $newStatus);
121+
$responseData['status_change'] = $newStatus;
122+
123+
$event->setResponseData($responseData);
124+
}
125+
126+
private function getIssueStatus($issueNumber)
86127
{
87128
return $this->statusApi->getIssueStatus($issueNumber);
88129
}
89130

90-
final protected function setIssueStatus($issueNumber, $status)
131+
private function setIssueStatus($issueNumber, $status)
91132
{
92133
return $this->statusApi->setIssueStatus($issueNumber, $status);
93134
}
135+
136+
/**
137+
* {@inheritdoc}
138+
*/
139+
public static function getSubscribedEvents()
140+
{
141+
return array(
142+
GitHubEvents::ISSUE_COMMENT => 'onIssueComment',
143+
GitHubEvents::PULL_REQUEST => 'onPullRequest',
144+
GitHubEvents::ISSUES => 'onIssues',
145+
);
146+
}
94147
}

src/AppBundle/Listener/SymfonyDocsIssueListener.php

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/AppBundle/Listener/SymfonyIssueListener.php

Lines changed: 0 additions & 80 deletions
This file was deleted.

0 commit comments

Comments
 (0)