diff options
Diffstat (limited to 'lib/gitlab/quick_actions/issue_actions.rb')
-rw-r--r-- | lib/gitlab/quick_actions/issue_actions.rb | 26 |
1 files changed, 8 insertions, 18 deletions
diff --git a/lib/gitlab/quick_actions/issue_actions.rb b/lib/gitlab/quick_actions/issue_actions.rb index ae79db723f2..c79432f36cc 100644 --- a/lib/gitlab/quick_actions/issue_actions.rb +++ b/lib/gitlab/quick_actions/issue_actions.rb @@ -226,28 +226,18 @@ module Gitlab params 'email1@example.com email2@example.com (up to 6 emails)' types Issue condition do - Feature.enabled?(:issue_email_participants, parent) && + quick_action_target.persisted? && + Feature.enabled?(:issue_email_participants, parent) && current_user.can?(:"admin_#{quick_action_target.to_ability_name}", quick_action_target) end command :invite_email do |emails = ""| - MAX_NUMBER_OF_EMAILS = 6 - - existing_emails = quick_action_target.email_participants_emails_downcase - emails_to_add = emails.split(' ').index_by { |email| [email.downcase, email] }.except(*existing_emails).each_value.first(MAX_NUMBER_OF_EMAILS) - added_emails = [] - - emails_to_add.each do |email| - new_participant = quick_action_target.issue_email_participants.create(email: email) - added_emails << email if new_participant.persisted? - end + response = ::IssueEmailParticipants::CreateService.new( + target: quick_action_target, + current_user: current_user, + emails: emails.split(' ') + ).execute - if added_emails.any? - message = _("added %{emails}") % { emails: added_emails.to_sentence } - SystemNoteService.add_email_participants(quick_action_target, quick_action_target.project, current_user, message) - @execution_message[:invite_email] = message.upcase_first << "." - else - @execution_message[:invite_email] = _("No email participants were added. Either none were provided, or they already exist.") - end + @execution_message[:invite_email] = response.message end desc { _('Promote issue to incident') } |