From 0cd9cec0a4ec388f138a3edb81188925e2aa8f1f Mon Sep 17 00:00:00 2001 From: Massedil Date: Tue, 4 Mar 2025 16:12:32 +0100 Subject: [PATCH] Call refresh_instance_actor when an external instance asks to follow us Fixes #1638 --- lib/federation/activity_pub/transmogrifier.ex | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/federation/activity_pub/transmogrifier.ex b/lib/federation/activity_pub/transmogrifier.ex index 108c257e2..99c425365 100644 --- a/lib/federation/activity_pub/transmogrifier.ex +++ b/lib/federation/activity_pub/transmogrifier.ex @@ -23,6 +23,7 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do alias Mobilizon.Federation.ActivityStream.{Converter, Convertible} alias Mobilizon.Service.ErrorReporting.Sentry alias Mobilizon.Service.Workers.Background + alias Mobilizon.Service.Workers.RefreshInstances alias Mobilizon.Tombstone alias Mobilizon.Web.Email.Participation alias Mobilizon.Web.Endpoint @@ -218,6 +219,14 @@ defmodule Mobilizon.Federation.ActivityPub.Transmogrifier do {:ok, %Actor{} = follower} <- ActivityPubActor.get_or_fetch_actor_by_url(follower), {:ok, activity, object} <- Actions.Follow.follow(follower, followed, id, false) do + # We need to refresh the instance_actors table to directly allow the instance admin + # to accept or refuse the follow request and to follow the instance in return. + # + # If this refresh is missing, we need to wait the RefreshInstances oban job + # executed once a day. + # + # https://framagit.org/framasoft/mobilizon/-/issues/1638 + RefreshInstances.refresh_instance_actor(follower.domain) {:ok, activity, object} else {:error, :person_no_follow} ->