html: allow scrubbing policies to be stackable
[akkoma] / lib / pleroma / user.ex
index 88293a4f396d7eb3551786b61a0fb80ffdeaf64f..1dad30e876f6265d5835e7604ded15aea50ca3a8 100644 (file)
@@ -68,7 +68,8 @@ defmodule Pleroma.User do
       following_count: length(user.following) - oneself,
       note_count: user.info["note_count"] || 0,
       follower_count: user.info["follower_count"] || 0,
-      locked: user.info["locked"] || false
+      locked: user.info["locked"] || false,
+      default_scope: user.info["default_scope"] || "public"
     }
   end
 
@@ -467,10 +468,15 @@ defmodule Pleroma.User do
 
   def get_notified_from_activity(%Activity{recipients: to, data: %{"type" => "Announce"} = data}) do
     object = Object.normalize(data["object"])
+    actor = User.get_cached_by_ap_id(data["actor"])
 
     # ensure that the actor who published the announced object appears only once
     to =
-      (to ++ [object.data["actor"]])
+      if actor.nickname != nil do
+        to ++ [object.data["actor"]]
+      else
+        to
+      end
       |> Enum.uniq()
 
     query = get_notified_from_activity_query(to)
@@ -603,6 +609,14 @@ defmodule Pleroma.User do
     )
   end
 
+  def moderator_user_query() do
+    from(
+      u in User,
+      where: u.local == true,
+      where: fragment("?->'is_moderator' @> 'true'", u.info)
+    )
+  end
+
   def deactivate(%User{} = user) do
     new_info = Map.put(user.info, "deactivated", true)
     cs = User.info_changeset(user, %{info: new_info})