|
|
@@ -132,6 +132,28 @@ defmodule Pleroma.User do |
|
|
|
|> Map.put(:follower_count, follower_count) |
|
|
|
end |
|
|
|
|
|
|
|
def follow_state(%User{} = user, %User{} = target) do |
|
|
|
follow_activity = Utils.fetch_latest_follow(user, target) |
|
|
|
|
|
|
|
if follow_activity, |
|
|
|
do: follow_activity.data["state"], |
|
|
|
# Ideally this would be nil, but then Cachex does not commit the value |
|
|
|
else: false |
|
|
|
end |
|
|
|
|
|
|
|
def get_cached_follow_state(user, target) do |
|
|
|
key = "follow_state:#{user.ap_id}|#{target.ap_id}" |
|
|
|
Cachex.fetch!(:user_cache, key, fn _ -> {:commit, follow_state(user, target)} end) |
|
|
|
end |
|
|
|
|
|
|
|
def set_follow_state_cache(user_ap_id, target_ap_id, state) do |
|
|
|
Cachex.put( |
|
|
|
:user_cache, |
|
|
|
"follow_state:#{user_ap_id}|#{target_ap_id}", |
|
|
|
state |
|
|
|
) |
|
|
|
end |
|
|
|
|
|
|
|
def set_info_cache(user, args) do |
|
|
|
Cachex.put(:user_cache, "user_info:#{user.id}", user_info(user, args)) |
|
|
|
end |
|
|
|