diff --git a/app/models/notifications/private_message.rb b/app/models/notifications/private_message.rb index b97c40183b03a49d8fb6a2049d52e7c7549dcb8f..9c9d02eb78a3507f54038730c83f17e212c0bca1 100644 --- a/app/models/notifications/private_message.rb +++ b/app/models/notifications/private_message.rb @@ -8,22 +8,21 @@ module Notifications "notifications.private_message" end - def self.notify(object, recipient_user_ids) + def self.notify(object, _recipient_user_ids) case object when Conversation - object.messages.each do |message| - recipient_ids = recipient_user_ids - [message.author.owner_id] - User.where(id: recipient_ids).find_each {|recipient| notify_message(message, recipient) } - end + object.messages.each {|message| notify_message(message) } when Message - recipients = object.conversation.participants.select(&:local?) - [object.author] - recipients.each {|recipient| notify_message(object, recipient.owner) } + notify_message(object) end end - def self.notify_message(message, recipient) - message.increase_unread(recipient) - new(recipient: recipient).email_the_user(message, message.author) + def self.notify_message(message) + recipient_ids = message.conversation.participants.local.where.not(id: message.author_id).pluck(:owner_id) + User.where(id: recipient_ids).find_each do |recipient| + message.increase_unread(recipient) + new(recipient: recipient).email_the_user(message, message.author) + end end private_class_method :notify_message end diff --git a/lib/diaspora/federation/receive.rb b/lib/diaspora/federation/receive.rb index 467fae456765126fe6cfe00b29fe841c9d01976b..53916b0ae38d7fab6274c19f0593cec681210ca3 100644 --- a/lib/diaspora/federation/receive.rb +++ b/lib/diaspora/federation/receive.rb @@ -37,7 +37,7 @@ module Diaspora def self.conversation(entity) author = author_of(entity) - try_load_existing_guid(Conversation, entity.guid, author) do + ignore_existing_guid(Conversation, entity.guid, author) do Conversation.new( author: author, guid: entity.guid,