diff options
| -rw-r--r-- | lib/pleroma/web/activity_pub/transmogrifier.ex | 22 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/status_view.ex | 2 | 
2 files changed, 23 insertions, 1 deletions
| diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index cbc800ad6..56918342c 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -57,6 +57,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do      object      |> fix_actor      |> fix_attachments +    |> fix_url      |> fix_context      |> fix_in_reply_to      |> fix_emoji @@ -171,6 +172,27 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do    def fix_attachments(object), do: object +  def fix_url(%{"url" => url} = object) when is_map(url) do +    object +    |> Map.put("url", url["href"]) +  end + +  def fix_url(%{"url" => url} = object) when is_list(url) do +    first_element = Enum.at(url, 0) + +    url_string = +      cond do +        is_bitstring(first_element) -> first_element +        is_map(first_element) -> first_element["href"] || "" +        true -> "" +      end + +    object +    |> Map.put("url", url_string) +  end + +  def fix_url(object), do: object +    def fix_emoji(%{"tag" => tags} = object) when is_list(tags) do      emoji = tags |> Enum.filter(fn data -> data["type"] == "Emoji" and data["icon"] end) diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 80e80c8f5..1efd99470 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -240,7 +240,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do      summary = object["name"]      content = -      if !!summary and summary != "" do +      if !!summary and summary != "" and is_bitstring(object["url"]) do          "<p><a href=\"#{object["url"]}\">#{summary}</a></p>#{object["content"]}"        else          object["content"] | 
