# frozen_string_literal: true class ActivityPub class RemoteFlag < ApplicationRecord include AASM include AasmEventsConcern aasm do state :waiting, initial: true state :queued state :sent event :queue do transitions from: :waiting, to: :queued end event :report do transitions from: :queued, to: :sent end event :resend do transitions from: :sent, to: :waiting end end belongs_to :actor belongs_to :site has_one :actor_moderation has_many :activity_pubs # XXX: source_type es obligatorio para el `through` has_many :objects, through: :activity_pubs, source_type: 'ActivityPub::Object::Note' # Genera la actividad a enviar def content { '@context' => 'https://www.w3.org/ns/activitystreams', 'id' => Rails.application.routes.url_helpers.v1_activity_pub_remote_flag_url(self, host: site.social_inbox_hostname), 'type' => 'Flag', 'actor' => ENV.fetch('PANEL_ACTOR_ID') { "https://#{ENV['SUTTY']}/about.jsonld" }, 'content' => message.to_s, 'object' => [ actor.uri ] + objects.pluck(:uri) } end end end