From e6c04e2dc20ae5e24b141f84717d12eb267539a9 Mon Sep 17 00:00:00 2001 From: Andrei Prigorshnev Date: Tue, 14 Mar 2023 21:45:05 +0400 Subject: [PATCH] FIX: do not send emails when channel-wide mentions are disabled in a channel (#20677) This regressed with the commit fa543cd. Starting from that commit, we create mention records even if a user shouldn't be notified. So when sending emails, we should be making sure if a notification was actually created for a mention. This is essentially the whole fix that we need here. Tests will be provided in a following PR. --- plugins/chat/lib/extensions/user_notifications_extension.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/chat/lib/extensions/user_notifications_extension.rb b/plugins/chat/lib/extensions/user_notifications_extension.rb index b64004c3a3b..93d3039d705 100644 --- a/plugins/chat/lib/extensions/user_notifications_extension.rb +++ b/plugins/chat/lib/extensions/user_notifications_extension.rb @@ -10,7 +10,9 @@ module Chat::UserNotificationsExtension .joins(:user, :chat_channel) .where.not(user: user) .where("chat_messages.created_at > ?", 1.week.ago) - .joins("LEFT OUTER JOIN chat_mentions cm ON cm.chat_message_id = chat_messages.id") + .joins( + "LEFT OUTER JOIN chat_mentions cm ON cm.chat_message_id = chat_messages.id AND cm.notification_id IS NOT NULL", + ) .joins( "INNER JOIN user_chat_channel_memberships uccm ON uccm.chat_channel_id = chat_channels.id", )