diff --git a/app/controllers/api/v1/webhooks/social_inbox_controller.rb b/app/controllers/api/v1/webhooks/social_inbox_controller.rb index 3341b33d..76c7ec40 100644 --- a/app/controllers/api/v1/webhooks/social_inbox_controller.rb +++ b/app/controllers/api/v1/webhooks/social_inbox_controller.rb @@ -35,8 +35,12 @@ module Api end # Cuando aprobamos una actividad, recibimos la confirmación y - # cambiamos el estado + # cambiamos el estado. def onapproved + ActivityPub.transaction do + activity_pub.approve! if activity_pub.waiting? + end + head :accepted end diff --git a/app/models/activity_pub.rb b/app/models/activity_pub.rb index 2a127433..71d67722 100644 --- a/app/models/activity_pub.rb +++ b/app/models/activity_pub.rb @@ -21,6 +21,8 @@ class ActivityPub < ApplicationRecord aasm do # Todavía no hay una decisión sobre el objeto state :paused, initial: true + # Estamos esperando respuesta desde la Social Inbox + state :waiting # Le usuarie aprobó el objeto state :approved # Le usuarie rechazó el objeto @@ -44,7 +46,12 @@ class ActivityPub < ApplicationRecord # Si un objeto previamente aprobado fue actualizado, volvemos a # pausarlo. event :pause do - transitions from: :approved, to: :paused + transitions from: %i[waiting approved], to: :paused + end + + # La actividad se aprueba + event :approve do + transitions from: :waiting, to: :approved end end end