FIX: missing assignee icon in search (#230)

Change serializer to include icon path
This commit is contained in:
Krzysztof Kotlarek 2021-11-04 08:32:25 +11:00 committed by GitHub
parent fcd4532c76
commit a876821ab1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 25 additions and 5 deletions

View File

@ -248,12 +248,24 @@ after_initialize do
if allowed_access && results.posts.length > 0
topics = results.posts.map(&:topic)
assignments = Assignment.strict_loading.where(target: topics).includes(:assigned_to).index_by(&:topic_id)
assignments = Assignment.strict_loading.where(topic: topics).includes(:assigned_to).group_by(&:topic_id)
results.posts.each do |post|
assigned_to = assignments[post.topic.id]&.assigned_to
topic_assignments = assignments[post.topic.id]
direct_assignment = topic_assignments&.find { |assignment| assignment.target_type == "Topic" }
indirect_assignments = topic_assignments&.select { |assignment| assignment.target_type == "Post" }
if direct_assignment
assigned_to = direct_assignment.assigned_to
post.topic.preload_assigned_to(assigned_to)
end
if indirect_assignments.present?
indirect_assignment_map = indirect_assignments.reduce({}) do |acc, assignment|
acc[assignment.target_id] = assignment.assigned_to
acc
end
post.topic.preload_indirectly_assigned_to(indirect_assignment_map)
end
end
end
end
end
@ -519,7 +531,7 @@ after_initialize do
# SearchTopicListItem serializer
add_to_serializer(:search_topic_list_item, :assigned_to_user, false) do
object.assigned_to
DiscourseAssign::Helpers.build_assigned_to_user(object.assigned_to, object)
end
add_to_serializer(:search_topic_list_item, 'include_assigned_to_user?') do
@ -527,13 +539,21 @@ after_initialize do
end
add_to_serializer(:search_topic_list_item, :assigned_to_group, false) do
object.assigned_to
BasicGroupSerializer.new(object.assigned_to, scope: scope, root: false).as_json
end
add_to_serializer(:search_topic_list_item, 'include_assigned_to_group?') do
(SiteSetting.assigns_public || scope.can_assign?) && object.assigned_to&.is_a?(Group)
end
add_to_serializer(:search_topic_list_item, :indirectly_assigned_to) do
DiscourseAssign::Helpers.build_indirectly_assigned_to(object.indirectly_assigned_to, object)
end
add_to_serializer(:search_topic_list_item, :include_indirectly_assigned_to?) do
(SiteSetting.assigns_public || scope.can_assign?) && object.indirectly_assigned_to.present?
end
# TopicsBulkAction
TopicsBulkAction.register_operation("assign") do
if @user.can_assign?