WIP: Figuring out messages in thread panel

This commit is contained in:
Martin Brennan 2023-02-13 12:51:39 +10:00
parent ff90a56f5b
commit f47ee8fd40
No known key found for this signature in database
GPG Key ID: A08063EEF3EA26A4
3 changed files with 22 additions and 1 deletions

View File

@ -4,5 +4,14 @@ class ChatThreadSerializer < ApplicationSerializer
has_one :original_message_user, serializer: BasicUserWithStatusSerializer, embed: :objects
has_one :original_message, serializer: ChatThreadOriginalMessageSerializer, embed: :objects
attributes :id, :title, :status
attributes :id, :title, :status, :messages
def messages
ActiveModel::ArraySerializer.new(
object.chat_messages.order(:created_at).last(50),
each_serializer: ChatMessageSerializer,
chat_channel: object.channel,
scope: scope,
)
end
end

View File

@ -32,5 +32,13 @@
</div>
</div>
<div class="chat-thread__messages">
{{#each this.thread.messages as |message|}}
<ChatMessage
@message={{message}}
@canInteractWithChat="true"
@chatChannel={{this.chat.activeChannel}}
@fullPage={{this.chatStateManager.isFullPageActive}}
/>
{{/each}}
</div>
</div>

View File

@ -1,5 +1,6 @@
import DiscourseRoute from "discourse/routes/discourse";
import { inject as service } from "@ember/service";
import ChatMessage from "discourse/plugins/chat/discourse/models/chat-message";
export default class ChatChannelThread extends DiscourseRoute {
@service router;
@ -17,5 +18,8 @@ export default class ChatChannelThread extends DiscourseRoute {
afterModel(model) {
this.chat.activeThread = model;
this.chatStateManager.openSidePanel();
this.chat.activeThread.messages = (
this.chat.activeThread.messages || []
).map((message) => ChatMessage.create(message));
}
}