projects
/
akkoma
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ded9091
)
streamer: contain list updates in the same way as we do with the database query
author
William Pitcock
<nenolod@dereferenced.org>
Wed, 29 Aug 2018 09:23:05 +0000
(09:23 +0000)
committer
William Pitcock
<nenolod@dereferenced.org>
Wed, 29 Aug 2018 09:23:05 +0000
(09:23 +0000)
lib/pleroma/web/streamer.ex
patch
|
blob
|
history
diff --git
a/lib/pleroma/web/streamer.ex
b/lib/pleroma/web/streamer.ex
index c61bad83029dc00a5bd682b2b262822593343202..6b6d40346191c00c662077c57894ff34a14852ae 100644
(file)
--- a/
lib/pleroma/web/streamer.ex
+++ b/
lib/pleroma/web/streamer.ex
@@
-1,7
+1,8
@@
defmodule Pleroma.Web.Streamer do
use GenServer
require Logger
defmodule Pleroma.Web.Streamer do
use GenServer
require Logger
- alias Pleroma.{User, Notification, Activity, Object}
+ alias Pleroma.{User, Notification, Activity, Object, Repo}
+ alias Pleroma.Web.ActivityPub.ActivityPub
def init(args) do
{:ok, args}
def init(args) do
{:ok, args}
@@
-60,8
+61,24
@@
defmodule Pleroma.Web.Streamer do
end
def handle_cast(%{action: :stream, topic: "list", item: item}, topics) do
end
def handle_cast(%{action: :stream, topic: "list", item: item}, topics) do
+ author = User.get_cached_by_ap_id(item.data["actor"])
+
+ # filter the recipient list if the activity is not public, see #270.
+ recipient_lists =
+ case ActivityPub.is_public?(item) do
+ true ->
+ Pleroma.List.get_lists_from_activity(item)
+
+ _ ->
+ Pleroma.List.get_lists_from_activity(item)
+ |> Enum.filter(fn list ->
+ owner = Repo.get(User, list.user_id)
+ author.follower_address in owner.following
+ end)
+ end
+
recipient_topics =
recipient_topics =
- Pleroma.List.get_lists_from_activity(item)
+ recipient_lists
|> Enum.map(fn %{id: id} -> "list:#{id}" end)
Enum.each(recipient_topics || [], fn list_topic ->
|> Enum.map(fn %{id: id} -> "list:#{id}" end)
Enum.each(recipient_topics || [], fn list_topic ->