Skip to content

Commit b92fcc6

Browse files
committed
Make sure issue has status "needs review" before trying to find reviewer
1 parent ae9cdec commit b92fcc6

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/Service/TaskHandler/SuggestReviewerHandler.php

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66

77
use App\Api\Issue\IssueApi;
88
use App\Api\PullRequest\PullRequestApi;
9+
use App\Api\Status\Status;
10+
use App\Api\Status\StatusApi;
911
use App\Command\SuggestReviewerCommand;
1012
use App\Entity\Task;
1113
use App\Service\RepositoryProvider;
14+
use App\Service\TaskScheduler;
1215

1316
/**
1417
* @author Tobias Nyholm <[email protected]>
@@ -18,12 +21,16 @@ class SuggestReviewerHandler implements TaskHandlerInterface
1821
private $issueApi;
1922
private $repositoryProvider;
2023
private $pullRequestApi;
24+
private $statusApi;
25+
private $scheduler;
2126

22-
public function __construct(PullRequestApi $pullRequestApi, IssueApi $issueApi, RepositoryProvider $repositoryProvider)
27+
public function __construct(PullRequestApi $pullRequestApi, IssueApi $issueApi, RepositoryProvider $repositoryProvider, StatusApi $statusApi, TaskScheduler $scheduler)
2328
{
2429
$this->issueApi = $issueApi;
2530
$this->repositoryProvider = $repositoryProvider;
2631
$this->pullRequestApi = $pullRequestApi;
32+
$this->statusApi = $statusApi;
33+
$this->scheduler = $scheduler;
2734
}
2835

2936
/**
@@ -32,8 +39,16 @@ public function __construct(PullRequestApi $pullRequestApi, IssueApi $issueApi,
3239
public function handle(Task $task): void
3340
{
3441
$repository = $this->repositoryProvider->getRepository($task->getRepositoryFullName());
35-
if (!$this->issueApi->hasActivity($repository, $task->getNumber())) {
42+
if ($this->issueApi->hasActivity($repository, $task->getNumber())) {
43+
return;
44+
}
45+
46+
$status = $this->statusApi->getIssueStatus($task->getNumber(), $repository);
47+
if (Status::NEEDS_REVIEW === $status || null === $status) {
3648
$this->pullRequestApi->findReviewer($repository, $task->getNumber(), SuggestReviewerCommand::TYPE_SUGGEST);
49+
} else {
50+
// Try again later
51+
$this->scheduler->runLater($repository, $task->getNumber(), Task::ACTION_SUGGEST_REVIEWER, new \DateTimeImmutable('+20hours'));
3752
}
3853
}
3954

src/Subscriber/FindReviewerSubscriber.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public function onComment(GitHubEvent $event)
5555
}
5656

5757
// Search for "review"
58-
if (preg_match('~\@carsonbot(\W[^(status)].*|\W)(\breviewer\b|\breview\b)~i', $data['comment']['body'] ?? '')) {
58+
if (preg_match('~\@'.$this->botUsername.'(\W[^(status)].*|\W)(\breviewer\b|\breview\b)~i', $data['comment']['body'] ?? '')) {
5959
$number = $data['issue']['number'];
6060
$this->pullRequestApi->findReviewer($event->getRepository(), $number, SuggestReviewerCommand::TYPE_DEMAND);
6161
$event->setResponseData([

0 commit comments

Comments
 (0)