fix /inbox for Relay
[akkoma] / lib / pleroma / conversation / participation.ex
index acdee55173617be544b9c3c16e60fad75d39af84..ea5b9fe17ba0526647d78caf03f2f167fa130720 100644 (file)
@@ -94,13 +94,27 @@ defmodule Pleroma.Conversation.Participation do
     |> Enum.filter(& &1.last_activity_id)
   end
 
-  def get(nil), do: nil
+  def get(_, _ \\ [])
+  def get(nil, _), do: nil
+
+  def get(id, params) do
+    query =
+      if preload = params[:preload] do
+        from(p in __MODULE__,
+          preload: ^preload
+        )
+      else
+        __MODULE__
+      end
 
-  def get(id) do
-    Repo.get(__MODULE__, id)
+    Repo.get(query, id)
   end
 
   def set_recipients(participation, user_ids) do
+    user_ids =
+      [participation.user_id | user_ids]
+      |> Enum.uniq()
+
     Repo.transaction(fn ->
       query =
         from(r in RecipientShip,
@@ -118,5 +132,7 @@ defmodule Pleroma.Conversation.Participation do
       RecipientShip.create(users, participation)
       :ok
     end)
+
+    {:ok, Repo.preload(participation, :recipients, force: true)}
   end
 end