You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
879 B

  1. # frozen_string_literal: true
  2. # Obsolete but kept around to make sure existing jobs do not fail after upgrade.
  3. # Should be removed in a subsequent release.
  4. class ActivityPub::ReplyDistributionWorker
  5. include Sidekiq::Worker
  6. include Payloadable
  7. sidekiq_options queue: 'push'
  8. def perform(status_id)
  9. @status = Status.find(status_id)
  10. @account = @status.thread&.account
  11. return unless @account.present? && @status.distributable?
  12. ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
  13. [payload, @status.account_id, inbox_url]
  14. end
  15. rescue ActiveRecord::RecordNotFound
  16. true
  17. end
  18. private
  19. def inboxes
  20. @inboxes ||= @account.followers.inboxes
  21. end
  22. def payload
  23. @payload ||= Oj.dump(serialize_payload(ActivityPub::ActivityPresenter.from_status(@status), ActivityPub::ActivitySerializer, signer: @status.account))
  24. end
  25. end