discourse/app/serializers/topic_tracking_state_item_serializer.rb
Sam 49f0cc16ba
PERF: optimise serialization for topic tracking state (#20860)
This corrects two issues:

1. We were double serializing topic tracking state (as_json calls were not cached)
2. We were inefficiently serializing items by instantiating extra objects
2023-03-28 18:09:22 +11:00

36 lines
798 B
Ruby

# frozen_string_literal: true
class TopicTrackingStateItemSerializer < ApplicationSerializer
attributes :topic_id,
:highest_post_number,
:last_read_post_number,
:created_at,
:category_id,
:is_category_topic,
:notification_level,
:created_in_new_period,
:treat_as_new_topic_start_date,
:tags
def created_in_new_period
return true if !scope
object.created_at >= treat_as_new_topic_start_date
end
def include_tags?
object.respond_to?(:tags)
end
def is_category_topic
object.topic_id == object.category_topic_id
end
def include_is_category_topic?
object.respond_to?(:category_topic_id)
end
def object=(value)
@object = value
end
end