diff options
author | Alfredo Sumaran <alfredo@gitlab.com> | 2016-04-08 13:36:55 -0500 |
---|---|---|
committer | Jacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home> | 2016-04-16 07:21:28 -0400 |
commit | a96dc944289e01f7b41112343cf20ca2791860ca (patch) | |
tree | 4d129e2379dd14b690e4f46d589ae3b94f442bb5 /app | |
parent | 1eeabdc6a5c5ad751891d725a0957a24282f7a9c (diff) | |
download | gitlab-ce-a96dc944289e01f7b41112343cf20ca2791860ca.tar.gz |
Memoize target
Diffstat (limited to 'app')
-rw-r--r-- | app/services/projects/participants_service.rb | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/app/services/projects/participants_service.rb b/app/services/projects/participants_service.rb index 11dc3542fa2..02c4eee3d02 100644 --- a/app/services/projects/participants_service.rb +++ b/app/services/projects/participants_service.rb @@ -1,42 +1,40 @@ module Projects class ParticipantsService < BaseService def execute(noteable_type, noteable_id) - @target = get_target(noteable_type, noteable_id) - participating = - if noteable_type && noteable_id - participants_in_target - else - [] - end + @noteable_type = noteable_type + @noteable_id = noteable_id project_members = sorted(project.team.members) - participants = target_owner + participating + all_members + groups + project_members + participants = target_owner + participants_in_target + all_members + groups + project_members participants.uniq end - def get_target(type, id) - case type - when "Issue" - project.issues.find_by_iid(id) - when "MergeRequest" - project.merge_requests.find_by_iid(id) - when "Commit" - project.commit(id) - end + def target + @target ||= + case @noteable_type + when "Issue" + project.issues.find_by_iid(@noteable_id) + when "MergeRequest" + project.merge_requests.find_by_iid(@noteable_id) + when "Commit" + project.commit(@noteable_id) + else + nil + end end def target_owner - return [] unless @target && @target.author.present? + return [] unless target && target.author.present? [{ - name: @target.author.name, - username: @target.author.username + name: target.author.name, + username: target.author.username }] end def participants_in_target - return [] unless @target + return [] unless target - users = @target.participants(current_user) + users = target.participants(current_user) sorted(users) end |