mandate published on notes
[akkoma] / lib / pleroma / list.ex
index c5db1cb62614f3cc10daa4ef63b6cdb3dff14733..fe5721c342de61fcf2b71a0f5c8c985196bdfaee 100644 (file)
@@ -1,5 +1,5 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.List do
@@ -84,22 +84,11 @@ defmodule Pleroma.List do
   end
 
   # Get lists to which the account belongs.
-  def get_lists_account_belongs(%User{} = owner, account_id) do
-    user = User.get_cached_by_id(account_id)
-
-    query =
-      from(
-        l in Pleroma.List,
-        where:
-          l.user_id == ^owner.id and
-            fragment(
-              "? = ANY(?)",
-              ^user.follower_address,
-              l.following
-            )
-      )
-
-    Repo.all(query)
+  def get_lists_account_belongs(%User{} = owner, user) do
+    Pleroma.List
+    |> where([l], l.user_id == ^owner.id)
+    |> where([l], fragment("? = ANY(?)", ^user.follower_address, l.following))
+    |> Repo.all()
   end
 
   def rename(%Pleroma.List{} = list, title) do
@@ -124,11 +113,15 @@ defmodule Pleroma.List do
     end
   end
 
-  def follow(%Pleroma.List{following: following} = list, %User{} = followed) do
+  def follow(%Pleroma.List{id: id}, %User{} = followed) do
+    list = Repo.get(Pleroma.List, id)
+    %{following: following} = list
     update_follows(list, %{following: Enum.uniq([followed.follower_address | following])})
   end
 
-  def unfollow(%Pleroma.List{following: following} = list, %User{} = unfollowed) do
+  def unfollow(%Pleroma.List{id: id}, %User{} = unfollowed) do
+    list = Repo.get(Pleroma.List, id)
+    %{following: following} = list
     update_follows(list, %{following: List.delete(following, unfollowed.follower_address)})
   end