Streamer: Align announce streaming with polling.
authorlain <lain@soykaf.club>
Thu, 2 Jul 2020 07:50:26 +0000 (09:50 +0200)
committerlain <lain@soykaf.club>
Thu, 2 Jul 2020 07:50:26 +0000 (09:50 +0200)
lib/pleroma/web/streamer/streamer.ex
test/web/streamer/streamer_test.exs

index d1d2c9b9c5f85bfa53bd48168a5796a8523c80b1..73ee3e1e11d79883ac55d83150ae2f6a5e1a4a5a 100644 (file)
@@ -116,6 +116,7 @@ defmodule Pleroma.Web.Streamer do
          true <-
            Enum.all?([blocked_ap_ids, muted_ap_ids], &(item.actor not in &1)),
          true <- item.data["type"] != "Announce" || item.actor not in reblog_muted_ap_ids,
          true <-
            Enum.all?([blocked_ap_ids, muted_ap_ids], &(item.actor not in &1)),
          true <- item.data["type"] != "Announce" || item.actor not in reblog_muted_ap_ids,
+         true <- !(item.data["type"] == "Announce" && parent.data["actor"] == user.ap_id),
          true <- Enum.all?([blocked_ap_ids, muted_ap_ids], &(parent.data["actor"] not in &1)),
          true <- MapSet.disjoint?(recipients, recipient_blocks),
          %{host: item_host} <- URI.parse(item.actor),
          true <- Enum.all?([blocked_ap_ids, muted_ap_ids], &(parent.data["actor"] not in &1)),
          true <- MapSet.disjoint?(recipients, recipient_blocks),
          %{host: item_host} <- URI.parse(item.actor),
index 245f6e63f53f7bccab9782c236cea453ecf0f943..dfe341b34775bfe6773eaa599e1fa22c8c590566 100644 (file)
@@ -116,6 +116,18 @@ defmodule Pleroma.Web.StreamerTest do
       refute Streamer.filtered_by_user?(user, announce)
     end
 
       refute Streamer.filtered_by_user?(user, announce)
     end
 
+    test "it does not stream announces of the user's own posts in the 'user' stream", %{
+      user: user
+    } do
+      Streamer.get_topic_and_add_socket("user", user)
+
+      other_user = insert(:user)
+      {:ok, activity} = CommonAPI.post(user, %{status: "hey"})
+      {:ok, announce} = CommonAPI.repeat(activity.id, other_user)
+
+      assert Streamer.filtered_by_user?(user, announce)
+    end
+
     test "it streams boosts of mastodon user in the 'user' stream", %{user: user} do
       Streamer.get_topic_and_add_socket("user", user)
 
     test "it streams boosts of mastodon user in the 'user' stream", %{user: user} do
       Streamer.get_topic_and_add_socket("user", user)