# 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?
raise Mastodon::RaceConditionError
end
end
+
+ forward_activity! if significant_changes? && @status_parser.edited_at.present? && @status_parser.edited_at > last_edit_date
end
private
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