mastodon api: fix rendering of cards without image URLs (closes #597)
[akkoma] / lib / pleroma / web / mastodon_api / views / status_view.ex
index aa38784a69ffaa835333699a0d82a1f6df16ea67..c0e289ef8013b7ed3a1e6a1b9a84e0ed2ff627cd 100644 (file)
@@ -182,15 +182,21 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
   end
 
   def render("card.json", %{rich_media: rich_media, page_url: page_url}) do
-    page_url = rich_media[:url] || page_url
-    page_url_data = URI.parse(page_url)
+    page_url_data =
+      if rich_media[:url] != nil do
+        URI.merge(URI.parse(page_url), URI.parse(rich_media[:url]))
+      else
+        page_url
+      end
+
+    page_url = page_url_data |> to_string
 
     image_url =
-      if %URI{host: nil} = page_url_data do
-        rich_media[:image]
-      else
+      if rich_media[:image] != nil do
         URI.merge(page_url_data, URI.parse(rich_media[:image]))
         |> to_string
+      else
+        nil
       end
 
     site_name = rich_media[:site_name] || page_url_data.host