summaryrefslogtreecommitdiffstats
path: root/extensions/Needinfo/Extension.pm
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/Needinfo/Extension.pm')
-rw-r--r--extensions/Needinfo/Extension.pm14
1 files changed, 14 insertions, 0 deletions
diff --git a/extensions/Needinfo/Extension.pm b/extensions/Needinfo/Extension.pm
index c1659a1eb..a85bad5c6 100644
--- a/extensions/Needinfo/Extension.pm
+++ b/extensions/Needinfo/Extension.pm
@@ -92,6 +92,7 @@ sub bug_start_of_update {
my $add_needinfo = delete $params->{needinfo};
my $needinfo_from = delete $params->{needinfo_from};
my $needinfo_role = delete $params->{needinfo_role};
+ my $is_redirect = delete $params->{needinfo_redirect};
my $is_private = $params->{'comment_is_private'};
my @needinfo_overrides;
@@ -181,6 +182,19 @@ sub bug_start_of_update {
}
}
+ if ($is_redirect && scalar(@new_flags) == 1) {
+ # Find the current user's needinfo request
+ foreach my $flag (@{ $bug->flags }) {
+ next unless $flag->type->name eq 'needinfo'
+ && $flag->requestee
+ && $flag->requestee->id == $user->id;
+ # Setting the id on new_flag updates the existing flag instead of
+ # creating a new one.
+ $new_flags[0]->{id} = $flag->id;
+ last;
+ }
+ }
+
if (@flags || @new_flags) {
$bug->set_flags(\@flags, \@new_flags);
}