summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlfredo Sumaran <alfredo@gitlab.com>2016-04-08 13:36:55 -0500
committerJacob Schatz <jacobschatz@Jacobs-MBP.fios-router.home>2016-04-16 07:21:28 -0400
commita96dc944289e01f7b41112343cf20ca2791860ca (patch)
tree4d129e2379dd14b690e4f46d589ae3b94f442bb5
parent1eeabdc6a5c5ad751891d725a0957a24282f7a9c (diff)
downloadgitlab-ce-a96dc944289e01f7b41112343cf20ca2791860ca.tar.gz
Memoize target
-rw-r--r--app/services/projects/participants_service.rb42
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