mirror of
https://github.com/discourse/discourse.git
synced 2025-01-08 20:13:48 +08:00
67c0498f64
This PR is introducing glimmer usage in the chat-live-pane, for components but also for models. RestModel usage has been dropped in favor of native classes. Other changes/additions in this PR: - sticky dates, scrolling will now keep the date separator of the current section at the top of the screen - better unread management, marking a channel as unread will correctly mark the correct message and not mark the whole channel as read. Tracking state will also now correctly return unread count and unread mentions. - adds an animation on bottom arrow - better scrolling behavior, we should now always correctly keep the scroll position while loading more - reactions are now more reactive, and will update their tooltip without needed to close/reopen it - skeleton has been improved with placeholder images and reactions - when making a reaction on the desktop message actions, the menu won't move anymore - simplify logic and stop maintaining a list of unloaded messages
35 lines
1.2 KiB
Ruby
35 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class ChatViewSerializer < ApplicationSerializer
|
|
attributes :meta, :chat_messages
|
|
|
|
def chat_messages
|
|
ActiveModel::ArraySerializer.new(
|
|
object.chat_messages,
|
|
each_serializer: ChatMessageSerializer,
|
|
reviewable_ids: object.reviewable_ids,
|
|
user_flag_statuses: object.user_flag_statuses,
|
|
chat_channel: object.chat_channel,
|
|
scope: scope,
|
|
)
|
|
end
|
|
|
|
def meta
|
|
meta_hash = {
|
|
channel_id: object.chat_channel.id,
|
|
can_flag: scope.can_flag_in_chat_channel?(object.chat_channel),
|
|
channel_status: object.chat_channel.status,
|
|
user_silenced: !scope.can_create_chat_message?,
|
|
can_moderate: scope.can_moderate_chat?(object.chat_channel.chatable),
|
|
can_delete_self: scope.can_delete_own_chats?(object.chat_channel.chatable),
|
|
can_delete_others: scope.can_delete_other_chats?(object.chat_channel.chatable),
|
|
channel_message_bus_last_id: MessageBus.last_id("/chat/#{object.chat_channel.id}"),
|
|
}
|
|
meta_hash[:can_load_more_past] = object.can_load_more_past unless object.can_load_more_past.nil?
|
|
meta_hash[
|
|
:can_load_more_future
|
|
] = object.can_load_more_future unless object.can_load_more_future.nil?
|
|
meta_hash
|
|
end
|
|
end
|