From 7f665daaf3c0d173d2ceaee282df67698db7a561 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Tue, 28 Dec 2021 11:08:39 +0100 Subject: [PATCH] Handle actor refreshment being impossible If we can't refresh the actor, just return the stale actor Signed-off-by: Thomas Citharel --- lib/federation/activity_pub/actor.ex | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) 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 ->