diff --git a/lib/federation/activity_pub/actor.ex b/lib/federation/activity_pub/actor.ex index 30f141a9a..42bd31d8b 100644 --- a/lib/federation/activity_pub/actor.ex +++ b/lib/federation/activity_pub/actor.ex @@ -33,7 +33,10 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do case Actors.get_actor_by_url(url, preload) do {:ok, %Actor{} = cached_actor} -> if Actors.needs_update?(cached_actor) do - __MODULE__.make_actor_from_url(url, options) + case __MODULE__.make_actor_from_url(url, options) do + {:ok, %Actor{} = actor} -> {:ok, actor} + {:error, _} -> {:ok, cached_actor} + end else {:ok, cached_actor} end @@ -83,11 +86,14 @@ defmodule Mobilizon.Federation.ActivityPub.Actor do Logger.debug("Finding or making actor from nickname #{nickname}") case Actors.get_actor_by_name_with_preload(nickname, type) do - %Actor{url: actor_url} = actor -> - if Actors.needs_update?(actor) do - make_actor_from_url(actor_url, preload: true) + %Actor{url: actor_url} = cached_actor -> + if Actors.needs_update?(cached_actor) do + case __MODULE__.make_actor_from_url(actor_url, preload: true) do + {:ok, %Actor{} = actor} -> {:ok, actor} + {:error, _} -> {:ok, cached_actor} + end else - {:ok, actor} + {:ok, cached_actor} end nil ->