twitter api: refactor activity html generation, add support for Articles
authorWilliam Pitcock <nenolod@dereferenced.org>
Sun, 24 Jun 2018 05:33:34 +0000 (05:33 +0000)
committerWilliam Pitcock <nenolod@dereferenced.org>
Wed, 27 Jun 2018 13:37:53 +0000 (13:37 +0000)
lib/pleroma/web/twitter_api/views/activity_view.ex

index 62ce3b7b5d0d152c1558099f13ee270f63ed68c0..0779872fe2f122b337c410b6200ca7f5fdaad5df 100644 (file)
@@ -228,15 +228,7 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do
 
     tags = if possibly_sensitive, do: Enum.uniq(["nsfw" | tags]), else: tags
 
-    summary = activity.data["object"]["summary"]
-    content = object["content"]
-
-    content =
-      if !!summary and summary != "" do
-        "<span>#{activity.data["object"]["summary"]}</span><br />#{content}</span>"
-      else
-        content
-      end
+    {summary, content} = render_content(object)
 
     html =
       HtmlSanitizeEx.basic_html(content)
@@ -266,4 +258,35 @@ defmodule Pleroma.Web.TwitterAPI.ActivityView do
       "visibility" => Pleroma.Web.MastodonAPI.StatusView.get_visibility(object)
     }
   end
+
+  def render_content(%{"type" => "Note"} = object) do
+    summary = object["summary"]
+    content =
+      if !!summary and summary != "" do
+        "<p>#{summary}</p>#{object["content"]}"
+      else
+        object["content"]
+      end
+
+    {summary, content}
+  end
+
+  def render_content(%{"type" => "Article"} = object) do
+    summary = object["name"] || object["summary"]
+    content =
+      if !!summary and summary != "" do
+        "<p><a href=\"#{object["url"]}\">#{summary}</a></p>#{object["content"]}"
+      else
+        object["content"]
+      end
+
+    {summary, content}
+  end
+
+  def render_content(object) do
+    summary = object["summary"] || "Unhandled activity type: #{object["type"]}"
+    content = "<p>#{summary}</p>#{object["content"]}"
+
+    {summary, content}
+  end
 end