diff options
| -rw-r--r-- | lib/pleroma/web/streamer/streamer.ex | 12 | ||||
| -rw-r--r-- | test/web/streamer/streamer_test.exs | 17 | 
2 files changed, 25 insertions, 4 deletions
| diff --git a/lib/pleroma/web/streamer/streamer.ex b/lib/pleroma/web/streamer/streamer.ex index 73ee3e1e1..d1d70e556 100644 --- a/lib/pleroma/web/streamer/streamer.ex +++ b/lib/pleroma/web/streamer/streamer.ex @@ -104,7 +104,9 @@ defmodule Pleroma.Web.Streamer do      :ok    end -  def filtered_by_user?(%User{} = user, %Activity{} = item) do +  def filtered_by_user?(user, item, streamed_type \\ :activity) + +  def filtered_by_user?(%User{} = user, %Activity{} = item, streamed_type) do      %{block: blocked_ap_ids, mute: muted_ap_ids, reblog_mute: reblog_muted_ap_ids} =        User.outgoing_relationships_ap_ids(user, [:block, :mute, :reblog_mute]) @@ -116,7 +118,9 @@ 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 <- !(item.data["type"] == "Announce" && parent.data["actor"] == user.ap_id), +         true <- +           !(streamed_type == :activity && 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), @@ -131,8 +135,8 @@ defmodule Pleroma.Web.Streamer do      end    end -  def filtered_by_user?(%User{} = user, %Notification{activity: activity}) do -    filtered_by_user?(user, activity) +  def filtered_by_user?(%User{} = user, %Notification{activity: activity}, _) do +    filtered_by_user?(user, activity, :notification)    end    defp do_stream("direct", item) do diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs index dfe341b34..d56d74464 100644 --- a/test/web/streamer/streamer_test.exs +++ b/test/web/streamer/streamer_test.exs @@ -128,6 +128,23 @@ defmodule Pleroma.Web.StreamerTest do        assert Streamer.filtered_by_user?(user, announce)      end +    test "it does stream notifications 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) + +      notification = +        Pleroma.Notification +        |> Repo.get_by(%{user_id: user.id, activity_id: announce.id}) +        |> Repo.preload(:activity) + +      refute Streamer.filtered_by_user?(user, notification) +    end +      test "it streams boosts of mastodon user in the 'user' stream", %{user: user} do        Streamer.get_topic_and_add_socket("user", user) | 
