diff --git a/Gemfile b/Gemfile index 1dd65008c..58e708509 100644 --- a/Gemfile +++ b/Gemfile @@ -148,7 +148,7 @@ gem "better_content_security_policy", "~> 0.1.4" gem "devise_zxcvbn", "~> 6.0" gem "ransack", "~> 4.2" -gem "federails", git: "https://gitlab.com/experimentslabs/federails", branch: "fix-webfinger-type-match" +gem "federails", git: "https://gitlab.com/experimentslabs/federails", branch: "interim-object-addressing" gem "federails-moderation", "~> 0.2" gem "caber" diff --git a/Gemfile.lock b/Gemfile.lock index 893a978ed..d2085a35d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,8 +9,8 @@ GIT GIT remote: https://gitlab.com/experimentslabs/federails - revision: a7cb37c0d24745f56ed7ccc13a7037fe6652d301 - branch: fix-webfinger-type-match + revision: e1f219e4892c3b856b654b3a798607835fec8d2c + branch: interim-object-addressing specs: federails (0.5.0) faraday diff --git a/app/models/concerns/followable.rb b/app/models/concerns/followable.rb index 3ca16e110..d0871ff24 100644 --- a/app/models/concerns/followable.rb +++ b/app/models/concerns/followable.rb @@ -20,21 +20,29 @@ def followed_by?(follower) federails_actor.followers.include? follower.federails_actor end + def owning_actor + user = permitted_users.with_permission("own").first || SiteSettings.default_user + user&.federails_actor + end + private + def recently_posted? + Federails::Activity.exists?(entity: federails_actor, created_at: TIMEOUT.minutes.ago..) + end + def followable_post_creation_activity followable_post_activity("Create") end def followable_post_update_activity - followable_post_activity("Update") unless Federails::Activity.exists?(entity: federails_actor, created_at: TIMEOUT.minutes.ago..) + followable_post_activity("Update") unless recently_posted? end def followable_post_activity(action) - user = permitted_users.with_permission("own").first || SiteSettings.default_user - return if user.nil? + return unless owning_actor Federails::Activity.create!( - actor: user.federails_actor, + actor: owning_actor, action: action, entity: federails_actor, created_at: updated_at