Chats: Basic implementation.
[akkoma] / lib / pleroma / web / activity_pub / transmogrifier.ex
index f82142979dc561f2ef2b66488ecaa1787f26e67b..a4b385cd5c49917914a8184522fb7c6b243001bb 100644 (file)
@@ -1267,23 +1267,24 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
     {:error, :no_context}
   end
 
-  defp maybe_add_recipients_from_object(%{"object" => object} = data) do
-    to = data["to"] || []
-    cc = data["cc"] || []
+  defp maybe_add_recipients_from_object(%{"to" => [_ | _], "cc" => [_ | _]} = data),
+    do: {:ok, data}
 
-    if to == [] && cc == [] do
-      if object = Object.normalize(object) do
+  defp maybe_add_recipients_from_object(%{"object" => object} = data) do
+    case Object.normalize(object) do
+      %{data: %{"actor" => actor}} ->
         data =
           data
-          |> Map.put("to", [object.data["actor"]])
-          |> Map.put("cc", cc)
+          |> Map.put("to", [actor])
+          |> Map.put("cc", data["cc"] || [])
 
         {:ok, data}
-      else
-        {:error, "No actor on referenced object"}
-      end
-    else
-      {:ok, data}
+
+      nil ->
+        {:error, :no_object}
+
+      _ ->
+        {:error, :no_actor}
     end
   end