|
|
|
@ -15,6 +15,8 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|
|
|
|
# Only native types can be updated at the moment
|
|
|
|
|
return if !expected_type? || already_updated_more_recently?
|
|
|
|
|
|
|
|
|
|
last_edit_date = status.edited_at.presence || status.created_at
|
|
|
|
|
|
|
|
|
|
# Only allow processing one create/update per status at a time
|
|
|
|
|
RedisLock.acquire(lock_options) do |lock|
|
|
|
|
|
if lock.acquired?
|
|
|
|
@ -37,6 +39,8 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|
|
|
|
raise Mastodon::RaceConditionError
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
forward_activity! if significant_changes? && @status_parser.edited_at.present? && @status_parser.edited_at > last_edit_date
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
@ -263,4 +267,12 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
|
|
|
|
|
PollExpirationNotifyWorker.remove_from_scheduled(poll.id) if @previous_expires_at.present? && @previous_expires_at > poll.expires_at
|
|
|
|
|
PollExpirationNotifyWorker.perform_at(poll.expires_at + 5.minutes, poll.id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def forward_activity!
|
|
|
|
|
forwarder.forward! if forwarder.forwardable?
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def forwarder
|
|
|
|
|
@forwarder ||= ActivityPub::Forwarder.new(@account, @json, @status)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|