|
|
|
@ -45,9 +45,9 @@ class BatchedRemoveStatusService < BaseService
|
|
|
|
|
|
|
|
|
|
# Cannot be batched
|
|
|
|
|
@status_id_cutoff = Mastodon::Snowflake.id_at(2.weeks.ago)
|
|
|
|
|
redis.pipelined do
|
|
|
|
|
redis.pipelined do |pipeline|
|
|
|
|
|
statuses.each do |status|
|
|
|
|
|
unpush_from_public_timelines(status)
|
|
|
|
|
unpush_from_public_timelines(status, pipeline)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
@ -70,22 +70,22 @@ class BatchedRemoveStatusService < BaseService
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def unpush_from_public_timelines(status)
|
|
|
|
|
def unpush_from_public_timelines(status, pipeline)
|
|
|
|
|
return unless status.public_visibility? && status.id > @status_id_cutoff
|
|
|
|
|
|
|
|
|
|
payload = Oj.dump(event: :delete, payload: status.id.to_s)
|
|
|
|
|
|
|
|
|
|
redis.publish('timeline:public', payload)
|
|
|
|
|
redis.publish(status.local? ? 'timeline:public:local' : 'timeline:public:remote', payload)
|
|
|
|
|
pipeline.publish('timeline:public', payload)
|
|
|
|
|
pipeline.publish(status.local? ? 'timeline:public:local' : 'timeline:public:remote', payload)
|
|
|
|
|
|
|
|
|
|
if status.media_attachments.any?
|
|
|
|
|
redis.publish('timeline:public:media', payload)
|
|
|
|
|
redis.publish(status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', payload)
|
|
|
|
|
pipeline.publish('timeline:public:media', payload)
|
|
|
|
|
pipeline.publish(status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', payload)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
status.tags.map { |tag| tag.name.mb_chars.downcase }.each do |hashtag|
|
|
|
|
|
redis.publish("timeline:hashtag:#{hashtag}", payload)
|
|
|
|
|
redis.publish("timeline:hashtag:#{hashtag}:local", payload) if status.local?
|
|
|
|
|
pipeline.publish("timeline:hashtag:#{hashtag}", payload)
|
|
|
|
|
pipeline.publish("timeline:hashtag:#{hashtag}:local", payload) if status.local?
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|