From 4dfb40a5467f6206b2793bdafbd82a7ae4ee04bf Mon Sep 17 00:00:00 2001
From: csaurus <csaurus@mailbox.org>
Date: Mon, 14 May 2018 21:46:09 -0400
Subject: [PATCH] Handle cases where a to/cc field is absent on a status

---
 lib/pleroma/web/activity_pub/activity_pub.ex | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index f7f6d047e..4ce2e6052 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -239,9 +239,11 @@ defp restrict_visibility(query, %{visibility: "direct"}) do
       activity in query,
       join: sender in User,
       on: sender.ap_id == activity.actor,
+      # Are non-direct statuses with no to/cc possible?
       where:
-        fragment("not data->'to' \\? ?", ^public) and fragment("not data->'cc' \\? ?", ^public) and
-          fragment("not data->'to' \\? ?", sender.follower_address)
+        fragment("not coalesce(data->'to' \\? ?, false)", ^public) and
+          fragment("not coalesce(data->'cc' \\? ?, false)", ^public) and
+          fragment("not coalesce(data->'to' \\? ?, false)", sender.follower_address)
     )
   end