@@ -7,6 +7,7 @@ def index
77 base_query = apply_filters ( Topic . includes ( :creator ) )
88
99 apply_cursor_pagination ( base_query )
10+ preload_commitfest_summaries
1011 @new_topics_count = 0
1112 @page_cache_key = topics_page_cache_key
1213
@@ -42,6 +43,7 @@ def show
4243
4344 build_participants_sidebar_data ( messages_scope )
4445 build_thread_outline ( messages_scope )
46+ load_commitfest_sidebar
4547 load_notes if user_signed_in?
4648 end
4749
@@ -101,6 +103,7 @@ def search
101103 @new_topics_count = 0
102104 end
103105
106+ preload_commitfest_summaries
104107 preload_participation_flags if user_signed_in?
105108
106109 respond_to do |format |
@@ -157,6 +160,7 @@ def user_state_frame
157160 preload_topic_states
158161 preload_note_counts
159162 preload_participation_flags
163+ preload_commitfest_summaries
160164
161165 respond_to do |format |
162166 format . turbo_stream
@@ -700,6 +704,37 @@ def load_cached_search_results
700704 @new_topics_count = 0
701705 end
702706
707+ def preload_commitfest_summaries
708+ topic_ids = @topics . map ( &:id )
709+ @commitfest_summaries = Topic . commitfest_summaries ( topic_ids )
710+ end
711+
712+ def load_commitfest_sidebar
713+ entries = CommitfestPatchCommitfest
714+ . joins ( commitfest_patch : :commitfest_patch_topics )
715+ . includes ( :commitfest , commitfest_patch : :commitfest_tags )
716+ . where ( commitfest_patch_topics : { topic_id : @topic . id } )
717+ . order ( "commitfests.end_date DESC, commitfests.start_date DESC" )
718+
719+ @commitfest_sidebar_entries = entries . map do |entry |
720+ patch = entry . commitfest_patch
721+ {
722+ commitfest_name : entry . commitfest . name ,
723+ commitfest_external_id : entry . commitfest . external_id ,
724+ patch_external_id : patch . external_id ,
725+ patch_title : patch . title ,
726+ status : entry . status ,
727+ tags : patch . commitfest_tags . map ( &:name )
728+ }
729+ end
730+
731+ reviewers = entries . flat_map { |entry | Topic . parse_csv_list ( entry . commitfest_patch . reviewers ) }
732+ @commitfest_reviewers = reviewers . uniq
733+
734+ committers = entries . map { |entry | entry . commitfest_patch . committer . to_s . strip } . reject ( &:blank? ) . uniq
735+ @commitfest_committers = committers
736+ end
737+
703738 def slice_cached_entries ( entries , cursor_param )
704739 return { entries : entries . first ( 25 ) } unless cursor_param . present?
705740
0 commit comments