summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Felder <feld@feld.me>2021-06-08 16:31:12 -0500
committerMark Felder <feld@feld.me>2021-06-08 16:31:12 -0500
commitaa8cc4e86e5c7a53fa8bc606dbce6c6b3a0a8c02 (patch)
tree53e7e31c28223088bc585f139075791b96ce98c9
parentd4ac9445cd485a4055f93360714923c3f64d9673 (diff)
Only use fallback for videos and only add this metadata for images if we really have it.
-rw-r--r--lib/pleroma/web/metadata/providers/twitter_card.ex28
1 files changed, 22 insertions, 6 deletions
diff --git a/lib/pleroma/web/metadata/providers/twitter_card.ex b/lib/pleroma/web/metadata/providers/twitter_card.ex
index bf6d4bcbe..dfe477a8a 100644
--- a/lib/pleroma/web/metadata/providers/twitter_card.ex
+++ b/lib/pleroma/web/metadata/providers/twitter_card.ex
@@ -55,9 +55,6 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
Enum.reduce(attachments, [], fn attachment, acc ->
rendered_tags =
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
"audio" ->
[
@@ -75,13 +72,16 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
[
property: "twitter:player",
content: Utils.attachment_url(url["href"])
- ], []},
- {:meta, [property: "twitter:player:width", content: "#{width}"], []},
- {:meta, [property: "twitter:player:height", content: "#{height}"], []}
+ ], []}
| acc
]
+ |> maybe_add_dimensions(url)
"video" ->
+ # fallback to old placeholder values
+ height = url["height"] || 480
+ width = url["width"] || 480
+
[
{:meta, [property: "twitter:card", content: "player"], []},
{:meta, [property: "twitter:player", content: player_url(id)], []},
@@ -107,4 +107,20 @@ defmodule Pleroma.Web.Metadata.Providers.TwitterCard do
defp player_url(id) do
Pleroma.Web.Router.Helpers.o_status_url(Pleroma.Web.Endpoint, :notice_player, id)
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