summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-01-28 16:40:44 +0100
committerlain <lain@soykaf.club>2020-01-28 16:40:44 +0100
commit77f24525ca6636f5fb0b3864c346be683566efd3 (patch)
tree58151a016ad7793f153e7b1836ecae25d4a24317
parentd9cb8acd3e43f2b3502f2b08ce469483c67789f6 (diff)
Streamer: Correctly handle reblog mutes
-rw-r--r--lib/pleroma/web/streamer/worker.ex3
-rw-r--r--test/web/streamer/streamer_test.exs28
2 files changed, 30 insertions, 1 deletions
diff --git a/lib/pleroma/web/streamer/worker.ex b/lib/pleroma/web/streamer/worker.ex
index a1b445f2f..5392c1ec3 100644
--- a/lib/pleroma/web/streamer/worker.ex
+++ b/lib/pleroma/web/streamer/worker.ex
@@ -138,7 +138,8 @@ defmodule Pleroma.Web.Streamer.Worker do
with parent <- Object.normalize(item) || item,
true <-
- Enum.all?([blocked_ap_ids, muted_ap_ids, reblog_muted_ap_ids], &(item.actor not in &1)),
+ 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], &(parent.data["actor"] not in &1)),
true <- MapSet.disjoint?(recipients, recipient_blocks),
%{host: item_host} <- URI.parse(item.actor),
diff --git a/test/web/streamer/streamer_test.exs b/test/web/streamer/streamer_test.exs
index 7166d6f0b..848158a44 100644
--- a/test/web/streamer/streamer_test.exs
+++ b/test/web/streamer/streamer_test.exs
@@ -455,6 +455,34 @@ defmodule Pleroma.Web.StreamerTest do
Task.await(task)
end
+ test "it does send non-reblog notification for mtued" do
+ user1 = insert(:user)
+ user2 = insert(:user)
+ user3 = insert(:user)
+ CommonAPI.hide_reblogs(user1, user2)
+
+ task =
+ Task.async(fn ->
+ assert_receive {:text, _}, 1_000
+ end)
+
+ fake_socket = %StreamerSocket{
+ transport_pid: task.pid,
+ user: user1
+ }
+
+ {:ok, create_activity} = CommonAPI.post(user3, %{"status" => "I'm kawen"})
+ {:ok, favorite_activity, _} = CommonAPI.favorite(create_activity.id, user2)
+
+ topics = %{
+ "public" => [fake_socket]
+ }
+
+ Worker.push_to_socket(topics, "public", favorite_activity)
+
+ Task.await(task)
+ end
+
test "it doesn't send posts from muted threads" do
user = insert(:user)
user2 = insert(:user)