aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2020-12-30 14:42:35 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2020-12-30 14:42:35 +0300
commite0b5edb6d5a423bfd247e0774d2f5bc642b2fb80 (patch)
tree0ee3908203132fefc57e53f5a3912b16aae05e47
parenta25c1e8ec0b6f4ef2e9f68c4ad5e48e18f5f01a7 (diff)
downloadpleroma-e0b5edb6d5a423bfd247e0774d2f5bc642b2fb80.tar.gz
[#3213] Fixed Object.object_data_hashtags/1 to process only AS2 elements of `data.tag` (basing on #2984).
-rw-r--r--lib/pleroma/object.ex12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex
index 08114d4f2..dad572f2b 100644
--- a/lib/pleroma/object.ex
+++ b/lib/pleroma/object.ex
@@ -405,8 +405,16 @@ defmodule Pleroma.Object do
defp embedded_hashtags(_), do: []
defp object_data_hashtags(%{"tag" => tags}) when is_list(tags) do
- # Note: AS2 map-type elements are ignored
- Enum.filter(tags, &is_bitstring(&1))
+ # Note: Old format with copy of hashtags as strings is ignored, using AS2
+ tags
+ |> Enum.filter(fn
+ %{"type" => "Hashtag"} = data -> Map.has_key?(data, "name")
+ _ -> false
+ end)
+ |> Enum.map(fn
+ %{"name" => "#" <> hashtag} -> String.downcase(hashtag)
+ %{"name" => hashtag} -> String.downcase(hashtag)
+ end)
end
defp object_data_hashtags(_), do: []