diff options
Diffstat (limited to 'extensions/PhabBugz/lib/Revision.pm')
-rw-r--r-- | extensions/PhabBugz/lib/Revision.pm | 39 |
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 { |