Do not try to follow local users. Their posts are already available locally on the...
[akkoma] / lib / pleroma / activity.ex
index 6542e684e1c82ef04794010889b4b774188a331a..b0f1a900d78cfa26390e5ad2972cfa169aa89851 100644 (file)
@@ -113,6 +113,7 @@ defmodule Pleroma.Activity do
     from([a] in query,
       left_join: b in Bookmark,
       on: b.user_id == ^user.id and b.activity_id == a.id,
+      as: :bookmark,
       preload: [bookmark: b]
     )
   end
@@ -123,6 +124,7 @@ defmodule Pleroma.Activity do
     from([a] in query,
       left_join: r in ReportNote,
       on: a.id == r.activity_id,
+      as: :report_note,
       preload: [report_notes: r]
     )
   end
@@ -343,6 +345,20 @@ defmodule Pleroma.Activity do
     |> Repo.all()
   end
 
+  def follow_requests_outstanding_since?(
+        %User{ap_id: follower_id},
+        %User{ap_id: followee_id},
+        since_datetime
+      ) do
+    followee_id
+    |> Queries.by_object_id()
+    |> Queries.by_type("Follow")
+    |> where([a], a.inserted_at > ^since_datetime)
+    |> where([a], fragment("? ->> 'state' != 'accept'", a.data))
+    |> where([a], a.actor == ^follower_id)
+    |> Repo.exists?()
+  end
+
   def restrict_deactivated_users(query) do
     deactivated_users =
       from(u in User.Query.build(%{deactivated: true}), select: u.ap_id)