aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2018-05-05 13:40:47 +0200
committerlain <lain@soykaf.club>2018-05-05 13:40:47 +0200
commit9810153aebeb7dfd9b65774dd8775e382736bbf1 (patch)
treeab4e2f77784c79867b410b12af1eca6cbc8b4fd5 /lib
parent96add86b509da93e0069fc89ebb8474d4ac2c6fd (diff)
downloadpleroma-9810153aebeb7dfd9b65774dd8775e382736bbf1.tar.gz
Streamer: Don't send out stream events for blocked users.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/streamer.ex34
1 files changed, 20 insertions, 14 deletions
diff --git a/lib/pleroma/web/streamer.ex b/lib/pleroma/web/streamer.ex
index 10670e71f..3375af841 100644
--- a/lib/pleroma/web/streamer.ex
+++ b/lib/pleroma/web/streamer.ex
@@ -110,20 +110,26 @@ defmodule Pleroma.Web.Streamer do
def push_to_socket(topics, topic, item) do
Enum.each(topics[topic] || [], fn socket ->
- json =
- %{
- event: "update",
- payload:
- Pleroma.Web.MastodonAPI.StatusView.render(
- "status.json",
- activity: item,
- for: socket.assigns[:user]
- )
- |> Jason.encode!()
- }
- |> Jason.encode!()
-
- send(socket.transport_pid, {:text, json})
+ # Get the current user so we have up-to-date blocks etc.
+ user = User.get_cached_by_ap_id(socket.assigns[:user].ap_id)
+ blocks = user.info["blocks"] || []
+
+ unless item.actor in blocks do
+ json =
+ %{
+ event: "update",
+ payload:
+ Pleroma.Web.MastodonAPI.StatusView.render(
+ "status.json",
+ activity: item,
+ for: user
+ )
+ |> Jason.encode!()
+ }
+ |> Jason.encode!()
+
+ send(socket.transport_pid, {:text, json})
+ end
end)
end