diff --git a/app/models/commit.rb b/app/models/commit.rb index 6677dcb1e34..1cabc060c2a 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -139,15 +139,14 @@ class Commit users << author users << committer - mentions = [] - mentions << self.mentioned_users(current_user, project) + users.push *self.mentioned_users(current_user, project) notes(project).each do |note| users << note.author - mentions << note.mentioned_users(current_user, project) + users.push *note.mentioned_users(current_user, project) end - users.concat(mentions.reduce([], :|)).uniq + users.uniq end def notes(project) diff --git a/app/models/concerns/issuable.rb b/app/models/concerns/issuable.rb index 1cad5894267..a21d9bdfe8a 100644 --- a/app/models/concerns/issuable.rb +++ b/app/models/concerns/issuable.rb @@ -122,16 +122,15 @@ module Issuable users = [] users << author users << assignee if is_assigned? - - mentions = [] - mentions << self.mentioned_users(current_user) + + users.push *self.mentioned_users(current_user) notes.each do |note| users << note.author - mentions << note.mentioned_users(current_user) + users.push *note.mentioned_users(current_user) end - users.concat(mentions.reduce([], :|)).uniq + users.uniq end def subscribed?(user) diff --git a/app/models/snippet.rb b/app/models/snippet.rb index 13703f4115f..c11c28805eb 100644 --- a/app/models/snippet.rb +++ b/app/models/snippet.rb @@ -90,15 +90,13 @@ class Snippet < ActiveRecord::Base def participants(current_user = self.author) users = [] users << author - - mentions = [] notes.each do |note| users << note.author - mentions << note.mentioned_users(current_user) + users.push *note.mentioned_users(current_user) end - users.concat(mentions.reduce([], :|)).uniq + users.uniq end class << self diff --git a/app/services/projects/participants_service.rb b/app/services/projects/participants_service.rb index dcbf348153d..c2d8f48f6e4 100644 --- a/app/services/projects/participants_service.rb +++ b/app/services/projects/participants_service.rb @@ -13,19 +13,21 @@ module Projects end def participants_in(type, id) - users = case type - when "Issue" - issue = project.issues.find_by_iid(id) - issue ? issue.participants(current_user) : [] - when "MergeRequest" - merge_request = project.merge_requests.find_by_iid(id) - merge_request ? merge_request.participants(current_user) : [] - when "Commit" - commit = project.repository.commit(id) - commit ? commit.participants(project, current_user) : [] - else - [] - end + users = + case type + when "Issue" + issue = project.issues.find_by_iid(id) + issue.participants(current_user) if issue + when "MergeRequest" + merge_request = project.merge_requests.find_by_iid(id) + merge_request.participants(current_user) if merge_request + when "Commit" + commit = project.repository.commit(id) + commit.participants(project, current_user) if commit + end + + return [] unless users + sorted(users) end