summaryrefslogtreecommitdiff
path: root/lib/pleroma/user.ex
diff options
context:
space:
mode:
authorMark Felder <feld@feld.me>2023-12-09 18:21:00 -0500
committerMark Felder <feld@feld.me>2023-12-09 18:21:00 -0500
commit94daa3e8c1ec42f40214dc13f061f4319764f715 (patch)
tree7ec5491a12cdaa4cce84d39ca89bea8d0567f435 /lib/pleroma/user.ex
parent82724f6664c05e746eb241fb60aefd9a931b372d (diff)
Revert "Remove unnecessary forced refresh of user"
This reverts commit 97cf78f63d312d0475ac8908d0b093cb5eff18d5.
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r--lib/pleroma/user.ex20
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index c7753ca5d..3f729fdcc 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -1037,6 +1037,16 @@ defmodule Pleroma.User do
defp maybe_send_registration_email(_), do: {:ok, :noop}
+ def needs_update?(%User{local: true}), do: false
+
+ def needs_update?(%User{local: false, last_refreshed_at: nil}), do: true
+
+ def needs_update?(%User{local: false} = user) do
+ NaiveDateTime.diff(NaiveDateTime.utc_now(), user.last_refreshed_at) >= 86_400
+ end
+
+ def needs_update?(_), do: true
+
@spec maybe_direct_follow(User.t(), User.t()) :: {:ok, User.t()} | {:error, String.t()}
# "Locked" (self-locked) users demand explicit authorization of follow requests
@@ -2049,13 +2059,15 @@ defmodule Pleroma.User do
def fetch_by_ap_id(ap_id), do: ActivityPub.make_user_from_ap_id(ap_id)
def get_or_fetch_by_ap_id(ap_id) do
- user = get_cached_by_ap_id(ap_id) || fetch_by_ap_id(ap_id)
+ cached_user = get_cached_by_ap_id(ap_id)
+
+ maybe_fetched_user = needs_update?(cached_user) && fetch_by_ap_id(ap_id)
- case user do
- %User{} = user ->
+ case {cached_user, maybe_fetched_user} do
+ {_, {:ok, %User{} = user}} ->
{:ok, user}
- {:ok, %User{} = user} ->
+ {%User{} = user, _} ->
{:ok, user}
_ ->