Add subscribed status to user view
[akkoma] / lib / pleroma / user.ex
index b7cab8642c53bc63cbbade9aebe93ab2b4c4d168..de7ed6e72fb96221ec5a08849a66cfa9b073f999 100644 (file)
@@ -935,10 +935,10 @@ defmodule Pleroma.User do
 
   def unsubscribe(unsubscriber, %{ap_id: ap_id}) do
     info_cng =
-      subscriber.info
+      unsubscriber.info
       |> User.Info.remove_from_subscriptions(ap_id)
 
-    change(subscriber)
+    change(unsubscriber)
     |> put_embed(:info, info_cng)
     |> update_and_set_cache()
   end
@@ -999,12 +999,25 @@ defmodule Pleroma.User do
       end)
   end
 
+  def subscribed_to?(user, %{ap_id: ap_id}) do
+    subs = user.info.subscriptions
+    Enum.member?(subs, ap_id)
+  end
+
   def muted_users(user),
     do: Repo.all(from(u in User, where: u.ap_id in ^user.info.mutes))
 
   def blocked_users(user),
     do: Repo.all(from(u in User, where: u.ap_id in ^user.info.blocks))
 
+  def subscribed_users(user),
+    do:
+      Repo.all(
+        from(u in User,
+          where: fragment("?->'subscriptions' @> ?", u.info, ^user.ap_id)
+        )
+      )
+
   def block_domain(user, domain) do
     info_cng =
       user.info