cache headers for emoji and images
[akkoma] / lib / pleroma / web / activity_pub / visibility.ex
index b3b23a38baa4df987a67204966a67dc4ff545407..6ef59e93fc62b29a7262762a3a1d58e089bb2957 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.ActivityPub.Visibility do
@@ -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"