Module: PostStreamSerializerMixin
- Included in:
- TopicViewPostsSerializer, TopicViewSerializer
- Defined in:
- app/serializers/post_stream_serializer_mixin.rb
Class Method Summary collapse
Instance Method Summary collapse
- #badges_to_include ⇒ Object
- #include_gaps? ⇒ Boolean
- #include_stream? ⇒ Boolean
- #include_timeline_lookup? ⇒ Boolean
- #include_user_badges? ⇒ Boolean
- #post_stream ⇒ Object
- #posts ⇒ Object
- #theme_modifier_helper ⇒ Object
- #timeline_lookup ⇒ Object
- #user_badges ⇒ Object
Class Method Details
.included(klass) ⇒ Object
4 5 6 7 8 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 4 def self.included(klass) klass.attributes :post_stream klass.attributes :timeline_lookup klass.attributes :user_badges end |
Instance Method Details
#badges_to_include ⇒ Object
26 27 28 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 26 def badges_to_include @badges_to_include ||= theme_modifier_helper.serialize_post_user_badges end |
#include_gaps? ⇒ Boolean
14 15 16 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 14 def include_gaps? true end |
#include_stream? ⇒ Boolean
10 11 12 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 10 def include_stream? true end |
#include_timeline_lookup? ⇒ Boolean
49 50 51 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 49 def include_timeline_lookup? !object.is_mega_topic? end |
#include_user_badges? ⇒ Boolean
18 19 20 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 18 def include_user_badges? badges_to_include.present? end |
#post_stream ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 30 def post_stream result = { posts: posts } if include_stream? if !object.is_mega_topic? result[:stream] = object.filtered_post_ids else result[:isMegaTopic] = true result[:lastId] = object.last_post_id end end if include_gaps? && object.gaps.present? result[:gaps] = GapSerializer.new(object.gaps, root: false) end result end |
#posts ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 57 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 |
#theme_modifier_helper ⇒ Object
72 73 74 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 72 def theme_modifier_helper @theme_modifier_helper ||= ThemeModifierHelper.new(request: scope.request) end |
#timeline_lookup ⇒ Object
53 54 55 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 53 def timeline_lookup TimelineLookup.build(object.filtered_post_stream) end |
#user_badges ⇒ Object
22 23 24 |
# File 'app/serializers/post_stream_serializer_mixin.rb', line 22 def user_badges object.user_badges(badges_to_include) end |