DEV: DiscourseEvents for chat messages (#18914)

This commit is contained in:
Rafael dos Santos Silva
2022-11-07 15:06:10 -03:00
committed by GitHub
parent 782f43cc55
commit 3174e8e60f
4 changed files with 25 additions and 0 deletions

View File

@ -52,6 +52,7 @@ class Chat::ChatMessageCreator
chat_message: @chat_message, chat_message: @chat_message,
timestamp: @chat_message.created_at, timestamp: @chat_message.created_at,
) )
DiscourseEvent.trigger(:chat_message_created, @chat_message, @chat_channel, @user)
rescue => error rescue => error
@error = error @error = error
end end

View File

@ -36,6 +36,7 @@ class Chat::ChatMessageUpdater
ChatPublisher.publish_edit!(@chat_channel, @chat_message) ChatPublisher.publish_edit!(@chat_channel, @chat_message)
Jobs.enqueue(:process_chat_message, { chat_message_id: @chat_message.id }) Jobs.enqueue(:process_chat_message, { chat_message_id: @chat_message.id })
Chat::ChatNotifier.notify_edit(chat_message: @chat_message, timestamp: revision.created_at) Chat::ChatNotifier.notify_edit(chat_message: @chat_message, timestamp: revision.created_at)
DiscourseEvent.trigger(:chat_message_edited, @chat_message, @chat_channel, @user)
rescue => error rescue => error
@error = error @error = error
end end

View File

@ -105,6 +105,17 @@ describe Chat::ChatMessageCreator do
expect(message.last_editor_id).to eq(user1.id) expect(message.last_editor_id).to eq(user1.id)
end end
it "publishes a DiscourseEvent for new messages" do
events = DiscourseEvent.track_events {
Chat::ChatMessageCreator.create(
chat_channel: public_chat_channel,
user: user1,
content: "this is a message",
)
}
expect(events.map { _1[:event_name] }).to include(:chat_message_created)
end
it "creates mention notifications for public chat" do it "creates mention notifications for public chat" do
expect { expect {
Chat::ChatMessageCreator.create( Chat::ChatMessageCreator.create(

View File

@ -83,6 +83,18 @@ describe Chat::ChatMessageUpdater do
expect(chat_message.reload.message).to eq(new_message) expect(chat_message.reload.message).to eq(new_message)
end end
it "publishes a DiscourseEvent for updated messages" do
chat_message = create_chat_message(user1, "This will be changed", public_chat_channel)
events = DiscourseEvent.track_events {
Chat::ChatMessageUpdater.update(
guardian: guardian,
chat_message: chat_message,
new_content: "Change to this!",
)
}
expect(events.map { _1[:event_name] }).to include(:chat_message_edited)
end
it "creates mention notifications for unmentioned users" do it "creates mention notifications for unmentioned users" do
chat_message = create_chat_message(user1, "This will be changed", public_chat_channel) chat_message = create_chat_message(user1, "This will be changed", public_chat_channel)
expect { expect {