Class: ActivityPub::LikeActivityHandler

Inherits:
Object
  • Object
show all
Defined in:
app/services/activity_pub/like_activity_handler.rb

Class Method Summary collapse

Class Method Details

.handle_like_activity(activity_hash_or_id) ⇒ Object

Raises:

  • (ActiveRecord::RecordNotFound)


2
3
4
5
6
7
8
9
10
11
12
13
14
# File 'app/services/activity_pub/like_activity_handler.rb', line 2

def self.handle_like_activity(activity_hash_or_id)
  activity = Fediverse::Request.dereference(activity_hash_or_id)
  actor = Federails::Actor.find_or_create_by_object activity["actor"]
  object = Fediverse::Request.dereference(activity["object"])
  entity = begin
    Federails::Actor.find_by_federation_url(object["id"])&.entity # rubocop:disable Rails/DynamicFindBy
  rescue ActiveRecord::RecordNotFound
    Federails::Utils::Object.find_or_create!(object)
  end
  raise ActiveRecord::RecordNotFound unless entity
  Federails::Activity.create! actor: actor, action: "Like", entity: entity
  entity.is_a?(Comment) ? entity.commentable.update_like_count! : entity.update_like_count!
end