discourse/app/serializers/topic_list_serializer.rb
Bianca Nenciu c95ffb98ef
DEV: Serialize categories in topic lists (#23597)
At this moment, this feature is under a site setting named
lazy_load_categories.

In the future, categories will no longer be preloaded through site data.
This commit add information about categories in topic list and ensures
that data is used to display topic list items.

Parent categories are serialized too because they are necessary to
render {{category-link}}.
2023-10-17 19:06:01 +03:00

45 lines
1.0 KiB
Ruby

# frozen_string_literal: true
class TopicListSerializer < ApplicationSerializer
attributes :can_create_topic,
:more_topics_url,
:for_period,
:per_page,
:top_tags,
:tags,
:shared_drafts
has_many :topics, serializer: TopicListItemSerializer, embed: :objects
has_many :shared_drafts, serializer: TopicListItemSerializer, embed: :objects
has_many :tags, serializer: TagSerializer, embed: :objects
has_many :categories, serializer: TopicCategorySerializer, embed: :objects
def can_create_topic
scope.can_create?(Topic)
end
def include_shared_drafts?
object.shared_drafts.present?
end
def include_for_period?
for_period.present?
end
def include_more_topics_url?
object.more_topics_url.present? && (object.topics.size == object.per_page)
end
def include_top_tags?
Tag.include_tags?
end
def include_tags?
SiteSetting.tagging_enabled && object.tags.present?
end
def include_categories?
SiteSetting.lazy_load_categories
end
end