forked from mirrors/akkoma
Visibility: Make it more resilient.
This commit is contained in:
parent
920bd47055
commit
a4598b5e8b
|
@ -13,11 +13,12 @@ def is_public?(data) do
|
|||
end
|
||||
|
||||
def is_private?(activity) do
|
||||
unless is_public?(activity) do
|
||||
follower_address = User.get_cached_by_ap_id(activity.data["actor"]).follower_address
|
||||
Enum.any?(activity.data["to"], &(&1 == follower_address))
|
||||
with false <- is_public?(activity),
|
||||
%User{follower_address: follower_address} <-
|
||||
User.get_cached_by_ap_id(activity.data["actor"]) do
|
||||
follower_address in activity.data["to"]
|
||||
else
|
||||
false
|
||||
_ -> false
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -95,4 +95,14 @@ test "visible_for_user?", %{
|
|||
refute Visibility.visible_for_user?(private, unrelated)
|
||||
refute Visibility.visible_for_user?(direct, unrelated)
|
||||
end
|
||||
|
||||
test "doesn't die when the user doesn't exist",
|
||||
%{
|
||||
direct: direct,
|
||||
user: user
|
||||
} do
|
||||
Repo.delete(user)
|
||||
Cachex.clear(:user_cache)
|
||||
refute Visibility.is_private?(direct)
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue