diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 61631e1ea..6561b8d76 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -22,6 +22,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do      |> fix_context      |> fix_in_reply_to      |> fix_emoji +    |> fix_tag    end    def fix_in_reply_to(%{"inReplyTo" => in_reply_to_id} = object) when not is_nil(in_reply_to_id) do @@ -76,6 +77,17 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do      |> Map.put("emoji", emoji)    end +  def fix_tag(object) do +    tags = (object["tag"] || []) +    |> Enum.filter(fn (data) -> data["type"] == "Hashtag" and data["name"] end) +    |> Enum.map(fn (data) -> String.slice(data["name"], 1..-1) end) + +    combined = (object["tag"] || []) ++ tags + +    object +    |> Map.put("tag", combined) +  end +    # TODO: validate those with a Ecto scheme    # - tags    # - emoji  | 
