check dir existence in policy
[akkoma] / lib / pleroma / web / activity_pub / visibility.ex
index b3b23a38baa4df987a67204966a67dc4ff545407..2cb5a2bd02b82be26fe7c755bcb246da0a3c6506 100644 (file)
@@ -23,6 +23,14 @@ defmodule Pleroma.Web.ActivityPub.Visibility do
       Utils.label_in_message?(Pleroma.Constants.as_local_public(), data)
   end
 
+  def is_local_public?(%Object{data: data}), do: is_local_public?(data)
+  def is_local_public?(%Activity{data: data}), do: is_local_public?(data)
+
+  def is_local_public?(data) do
+    Utils.label_in_message?(Pleroma.Constants.as_local_public(), data) and
+      not Utils.label_in_message?(Pleroma.Constants.as_public(), data)
+  end
+
   def is_private?(activity) do
     with false <- is_public?(activity),
          %User{follower_address: follower_address} <-
@@ -118,6 +126,9 @@ defmodule Pleroma.Web.ActivityPub.Visibility do
       Pleroma.Constants.as_public() in cc ->
         "unlisted"
 
+      Pleroma.Constants.as_local_public() in to ->
+        "local"
+
       # this should use the sql for the object's activity
       Enum.any?(to, &String.contains?(&1, "/followers")) ->
         "private"