diff options
author | lain <lain@soykaf.club> | 2019-08-15 14:06:27 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2019-08-15 14:06:27 +0000 |
commit | 9fb71ce7f44ec4824f9b7e2acbc89d0d16ad08bf (patch) | |
tree | 274ab728f3dbb7b95d870bf31d001aa773151685 /lib/pleroma/user.ex | |
parent | 27b747546a7796de57e88f454b2c2810c7523f97 (diff) | |
parent | bd5ad0af787e65bc05b7df64ef41c414900085af (diff) | |
download | pleroma-9fb71ce7f44ec4824f9b7e2acbc89d0d16ad08bf.tar.gz |
Merge branch 'cache-follow-state' into 'develop'
Cache follow state
Closes #1180
See merge request pleroma/pleroma!1573
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index b67743846..a1040fe71 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -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 |