make bulk user creation from admin works as a transaction
[akkoma] / lib / pleroma / conversation / participation.ex
index 1a2ceafeb2a819ec23f3984e7fd10475e2dfc782..61021fb18104bfc07e0c706f52859602d6a82811 100644 (file)
@@ -60,26 +60,18 @@ defmodule Pleroma.Conversation.Participation do
       order_by: [desc: p.updated_at]
     )
     |> Pleroma.Pagination.fetch_paginated(params)
+    |> Repo.preload(conversation: [:users])
   end
 
   def for_user_with_last_activity_id(user, params \\ %{}) do
     for_user(user, params)
-    |> Repo.preload(:conversation)
     |> Enum.map(fn participation ->
-      # TODO: Don't load all those activities, just get the most recent
-      # Involves splitting up the query.
-      activities =
-        ActivityPub.fetch_activities_for_context(participation.conversation.ap_id, %{
+      activity_id =
+        ActivityPub.fetch_latest_activity_id_for_context(participation.conversation.ap_id, %{
           "user" => user,
           "blocking_user" => user
         })
 
-      activity_id =
-        case activities do
-          [activity | _] -> activity.id
-          _ -> nil
-        end
-
       %{
         participation
         | last_activity_id: activity_id