ostatus: we need to include the original author of a message as a mention
[akkoma] / lib / pleroma / web / ostatus / activity_representer.ex
index 921a89bd015fca545652f3c0f202996e0d220080..4c4a0c233d9268523fed480d5945f9829a3d2d72 100644 (file)
@@ -1,7 +1,6 @@
 defmodule Pleroma.Web.OStatus.ActivityRepresenter do
   alias Pleroma.{Activity, User, Object}
   alias Pleroma.Web.OStatus.UserRepresenter
-  alias Pleroma.Formatter
   require Logger
 
   defp get_href(id) do
@@ -185,7 +184,10 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do
 
     retweeted_xml = to_simple_form(retweeted_activity, retweeted_user, true)
 
-    mentions = activity.recipients |> get_mentions
+    mentions =
+      ([retweeted_user.ap_id] ++ activity.recipients)
+      |> Enum.uniq()
+      |> get_mentions()
 
     [
       {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},
@@ -233,16 +235,21 @@ defmodule Pleroma.Web.OStatus.ActivityRepresenter do
   end
 
   # Only undos of follow for now. Will need to get redone once there are more
-  def to_simple_form(%{data: %{"type" => "Undo"}} = activity, user, with_author) do
+  def to_simple_form(
+        %{data: %{"type" => "Undo", "object" => %{"type" => "Follow"} = follow_activity}} =
+          activity,
+        user,
+        with_author
+      ) do
     h = fn str -> [to_charlist(str)] end
 
     updated_at = activity.data["published"]
     inserted_at = activity.data["published"]
 
     author = if with_author, do: [{:author, UserRepresenter.to_simple_form(user)}], else: []
-    follow_activity = Activity.get_by_ap_id(activity.data["object"])
 
     mentions = (activity.recipients || []) |> get_mentions
+    follow_activity = Activity.get_by_ap_id(follow_activity["id"])
 
     [
       {:"activity:object-type", ['http://activitystrea.ms/schema/1.0/activity']},