From 67516a07db44196cc4bb94bf94abe5c6f611cf07 Mon Sep 17 00:00:00 2001 From: multiple creatures Date: Mon, 13 Jan 2020 21:57:24 -0600 Subject: add new privacy option to auto-defederate after a given timespan + add options to defederate and/or delete past posts + add `defed_in`/`parent:defed_in`/`thread:defed_in` bangtags + ui indicator for posts marked for auto-defederation --- app/workers/mark_expired_statuses_worker.rb | 44 +++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 app/workers/mark_expired_statuses_worker.rb (limited to 'app/workers/mark_expired_statuses_worker.rb') diff --git a/app/workers/mark_expired_statuses_worker.rb b/app/workers/mark_expired_statuses_worker.rb new file mode 100644 index 000000000..9eac58357 --- /dev/null +++ b/app/workers/mark_expired_statuses_worker.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +class MarkExpiredStatusesWorker + include Sidekiq::Worker + + sidekiq_options queue: 'bulk' + + def perform(account_id, defederate = false, lifespan = false) + @account = Account.find(account_id) + return if @account&.user.nil? + @user = @account.user + + @roar_defederate = @user.roar_defederate.to_i + @roar_lifespan = @user.roar_lifespan.to_i + + defederate = false if @roar_defederate == 0 + lifespan = false if @roar_lifespan == 0 + + return unless defederate || lifespan + + offset = 30.minutes + + @account.statuses.find_each do |status| + modified = false + + if defederate && !status.local_only? && status.updated_at < @roar_defederate.days.ago + status.defederate_after = offset + modified = true + end + + if lifespan && status.updated_at < @roar_lifespan.days.ago + status.delete_after = offset + 30.minutes + modified = true + end + + if modified + Rails.cache.delete("statuses/#{status.id}") + offset += 1.second + end + end + rescue ActiveRecord::RecordNotFound + true + end +end -- cgit