5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-28 20:36:22 +00:00
panel/app/models/activity_pub/actor.rb
f 0ed702992b
fix: prevenir objetos multiplicados!
parece que la forma en que estabamos creando indices unicos ya no
funciona (??) asi que a veces estabamos creando objetos duplicados en
threads. de paso actorfetchjob ya no es necesario.

closes #15621

closes #15622

closes #15623

closes #15729

closes #15730

closes #15731
2024-03-19 12:39:41 -03:00

43 lines
1 KiB
Ruby

# frozen_string_literal: true
# = Actor =
#
# Actor es la entidad que realiza acciones en ActivityPub
#
# @todo Obtener el perfil dinámicamente
class ActivityPub
class Actor < ApplicationRecord
include ActivityPub::Concerns::JsonLdConcern
belongs_to :instance
has_many :actor_moderation
has_many :activity_pubs, as: :object
has_many :activities
has_many :remote_flags
# Les actores son únicxs a toda la base de datos
validates :uri, presence: true, url: true, uniqueness: true
before_save :mentionize!
# Obtiene el nombre de la Actor como mención, solo si obtuvimos el
# contenido de antemano.
#
# @return [String, nil]
def mentionize!
return if mention.present?
return if content['preferredUsername'].blank?
return if instance.blank?
self.mention ||= "@#{content['preferredUsername']}@#{instance.hostname}"
end
def object
@object ||= ActivityPub::Object.lock.find_or_create_by(uri: uri)
end
def content
object.content
end
end
end