summaryrefslogtreecommitdiffstats
path: root/extensions/PhabBugz/lib/Revision.pm
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/PhabBugz/lib/Revision.pm')
-rw-r--r--extensions/PhabBugz/lib/Revision.pm39
1 files changed, 14 insertions, 25 deletions
diff --git a/extensions/PhabBugz/lib/Revision.pm b/extensions/PhabBugz/lib/Revision.pm
index 295713aaf..6ad906829 100644
--- a/extensions/PhabBugz/lib/Revision.pm
+++ b/extensions/PhabBugz/lib/Revision.pm
@@ -41,7 +41,7 @@ has edit_policy => ( is => 'ro', isa => Str );
has subscriber_count => ( is => 'ro', isa => Int );
has bug => ( is => 'lazy', isa => Object );
has author => ( is => 'lazy', isa => Object );
-has reviewers => ( is => 'lazy', isa => ArrayRef [PhabUser] );
+has reviews => ( is => 'lazy', isa => ArrayRef [ Dict [ user => PhabUser, status => Str ] ] );
has subscribers => ( is => 'lazy', isa => ArrayRef [PhabUser] );
has projects => ( is => 'lazy', isa => ArrayRef [Project] );
has reviewers_raw => (
@@ -111,7 +111,7 @@ sub BUILDARGS {
$params->{bug_id} = $params->{fields}->{'bugzilla.bug-id'};
$params->{view_policy} = $params->{fields}->{policy}->{view};
$params->{edit_policy} = $params->{fields}->{policy}->{edit};
- $params->{reviewers_raw} = $params->{attachments}->{reviewers}->{reviewers};
+ $params->{reviewers_raw} = $params->{attachments}->{reviewers}->{reviewers} // [];
$params->{subscribers_raw} = $params->{attachments}->{subscribers};
$params->{projects_raw} = $params->{attachments}->{projects};
$params->{subscriber_count} =
@@ -303,35 +303,24 @@ sub _build_author {
}
}
-sub _build_reviewers {
+sub _build_reviews {
my ($self) = @_;
- return $self->{reviewers} if $self->{reviewers};
- return [] unless $self->reviewers_raw;
-
- my @phids;
- foreach my $reviewer ( @{ $self->reviewers_raw } ) {
- push @phids, $reviewer->{reviewerPHID};
- }
-
- return [] unless @phids;
-
+ my %by_phid = map { $_->{reviewerPHID} => $_ } @{ $self->reviewers_raw };
my $users = Bugzilla::Extension::PhabBugz::User->match(
- {
- phids => \@phids
- }
+ {
+ phids => [keys %by_phid]
+ }
);
- foreach my $user (@$users) {
- foreach my $reviewer_data ( @{ $self->reviewers_raw } ) {
- if ( $reviewer_data->{reviewerPHID} eq $user->phid ) {
- $user->{phab_review_status} = $reviewer_data->{status};
- last;
+ return [
+ map {
+ {
+ user => $_,
+ status => $by_phid{ $_->phid }{status},
}
- }
- }
-
- return $self->{reviewers} = $users;
+ } @$users
+ ];
}
sub _build_subscribers {