mastodon api: add conversation_id extension (ref #674)
[akkoma] / lib / pleroma / web / activity_pub / activity_pub.ex
index 32f69e0fa6f0380b1ca23c8a1fc5a25a9f08a6a5..2470b4a710dfefc67e2b4dbe3f2b6e283005c301 100644 (file)
@@ -388,7 +388,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
       if forward do
         Map.merge(additional, %{"to" => [], "cc" => [account.ap_id]})
       else
-        additional
+        Map.merge(additional, %{"to" => [], "cc" => []})
       end
 
     with flag_data <- make_flag_data(params, additional),
@@ -697,6 +697,18 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
 
   defp restrict_pinned(query, _), do: query
 
+  defp restrict_muted_reblogs(query, %{"muting_user" => %User{info: info}}) do
+    muted_reblogs = info.muted_reblogs || []
+
+    from(
+      activity in query,
+      where: fragment("not ?->>'type' = 'Announce'", activity.data),
+      where: fragment("not ? = ANY(?)", activity.actor, ^muted_reblogs)
+    )
+  end
+
+  defp restrict_muted_reblogs(query, _), do: query
+
   def fetch_activities_query(recipients, opts \\ %{}) do
     base_query =
       from(
@@ -724,6 +736,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
     |> restrict_replies(opts)
     |> restrict_reblogs(opts)
     |> restrict_pinned(opts)
+    |> restrict_muted_reblogs(opts)
   end
 
   def fetch_activities(recipients, opts \\ %{}) do