aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTusooa Zhu <tusooa@kazv.moe>2022-08-31 15:57:06 -0400
committerTusooa Zhu <tusooa@kazv.moe>2022-08-31 15:57:06 -0400
commitffd379456bb9e4f125ce5e2480be4d2819b88147 (patch)
tree456e1a9d45c7a25aa82e3fb6e791ff4ca9aaa1df
parentf9b86c3c22c10d54a721cfe632f9c7455a8b2f9c (diff)
downloadpleroma-ffd379456bb9e4f125ce5e2480be4d2819b88147.tar.gz
Do not stream out Announces to public timelines
-rw-r--r--lib/pleroma/activity/ir/topics.ex6
-rw-r--r--test/pleroma/activity/ir/topics_test.exs27
2 files changed, 30 insertions, 3 deletions
diff --git a/lib/pleroma/activity/ir/topics.ex b/lib/pleroma/activity/ir/topics.ex
index fa4350797..b9fcd6693 100644
--- a/lib/pleroma/activity/ir/topics.ex
+++ b/lib/pleroma/activity/ir/topics.ex
@@ -29,7 +29,7 @@ defmodule Pleroma.Activity.Ir.Topics do
["user", "list"] ++ visibility_tags(object, activity)
end
- defp visibility_tags(object, activity) do
+ defp visibility_tags(object, %{data: %{"type" => "Create"}} = activity) do
case Visibility.get_visibility(activity) do
"public" ->
if activity.local do
@@ -51,6 +51,10 @@ defmodule Pleroma.Activity.Ir.Topics do
end
end
+ defp visibility_tags(_object, _activity) do
+ []
+ end
+
defp item_creation_tags(tags, object, %{data: %{"type" => "Create"}} = activity) do
tags ++
remote_topics(activity) ++ hashtags_to_topics(object) ++ attachment_topics(object, activity)
diff --git a/test/pleroma/activity/ir/topics_test.exs b/test/pleroma/activity/ir/topics_test.exs
index 8317868a5..d299fea63 100644
--- a/test/pleroma/activity/ir/topics_test.exs
+++ b/test/pleroma/activity/ir/topics_test.exs
@@ -58,7 +58,7 @@ defmodule Pleroma.Activity.Ir.TopicsTest do
setup do
activity = %Activity{
object: %Object{data: %{"type" => "Note"}},
- data: %{"to" => [Pleroma.Constants.as_public()]}
+ data: %{"to" => [Pleroma.Constants.as_public()], "type" => "Create"}
}
{:ok, activity: activity}
@@ -137,6 +137,25 @@ defmodule Pleroma.Activity.Ir.TopicsTest do
end
end
+ describe "public visibility Announces" do
+ setup do
+ activity = %Activity{
+ object: %Object{data: %{"attachment" => []}},
+ data: %{"type" => "Announce", "to" => [Pleroma.Constants.as_public()]}
+ }
+
+ {:ok, activity: activity}
+ end
+
+ test "does not generate public topics", %{activity: activity} do
+ topics = Topics.get_activity_topics(activity)
+
+ refute "public" in topics
+ refute "public:remote" in topics
+ refute "public:local" in topics
+ end
+ end
+
describe "local-public visibility create events" do
setup do
activity = %Activity{
@@ -230,7 +249,11 @@ defmodule Pleroma.Activity.Ir.TopicsTest do
describe "non-public visibility" do
test "produces direct topic" do
- activity = %Activity{object: %Object{data: %{"type" => "Note"}}, data: %{"to" => []}}
+ activity = %Activity{
+ object: %Object{data: %{"type" => "Note"}},
+ data: %{"to" => [], "type" => "Create"}
+ }
+
topics = Topics.get_activity_topics(activity)
assert Enum.member?(topics, "direct")