Transmogrifier: Use a simpler way to get mentions.

This commit is contained in:
lain 2020-05-25 15:08:43 +02:00
parent 5fef405208
commit 6bd7070b00
2 changed files with 26 additions and 17 deletions

View File

@ -1045,10 +1045,14 @@ def add_hashtags(object) do
Map.put(object, "tag", tags) Map.put(object, "tag", tags)
end end
# TODO These should be added on our side on insertion, it doesn't make much
# sense to regenerate these all the time
def add_mention_tags(object) do def add_mention_tags(object) do
{enabled_receivers, disabled_receivers} = Utils.get_notified_from_object(object) to = object["to"] || []
potential_receivers = enabled_receivers ++ disabled_receivers cc = object["cc"] || []
mentions = Enum.map(potential_receivers, &build_mention_tag/1) mentioned = User.get_users_from_set(to ++ cc, local_only: false)
mentions = Enum.map(mentioned, &build_mention_tag/1)
tags = object["tag"] || [] tags = object["tag"] || []
Map.put(object, "tag", tags ++ mentions) Map.put(object, "tag", tags ++ mentions)

View File

@ -1094,23 +1094,28 @@ test "it turns mentions into tags" do
{:ok, activity} = {:ok, activity} =
CommonAPI.post(user, %{status: "hey, @#{other_user.nickname}, how are ya? #2hu"}) CommonAPI.post(user, %{status: "hey, @#{other_user.nickname}, how are ya? #2hu"})
{:ok, modified} = Transmogrifier.prepare_outgoing(activity.data) with_mock Pleroma.Notification,
object = modified["object"] get_notified_from_activity: fn _, _ -> [] end do
{:ok, modified} = Transmogrifier.prepare_outgoing(activity.data)
expected_mention = %{ object = modified["object"]
"href" => other_user.ap_id,
"name" => "@#{other_user.nickname}",
"type" => "Mention"
}
expected_tag = %{ expected_mention = %{
"href" => Pleroma.Web.Endpoint.url() <> "/tags/2hu", "href" => other_user.ap_id,
"type" => "Hashtag", "name" => "@#{other_user.nickname}",
"name" => "#2hu" "type" => "Mention"
} }
assert Enum.member?(object["tag"], expected_tag) expected_tag = %{
assert Enum.member?(object["tag"], expected_mention) "href" => Pleroma.Web.Endpoint.url() <> "/tags/2hu",
"type" => "Hashtag",
"name" => "#2hu"
}
refute called(Pleroma.Notification.get_notified_from_activity(:_, :_))
assert Enum.member?(object["tag"], expected_tag)
assert Enum.member?(object["tag"], expected_mention)
end
end end
test "it adds the sensitive property" do test "it adds the sensitive property" do