diff options
author | lain <lain@soykaf.club> | 2018-05-05 13:40:47 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2018-05-05 13:40:47 +0200 |
commit | 9810153aebeb7dfd9b65774dd8775e382736bbf1 (patch) | |
tree | ab4e2f77784c79867b410b12af1eca6cbc8b4fd5 /lib | |
parent | 96add86b509da93e0069fc89ebb8474d4ac2c6fd (diff) | |
download | pleroma-9810153aebeb7dfd9b65774dd8775e382736bbf1.tar.gz |
Streamer: Don't send out stream events for blocked users.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/streamer.ex | 34 |
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 |