Merge branch 'fix/mp3-recognition' into 'develop'
[akkoma] / lib / pleroma / user.ex
index 35f3371ba17a858df16e3577ac84119f1d02595c..b27397e13956fc5ae16e638ff3e2ef69c1e21d2b 100644 (file)
@@ -197,6 +197,14 @@ defmodule Pleroma.User do
     end
   end
 
+  def maybe_follow(%User{} = follower, %User{info: info} = followed) do
+    if not following?(follower, followed) do
+      follow(follower, followed)
+    else
+      {:ok, follower}
+    end
+  end
+
   def follow(%User{} = follower, %User{info: info} = followed) do
     ap_followers = followed.follower_address
 
@@ -356,19 +364,22 @@ defmodule Pleroma.User do
   def get_follow_requests_query(%User{} = user) do
     from(
       a in Activity,
-      where: fragment(
-        "? ->> 'type' = 'Follow'",
-        a.data
-      ),
-      where: fragment(
-        "? ->> 'state' = 'pending'",
-        a.data
-      ),
-      where: fragment(
-        "? @> ?",
-        a.data,
-        ^%{"object" => user.ap_id}
-      )
+      where:
+        fragment(
+          "? ->> 'type' = 'Follow'",
+          a.data
+        ),
+      where:
+        fragment(
+          "? ->> 'state' = 'pending'",
+          a.data
+        ),
+      where:
+        fragment(
+          "? @> ?",
+          a.data,
+          ^%{"object" => user.ap_id}
+        )
     )
   end
 
@@ -377,8 +388,9 @@ defmodule Pleroma.User do
     reqs = Repo.all(q)
 
     users =
-      Enum.map(reqs, fn (req) -> req.actor end)
-      |> Enum.map(fn (ap_id) -> get_by_ap_id(ap_id) end)
+      Enum.map(reqs, fn req -> req.actor end)
+      |> Enum.uniq()
+      |> Enum.map(fn ap_id -> get_by_ap_id(ap_id) end)
 
     {:ok, users}
   end