# frozen_string_literal: true class ActivityPub # Bloquea varias instancias de una sola vez class InstanceModerationJob < ApplicationJob self.priority = 50 # @param :site [Site] # @param :hostnames [Array] def perform(site:, hostnames:) # Crear las instancias que no existan todavĂ­a hostnames.each do |hostname| ActivityPub::Instance.find_or_create_by(hostname: hostname) end instances = ActivityPub::Instance.where(hostname: hostnames) Site.transaction do # Crea todas las moderaciones de instancia con un estado por # defecto si no existen instances.find_each do |instance| # Esto bloquea cada una individualmente en la Social Inbox, # idealmente son pocas instancias las que aparecen. site.instance_moderations.find_or_create_by(instance: instance) end site.instance_moderations.where(instance_id: instances.ids).block_all! end end end end