mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 09:42:07 +08:00
41 lines
929 B
Ruby
41 lines
929 B
Ruby
require_dependency 'gap_serializer'
|
|
require_dependency 'post_serializer'
|
|
require_dependency 'timeline_lookup'
|
|
|
|
module PostStreamSerializerMixin
|
|
def self.included(klass)
|
|
klass.attributes :post_stream
|
|
klass.attributes :timeline_lookup
|
|
end
|
|
|
|
def include_stream?
|
|
true
|
|
end
|
|
|
|
def post_stream
|
|
result = { posts: posts }
|
|
result[:stream] = object.filtered_post_ids if include_stream?
|
|
result[:gaps] = GapSerializer.new(object.gaps, root: false) if object.gaps.present?
|
|
result
|
|
end
|
|
|
|
def timeline_lookup
|
|
TimelineLookup.build(object.filtered_post_stream)
|
|
end
|
|
|
|
def posts
|
|
@posts ||= begin
|
|
(object.posts || []).map do |post|
|
|
post.topic = object.topic
|
|
|
|
serializer = PostSerializer.new(post, scope: scope, root: false)
|
|
serializer.add_raw = true if @options[:include_raw]
|
|
serializer.topic_view = object
|
|
|
|
serializer.as_json
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|