Don't break on empty mentions.

This commit is contained in:
Roger Braun 2017-08-24 12:54:01 +02:00
parent e477608b7e
commit 1a001588e8
3 changed files with 15 additions and 3 deletions

View file

@ -55,8 +55,9 @@ def get_collection_mentions(entry) do
end end
def get_mentions(entry) do def get_mentions(entry) do
get_people_mentions(entry) (get_people_mentions(entry)
++ get_collection_mentions(entry) ++ get_collection_mentions(entry))
|> Enum.filter(&(&1))
end end
def make_to_list(actor, mentions) do def make_to_list(actor, mentions) do

View file

@ -270,7 +270,11 @@ defp activity_to_status(activity, opts) do
user = User.get_cached_by_ap_id(actor) user = User.get_cached_by_ap_id(actor)
# mentioned_users = Repo.all(from user in User, where: user.ap_id in ^activity.data["to"]) # mentioned_users = Repo.all(from user in User, where: user.ap_id in ^activity.data["to"])
mentioned_users = Enum.map(activity.data["to"] || [], fn (ap_id) -> mentioned_users = Enum.map(activity.data["to"] || [], fn (ap_id) ->
if ap_id do
User.get_cached_by_ap_id(ap_id) User.get_cached_by_ap_id(ap_id)
else
nil
end
end) end)
|> Enum.filter(&(&1)) |> Enum.filter(&(&1))

View file

@ -346,4 +346,11 @@ test "insert or update a user from given data" do
assert {:ok, %User{}} = OStatus.insert_or_update_user(data) assert {:ok, %User{}} = OStatus.insert_or_update_user(data)
end end
test "it doesn't add nil in the do field" do
incoming = File.read!("test/fixtures/nil_mention_entry.xml")
{:ok, [activity]} = OStatus.handle_incoming(incoming)
assert activity.data["to"] == ["http://localhost:4001/users/atarifrosch@social.stopwatchingus-heidelberg.de/followers", "https://www.w3.org/ns/activitystreams#Public"]
end
end end