5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-22 23:56:22 +00:00
panel/app/controllers/actor_moderations_controller.rb

77 lines
2.2 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
# Gestiona la cola de moderación de actores
class ActorModerationsController < ApplicationController
2024-03-04 17:47:20 +00:00
include ModerationConcern
2024-03-01 18:51:54 +00:00
ActorModeration.events.each do |actor_event|
define_method(actor_event) do
authorize actor_moderation
2024-03-01 18:51:54 +00:00
# Crea una RemoteFlag si se envían los parámetros adecuados
2024-03-04 20:14:46 +00:00
actor_moderation.update(actor_moderation_params(actor_moderation)) if actor_event == :report
2024-03-01 18:51:54 +00:00
actor_moderation.public_send(:"#{actor_event}!") if actor_moderation.public_send(:"may_#{actor_event}?")
2024-03-04 17:47:20 +00:00
redirect_to_moderation_queue!
end
end
# Ver el perfil remoto
def show
@remote_profile = actor_moderation.actor.content
end
def action_on_several
actor_moderations = site.actor_moderations.where(id: params[:actor_moderation])
authorize actor_moderations
action = params[:actor_moderation_action].to_sym
method = :"#{action}!"
may = :"may_#{action}?"
2024-03-04 17:47:20 +00:00
redirect_to_moderation_queue!
return unless ActorModeration.events.include? action
ActorModeration.transaction do
actor_moderations.find_each do |actor_moderation|
2024-03-04 20:14:46 +00:00
next unless actor_moderation.public_send(may)
actor_moderation.update(actor_moderation_params(actor_moderation)) if action == :report
actor_moderation.public_send(method)
end
end
end
private
def actor_moderation
@actor_moderation ||= site.actor_moderations.find(params[:actor_moderation_id] || params[:id])
end
2024-03-01 18:51:54 +00:00
2024-03-04 20:14:46 +00:00
# @return [String]
def panel_actor_mention
@panel_actor_mention ||= ENV.fetch('PANEL_ACTOR_MENTION', '@sutty@sutty.nl')
end
# @return [Hash]
def actor_moderation_params(actor_moderation)
{ remote_flag_attributes: { id: actor_moderation.remote_flag_id, message: '' } }.tap do |p|
2024-03-01 18:51:54 +00:00
p[:remote_flag_attributes][:site_id] = actor_moderation.site_id
p[:remote_flag_attributes][:actor_id] = actor_moderation.actor_id
2024-03-04 20:14:46 +00:00
I18n.available_locales.each do |locale|
p[:remote_flag_attributes][:message].tap do |m|
m += I18n.t(locale)
m += ': '
m += I18n.t('actor_moderations.report_message', locale: locale, panel_actor_mention: panel_actor_mention)
m += '\n\n'
end
end
2024-03-01 18:51:54 +00:00
end
end
end