Introduce instances admin page
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
31
lib/service/workers/refresh_instances.ex
Normal file
31
lib/service/workers/refresh_instances.ex
Normal file
@@ -0,0 +1,31 @@
|
||||
defmodule Mobilizon.Service.Workers.RefreshInstances do
|
||||
@moduledoc """
|
||||
Worker to refresh the instances materialized view and the relay actors
|
||||
"""
|
||||
|
||||
use Oban.Worker, unique: [period: :infinity, keys: [:event_uuid, :action]]
|
||||
|
||||
alias Mobilizon.Federation.ActivityPub.Actor, as: ActivityPubActor
|
||||
alias Mobilizon.Instances
|
||||
alias Mobilizon.Instances.Instance
|
||||
alias Oban.Job
|
||||
|
||||
@impl Oban.Worker
|
||||
@spec perform(Oban.Job.t()) :: :ok
|
||||
def perform(%Job{}) do
|
||||
Instances.refresh()
|
||||
|
||||
Instances.all_domains()
|
||||
|> Enum.each(&refresh_instance_actor/1)
|
||||
end
|
||||
|
||||
@spec refresh_instance_actor(Instance.t()) ::
|
||||
{:ok, Mobilizon.Actors.Actor.t()}
|
||||
| {:error,
|
||||
Mobilizon.Federation.ActivityPub.Actor.make_actor_errors()
|
||||
| Mobilizon.Federation.WebFinger.finger_errors()}
|
||||
|
||||
defp refresh_instance_actor(%Instance{domain: domain}) do
|
||||
ActivityPubActor.find_or_make_actor_from_nickname("relay@#{domain}")
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user