-
-
Notifications
You must be signed in to change notification settings - Fork 159
Expand file tree
/
Copy pathexercise_makers_button.rb
More file actions
39 lines (34 loc) · 1020 Bytes
/
exercise_makers_button.rb
File metadata and controls
39 lines (34 loc) · 1020 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
module ReactComponents
module Track
class ExerciseMakersButton < ReactComponent
initialize_with :exercise
def to_s
return if num_authors.zero? && num_contributors.zero?
super("track-exercise-makers-button", {
avatar_urls:,
num_authors:,
num_contributors:,
links: {
makers: Exercism::Routes.api_track_exercise_makers_url(exercise.track, exercise)
}
})
end
def avatar_urls
target = 3
urls = exercise.authors.order("RAND()").limit(3).select(:id, :version).to_a.map(&:avatar_url)
if urls.size < 3 && num_contributors.positive?
urls += exercise.contributors.order("RAND()").limit(target - urls.size).select(:id, :version).to_a.map(&:avatar_url)
end
urls.compact
end
memoize
def num_authors
exercise.authors.count
end
memoize
def num_contributors
exercise.contributors.count
end
end
end
end