diff options
author | lain <lain@soykaf.club> | 2019-05-08 18:08:50 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2019-05-08 18:08:50 +0200 |
commit | a4598b5e8bc640ffc1a052438e21f3573ff837ee (patch) | |
tree | 3d33be3e6a28214bd30ea8fbefe48f0d8271504c | |
parent | 920bd4705526d8dfa8ada516853bbb4e5438cbf1 (diff) | |
download | pleroma-a4598b5e8bc640ffc1a052438e21f3573ff837ee.tar.gz |
Visibility: Make it more resilient.
-rw-r--r-- | lib/pleroma/web/activity_pub/visibility.ex | 9 | ||||
-rw-r--r-- | test/web/activity_pub/visibilty_test.exs | 10 |
2 files changed, 15 insertions, 4 deletions
diff --git a/lib/pleroma/web/activity_pub/visibility.ex b/lib/pleroma/web/activity_pub/visibility.ex index 6dee61dd6..e7613a5c8 100644 --- a/lib/pleroma/web/activity_pub/visibility.ex +++ b/lib/pleroma/web/activity_pub/visibility.ex @@ -13,11 +13,12 @@ defmodule Pleroma.Web.ActivityPub.Visibility 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 diff --git a/test/web/activity_pub/visibilty_test.exs b/test/web/activity_pub/visibilty_test.exs index 24b96c4aa..ff0e72401 100644 --- a/test/web/activity_pub/visibilty_test.exs +++ b/test/web/activity_pub/visibilty_test.exs @@ -95,4 +95,14 @@ defmodule Pleroma.Web.ActivityPub.VisibilityTest do 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 |