0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-08 17:53:55 +08:00
discourse/plugins/chat/app/serializers/chat/messages_serializer.rb
Loïc Guitaut 3fbb2954cb DEV: Refactor Chat::ListChannelMessages service a bit
- improve the contract a little
- use `model` where possible
- extract message existence logic to a dedicated policy, allowing easier
  testing.
- remove unused code
- refactor specs to follow current guidelines/best practices
2025-06-23 14:18:49 +02:00

41 lines
974 B
Ruby
Vendored

# frozen_string_literal: true
module Chat
class MessagesSerializer < ::ApplicationSerializer
attributes :messages, :tracking, :meta
delegate :metadata, to: :object, private: true
def initialize(object, opts)
super(object, opts)
@opts = opts
end
def messages
object.messages.map do |message|
::Chat::MessageSerializer.new(
message,
scope: scope,
root: false,
include_thread_preview: true,
include_thread_original_message: true,
thread_participants: object.thread_participants,
thread_memberships: object.thread_memberships,
**@opts,
)
end
end
def tracking
object.tracking || {}
end
def meta
{
target_message_id: metadata[:target_message]&.id,
can_load_more_future: metadata[:can_load_more_future],
can_load_more_past: metadata[:can_load_more_past],
}
end
end
end