Only use fallback for videos and only add this metadata for images if we really have it.
This commit is contained in:
parent
d4ac9445cd
commit
aa8cc4e86e
1 changed files with 22 additions and 6 deletions
|
@ -55,9 +55,6 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do
|
||||||
Enum.reduce(attachments, [], fn attachment, acc ->
|
Enum.reduce(attachments, [], fn attachment, acc ->
|
||||||
rendered_tags =
|
rendered_tags =
|
||||||
Enum.reduce(attachment["url"], [], fn url, acc ->
|
Enum.reduce(attachment["url"], [], fn url, acc ->
|
||||||
height = url["height"] || 480
|
|
||||||
width = url["width"] || 480
|
|
||||||
|
|
||||||
case Utils.fetch_media_type(@media_types, url["mediaType"]) do
|
case Utils.fetch_media_type(@media_types, url["mediaType"]) do
|
||||||
"audio" ->
|
"audio" ->
|
||||||
[
|
[
|
||||||
|
@ -75,13 +72,16 @@ defp build_attachments(id, %{data: %{"attachment" => attachments}}) do
|
||||||
[
|
[
|
||||||
property: "twitter:player",
|
property: "twitter:player",
|
||||||
content: Utils.attachment_url(url["href"])
|
content: Utils.attachment_url(url["href"])
|
||||||
], []},
|
], []}
|
||||||
{:meta, [property: "twitter:player:width", content: "#{width}"], []},
|
|
||||||
{:meta, [property: "twitter:player:height", content: "#{height}"], []}
|
|
||||||
| acc
|
| acc
|
||||||
]
|
]
|
||||||
|
|> maybe_add_dimensions(url)
|
||||||
|
|
||||||
"video" ->
|
"video" ->
|
||||||
|
# fallback to old placeholder values
|
||||||
|
height = url["height"] || 480
|
||||||
|
width = url["width"] || 480
|
||||||
|
|
||||||
[
|
[
|
||||||
{:meta, [property: "twitter:card", content: "player"], []},
|
{:meta, [property: "twitter:card", content: "player"], []},
|
||||||
{:meta, [property: "twitter:player", content: player_url(id)], []},
|
{:meta, [property: "twitter:player", content: player_url(id)], []},
|
||||||
|
@ -107,4 +107,20 @@ defp build_attachments(_id, _object), do: []
|
||||||
defp player_url(id) do
|
defp player_url(id) do
|
||||||
Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :notice_player, id)
|
Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :notice_player, id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Videos have problems without dimensions, but we used to not provide WxH for images.
|
||||||
|
# A default (read: incorrect) fallback for images is likely to cause rendering bugs.
|
||||||
|
defp maybe_add_dimensions(metadata, url) do
|
||||||
|
cond do
|
||||||
|
!is_nil(url["height"]) && !is_nil(url["width"]) ->
|
||||||
|
metadata ++
|
||||||
|
[
|
||||||
|
{:meta, [property: "twitter:player:width", content: "#{url["width"]}"], []},
|
||||||
|
{:meta, [property: "twitter:player:height", content: "#{url["height"]}"], []}
|
||||||
|
]
|
||||||
|
|
||||||
|
true ->
|
||||||
|
metadata
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue