Make sure instance list is refreshed before notifying admin from new
instance follow Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
parent
83d518579b
commit
530539c631
|
@ -1,6 +1,6 @@
|
||||||
defmodule Mobilizon.Federation.ActivityPub.Types.Actors do
|
defmodule Mobilizon.Federation.ActivityPub.Types.Actors do
|
||||||
@moduledoc false
|
@moduledoc false
|
||||||
alias Mobilizon.Actors
|
alias Mobilizon.{Actors, Instances}
|
||||||
alias Mobilizon.Actors.{Actor, Follower, Member}
|
alias Mobilizon.Actors.{Actor, Follower, Member}
|
||||||
alias Mobilizon.Federation.ActivityPub.{Actions, Audience, Permission, Relay}
|
alias Mobilizon.Federation.ActivityPub.{Actions, Audience, Permission, Relay}
|
||||||
alias Mobilizon.Federation.ActivityPub.Types.Entity
|
alias Mobilizon.Federation.ActivityPub.Types.Entity
|
||||||
|
@ -204,7 +204,12 @@ defmodule Mobilizon.Federation.ActivityPub.Types.Actors do
|
||||||
def follow(%Actor{} = follower_actor, %Actor{type: type} = followed, _local, additional)
|
def follow(%Actor{} = follower_actor, %Actor{type: type} = followed, _local, additional)
|
||||||
when type != :Person do
|
when type != :Person do
|
||||||
case Mobilizon.Actors.follow(followed, follower_actor, additional["activity_id"], false) do
|
case Mobilizon.Actors.follow(followed, follower_actor, additional["activity_id"], false) do
|
||||||
{:ok, %Follower{} = follower} ->
|
{:ok, %Follower{actor: %Actor{type: actor_type}} = follower} ->
|
||||||
|
# We refresh the instance materialized view to make sure the instance page will be available
|
||||||
|
# when the admin clicks on the email link and access it
|
||||||
|
if actor_type == :Application do
|
||||||
|
Instances.refresh()
|
||||||
|
end
|
||||||
FollowMailer.send_notification_to_admins(follower)
|
FollowMailer.send_notification_to_admins(follower)
|
||||||
follower_as_data = Convertible.model_to_as(follower)
|
follower_as_data = Convertible.model_to_as(follower)
|
||||||
approve_if_manually_approves_followers(follower, follower_as_data)
|
approve_if_manually_approves_followers(follower, follower_as_data)
|
||||||
|
|
|
@ -464,6 +464,8 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
|
||||||
{:error, :unauthenticated}
|
{:error, :unauthenticated}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@spec get_instance(any, map(), Absinthe.Resolution.t()) ::
|
||||||
|
{:error, :unauthenticated | :unauthorized | :not_found} | {:ok, Mobilizon.Instances.Instance.t()}
|
||||||
def get_instance(_parent, %{domain: domain}, %{
|
def get_instance(_parent, %{domain: domain}, %{
|
||||||
context: %{current_user: %User{role: role}}
|
context: %{current_user: %User{role: role}}
|
||||||
})
|
})
|
||||||
|
@ -482,7 +484,10 @@ defmodule Mobilizon.GraphQL.Resolvers.Admin do
|
||||||
followed_status: follow_status(local_relay, remote_relay)
|
followed_status: follow_status(local_relay, remote_relay)
|
||||||
}
|
}
|
||||||
|
|
||||||
{:ok, Map.merge(Instances.instance(domain), result)}
|
case Instances.instance(domain) do
|
||||||
|
nil -> {:error, :not_found}
|
||||||
|
instance -> {:ok, Map.merge(instance, result)}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_instance(_parent, _args, %{context: %{current_user: %User{}}}) do
|
def get_instance(_parent, _args, %{context: %{current_user: %User{}}}) do
|
||||||
|
|
|
@ -67,7 +67,7 @@ defmodule Mobilizon.Instances do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@spec instance(String.t()) :: Instance.t()
|
@spec instance(String.t()) :: Instance.t() | nil
|
||||||
def instance(domain) do
|
def instance(domain) do
|
||||||
Instance
|
Instance
|
||||||
|> where(domain: ^domain)
|
|> where(domain: ^domain)
|
||||||
|
|
Loading…
Reference in a new issue