Merge branch 'richmedia-workaround' into 'develop'
Workaround for RichMedia preview image breakage edge case See merge request pleroma/pleroma!3363
This commit is contained in:
commit
72143dd732
@ -381,12 +381,15 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
|
|||||||
|
|
||||||
page_url = page_url_data |> to_string
|
page_url = page_url_data |> to_string
|
||||||
|
|
||||||
image_url =
|
image_url_data =
|
||||||
if is_binary(rich_media["image"]) do
|
if is_binary(rich_media["image"]) do
|
||||||
URI.merge(page_url_data, URI.parse(rich_media["image"]))
|
URI.parse(rich_media["image"])
|
||||||
|> to_string
|
else
|
||||||
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
image_url = build_image_url(image_url_data, page_url_data)
|
||||||
|
|
||||||
%{
|
%{
|
||||||
type: "link",
|
type: "link",
|
||||||
provider_name: page_url_data.host,
|
provider_name: page_url_data.host,
|
||||||
@ -542,4 +545,23 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
|
|||||||
do: %{name: name, website: url}
|
do: %{name: name, website: url}
|
||||||
|
|
||||||
defp build_application(_), do: nil
|
defp build_application(_), do: nil
|
||||||
|
|
||||||
|
# Workaround for Elixir issue #10771
|
||||||
|
# Avoid applying URI.merge unless necessary
|
||||||
|
# TODO: revert to always attempting URI.merge(image_url_data, page_url_data)
|
||||||
|
# when Elixir 1.12 is the minimum supported version
|
||||||
|
@spec build_image_url(struct() | nil, struct()) :: String.t() | nil
|
||||||
|
defp build_image_url(
|
||||||
|
%URI{scheme: image_scheme, host: image_host} = image_url_data,
|
||||||
|
%URI{} = _page_url_data
|
||||||
|
)
|
||||||
|
when not is_nil(image_scheme) and not is_nil(image_host) do
|
||||||
|
image_url_data |> to_string
|
||||||
|
end
|
||||||
|
|
||||||
|
defp build_image_url(%URI{} = image_url_data, %URI{} = page_url_data) do
|
||||||
|
URI.merge(page_url_data, image_url_data) |> to_string
|
||||||
|
end
|
||||||
|
|
||||||
|
defp build_image_url(_, _), do: nil
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user