Selaa lähdekoodia

Fix casuality of processing remote mentions such that notifications

about them would be processed only after the entire status is processed
master
Eugen Rochko 7 vuotta sitten
vanhempi
commit
a5daa806f2
2 muutettua tiedostoa jossa 16 lisäystä ja 6 poistoa
  1. +15
    -5
      app/services/process_feed_service.rb
  2. +1
    -1
      app/services/process_mentions_service.rb

+ 15
- 5
app/services/process_feed_service.rb Näytä tiedosto

@@ -61,12 +61,25 @@ class ProcessFeedService < BaseService

status.save!

NotifyService.new.call(status.reblog.account, status) if status.reblog? && status.reblog.account.local?
notify_about_mentions!(status) unless status.reblog?
notify_about_reblog!(status) if status.reblog? && status.reblog.account.local?
Rails.logger.debug "Queuing remote status #{status.id} (#{id}) for distribution"
DistributionWorker.perform_async(status.id)
status
end

def notify_about_mentions!(status)
status.mentions.includes(:account).each do |mention|
mentioned_account = mention.account
next unless mentioned_account.local?
NotifyService.new.call(mentioned_account, mention)
end
end

def notify_about_reblog!(status)
NotifyService.new.call(status.reblog.account, status)
end

def delete_status
Rails.logger.debug "Deleting remote status #{id}"
status = Status.find_by(uri: id)
@@ -159,10 +172,7 @@ class ProcessFeedService < BaseService

next if mentioned_account.nil? || processed_account_ids.include?(mentioned_account.id)

mention = mentioned_account.mentions.where(status: parent).first_or_create(status: parent)

# Notify local user
NotifyService.new.call(mentioned_account, mention) if mentioned_account.local?
mentioned_account.mentions.where(status: parent).first_or_create(status: parent)

# So we can skip duplicate mentions
processed_account_ids << mentioned_account.id


+ 1
- 1
app/services/process_mentions_service.rb Näytä tiedosto

@@ -27,7 +27,7 @@ class ProcessMentionsService < BaseService
mentioned_account.mentions.where(status: status).first_or_create(status: status)
end

status.mentions.each do |mention|
status.mentions.includes(:account).each do |mention|
mentioned_account = mention.account

if mentioned_account.local?


Ladataan…
Peruuta
Tallenna