diff --git a/app/models/reviewable_ai_chat_message.rb b/app/models/reviewable_ai_chat_message.rb
index 52075f78..382d9bd5 100644
--- a/app/models/reviewable_ai_chat_message.rb
+++ b/app/models/reviewable_ai_chat_message.rb
@@ -34,7 +34,8 @@ class ReviewableAiChatMessage < Reviewable
def build_actions(actions, guardian, args)
return unless pending?
- return if chat_message.blank?
+
+ return build_action(actions, :ignore, icon: "external-link-alt") if chat_message.blank?
agree =
actions.add_bundle("#{id}-agree", icon: "thumbs-up", label: "reviewables.actions.agree.title")
diff --git a/app/serializers/reviewable_ai_chat_message_serializer.rb b/app/serializers/reviewable_ai_chat_message_serializer.rb
index 6cfd1bda..241f3aad 100644
--- a/app/serializers/reviewable_ai_chat_message_serializer.rb
+++ b/app/serializers/reviewable_ai_chat_message_serializer.rb
@@ -10,7 +10,7 @@ class ReviewableAiChatMessageSerializer < ReviewableSerializer
has_one :chat_channel, serializer: AiChatChannelSerializer, root: false, embed: :objects
def chat_channel
- object.chat_message.chat_channel
+ object.chat_message&.chat_channel
end
def target_id
diff --git a/assets/javascripts/discourse/components/reviewable-ai-chat-message.hbs b/assets/javascripts/discourse/components/reviewable-ai-chat-message.hbs
index 0f0f6003..c3108924 100644
--- a/assets/javascripts/discourse/components/reviewable-ai-chat-message.hbs
+++ b/assets/javascripts/discourse/components/reviewable-ai-chat-message.hbs
@@ -1,15 +1,17 @@
-
+{{#if this.chatChannel}}
+
+{{/if}}
diff --git a/assets/javascripts/discourse/components/reviewable-ai-chat-message.js b/assets/javascripts/discourse/components/reviewable-ai-chat-message.js
index 1e02cfa7..b87ec5d4 100644
--- a/assets/javascripts/discourse/components/reviewable-ai-chat-message.js
+++ b/assets/javascripts/discourse/components/reviewable-ai-chat-message.js
@@ -3,6 +3,9 @@ import ChatChannel from "discourse/plugins/chat/discourse/models/chat-channel";
export default class ReviewableAiChatMessage extends Component {
get chatChannel() {
+ if (!this.args.reviewable.chat_channel) {
+ return;
+ }
return ChatChannel.create(this.args.reviewable.chat_channel);
}
}
diff --git a/spec/system/toxicity/reviewable_ai_chat_message_spec.rb b/spec/system/toxicity/reviewable_ai_chat_message_spec.rb
index a572f54e..99c4ba15 100644
--- a/spec/system/toxicity/reviewable_ai_chat_message_spec.rb
+++ b/spec/system/toxicity/reviewable_ai_chat_message_spec.rb
@@ -23,4 +23,20 @@ RSpec.describe "Toxicity-flagged chat messages", type: :system, js: true do
expect(page).to have_selector(".reviewable-ai-chat-message .reviewable-actions")
end
+
+ context "when the message is hard deleted" do
+ before { chat_message.destroy! }
+
+ it "does not throw an error" do
+ visit("/review")
+
+ expect(page).to have_selector(".reviewable-ai-chat-message .reviewable-actions")
+ end
+
+ it "adds the option to ignore the flag" do
+ visit("/review")
+
+ expect(page).to have_selector(".reviewable-actions .chat-message-ignore")
+ end
+ end
end