From de23b442ba2f6f9a28360dd8696565efee1f88bf Mon Sep 17 00:00:00 2001 From: dklawren Date: Thu, 28 Sep 2017 10:22:37 -0400 Subject: Bug 1403584: Clear r+ in bug when reviewer is removed from the revision by the author via Change Reviewers (#251) --- extensions/PhabBugz/lib/WebService.pm | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'extensions/PhabBugz') diff --git a/extensions/PhabBugz/lib/WebService.pm b/extensions/PhabBugz/lib/WebService.pm index 28ca19172..4b14f1495 100644 --- a/extensions/PhabBugz/lib/WebService.pm +++ b/extensions/PhabBugz/lib/WebService.pm @@ -185,16 +185,20 @@ sub update_reviewer_statuses { next if $revision_id != $curr_revision_id; # Clear old flags if no longer accepted - my (@old_flags, @new_flags, %accepted_done, %denied_done, $flag_type); + my (@denied_flags, @new_flags, @removed_flags, %accepted_done, $flag_type); foreach my $flag (@{ $attachment->flags }) { next if $flag->type->name ne 'review'; $flag_type = $flag->type; if (any { $flag->setter->id == $_ } @$denied_user_ids) { - push(@old_flags, { id => $flag->id, setter => $flag->setter, status => 'X' }); + push(@denied_flags, { id => $flag->id, setter => $flag->setter, status => 'X' }); } if (any { $flag->setter->id == $_ } @$accepted_user_ids) { $accepted_done{$flag->setter->id}++; } + if ($flag->status eq '+' + && !any { $flag->setter->id == $_ } (@$accepted_user_ids, @$denied_user_ids)) { + push(@removed_flags, { id => $flag->id, setter => $flag->setter, status => 'X' }); + } } $flag_type ||= first { $_->name eq 'review' } @{ $attachment->flag_types }; @@ -212,9 +216,12 @@ sub update_reviewer_statuses { foreach my $flag_data (@new_flags) { $comment .= $flag_data->{setter}->name . " has approved the revision.\n"; } - foreach my $flag_data (@old_flags) { + foreach my $flag_data (@denied_flags) { $comment .= $flag_data->{setter}->name . " has requested changes to the revision.\n"; } + foreach my $flag_data (@removed_flags) { + $comment .= $flag_data->{setter}->name . " has been removed from the revision.\n"; + } if ($comment) { $comment .= "\n" . Bugzilla->params->{phabricator_base_uri} . "D" . $revision_id; @@ -227,7 +234,7 @@ sub update_reviewer_statuses { }); } - $attachment->set_flags(\@old_flags, \@new_flags); + $attachment->set_flags([ @denied_flags, @removed_flags ], \@new_flags); $attachment->update($timestamp); $bug->update($timestamp) if $comment; -- cgit v1.2.3-24-g4f1b