Add attachment link to posts.
[akkoma] / lib / pleroma / web / twitter_api / twitter_api.ex
index b2fb72a81597337508c16adb09761331d2ee5441..7656d4d33bdefcb10c76690b7c972b2329743968 100644 (file)
@@ -32,11 +32,23 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
 
   def get_replied_to_activity(_), do: nil
 
+  def add_attachments(text, attachments) do
+    attachment_text = Enum.map(attachments, fn
+      (%{"url" => [%{"href" => href} | _]}) ->
+        "<a href='#{href}'>#{href}</a>"
+      _ -> ""
+    end)
+    Enum.join([text | attachment_text], "<br>")
+    end
+
   def create_status(user = %User{}, data = %{"status" => status}) do
     attachments = attachments_from_ids(data["media_ids"])
     context = ActivityPub.generate_context_id
     mentions = parse_mentions(status)
-    content_html = format_input(status, mentions)
+    content_html = status
+    |> format_input(mentions)
+    |> add_attachments(attachments)
+
     to = to_for_user_and_mentions(user, mentions)
     date = make_date()
 
@@ -58,11 +70,8 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
         "actor" => user.ap_id,
         "inReplyTo" => inReplyTo.data["object"]["id"],
         "inReplyToStatusId" => inReplyTo.id,
-        "statusnetConversationId" => inReplyTo.data["statusnetConversationId"]
-      }
-      additional = %{
-        "statusnetConversationId" => inReplyTo.data["statusnetConversationId"]
       }
+      additional = %{}
 
       [to, context, object, additional]
       else
@@ -87,6 +96,12 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
   end
 
   def fetch_public_statuses(user, opts \\ %{}) do
+    opts = Map.put(opts, "local_only", true)
+    ActivityPub.fetch_public_activities(opts)
+    |> activities_to_statuses(%{for: user})
+  end
+
+  def fetch_public_and_external_statuses(user, opts \\ %{}) do
     ActivityPub.fetch_public_activities(opts)
     |> activities_to_statuses(%{for: user})
   end
@@ -319,7 +334,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
   end
 
   def context_to_conversation_id(context) do
-    with %Object{id: id} <- Object.get_by_ap_id(context) do
+    with %Object{id: id} <- Object.get_cached_by_ap_id(context) do
       id
     else _e ->
       changeset = Object.context_mapping(context)