mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-23 04:26:22 +00:00
feat: acciones en masa para actividades
This commit is contained in:
parent
071102fa3b
commit
522cef8c9a
3 changed files with 42 additions and 12 deletions
|
@ -38,6 +38,28 @@ class ActivityPub < ApplicationRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Permite todos los comentarios. No podemos hacer acciones en masa
|
||||||
|
# sobre comentarios en la Social Inbox, con lo que tenemos que
|
||||||
|
# comunicarnos individualmente.
|
||||||
|
def self.allow_all!
|
||||||
|
self.find_each do |activity_pub|
|
||||||
|
activity_pub.allow! if activity_pub.may_allow?
|
||||||
|
rescue Exception => e
|
||||||
|
notify_exception!(e, activity_pub)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Rechaza todos los comentarios. No podemos hacer acciones en masa
|
||||||
|
# sobre comentarios en la Social Inbox, con lo que tenemos que
|
||||||
|
# comunicarnos individualmente.
|
||||||
|
def self.reject_all!
|
||||||
|
self.find_each do |activity_pub|
|
||||||
|
activity_pub.reject! if activity_pub.may_reject?
|
||||||
|
rescue Exception => e
|
||||||
|
notify_exception!(e, activity_pub)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
aasm do
|
aasm do
|
||||||
# Todavía no hay una decisión sobre el objeto
|
# Todavía no hay una decisión sobre el objeto
|
||||||
state :paused, initial: true
|
state :paused, initial: true
|
||||||
|
@ -68,7 +90,7 @@ class ActivityPub < ApplicationRecord
|
||||||
transitions from: %i[paused], to: :approved
|
transitions from: %i[paused], to: :approved
|
||||||
|
|
||||||
before do
|
before do
|
||||||
raise unless site.social_inbox.inbox.accept(id: object.uri).ok?
|
allow_remotely!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -77,7 +99,7 @@ class ActivityPub < ApplicationRecord
|
||||||
transitions from: %i[paused approved], to: :rejected
|
transitions from: %i[paused approved], to: :rejected
|
||||||
|
|
||||||
before do
|
before do
|
||||||
raise unless site.social_inbox.inbox.reject(id: object.uri).ok?
|
reject_remotely!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -90,4 +112,12 @@ class ActivityPub < ApplicationRecord
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def reject_remotely!
|
||||||
|
raise unless site.social_inbox.inbox.reject(id: object.uri).ok?
|
||||||
|
end
|
||||||
|
|
||||||
|
def allow_remotely!
|
||||||
|
raise unless site.social_inbox.inbox.accept(id: object.uri).ok?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -50,11 +50,7 @@ class ActorModeration < ApplicationRecord
|
||||||
before do
|
before do
|
||||||
allow_remotely!
|
allow_remotely!
|
||||||
|
|
||||||
site.activity_pubs.paused.where(actor_id: self.actor_id).find_each do |activity_pub|
|
site.activity_pubs.paused.where(actor_id: self.actor_id).allow_all!
|
||||||
activity_pub.allow! if activity_pub.may_allow?
|
|
||||||
rescue Exception => e
|
|
||||||
ExceptionNotifier.notify_exception(e, data: { site: site.name, activity_pub: activity_pub_id })
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -66,11 +62,7 @@ class ActorModeration < ApplicationRecord
|
||||||
before do
|
before do
|
||||||
block_remotely!
|
block_remotely!
|
||||||
|
|
||||||
site.activity_pubs.paused.where(actor_id: self.actor_id).find_each do |activity_pub|
|
site.activity_pubs.paused.where(actor_id: self.actor_id).reject_all!
|
||||||
activity_pub.reject! if activity_pub.may_reject?
|
|
||||||
rescue Exception => e
|
|
||||||
ExceptionNotifier.notify_exception(e, data: { site: site.name, activity_pub: activity_pub_id })
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -27,5 +27,13 @@ module AasmEventsConcern
|
||||||
def self.states
|
def self.states
|
||||||
aasm.states.map(&:name) - self::IGNORED_STATES
|
aasm.states.map(&:name) - self::IGNORED_STATES
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Envía notificación de errores
|
||||||
|
#
|
||||||
|
# @param exception [Exception]
|
||||||
|
# @param record [ApplicationRecord]
|
||||||
|
def notify_exception!(exception, record)
|
||||||
|
ExceptionNotifier.notify_exception(exception, data: { site: site.name, record_type: record.class.name, record_id: record.id })
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue