X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fuser.ex;h=12e0e818ebf0f6951603e53facb56245c5fb1a26;hb=e9703a53265d38302d5659752c8068b5ef4a021f;hp=cfb44ebaa4cb9d306bd9588bc0e983152dcb6927;hpb=465b547c905b4faa26ec1cf5f0175c55430e8041;p=akkoma diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index cfb44ebaa..12e0e818e 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -273,7 +273,7 @@ defmodule Pleroma.User do Pleroma.Config.get([:instance, :account_activation_required]) do user |> Pleroma.UserEmail.account_confirmation_email() - |> Pleroma.Mailer.deliver() + |> Pleroma.Mailer.deliver_async() else {:ok, :noop} end @@ -772,6 +772,12 @@ defmodule Pleroma.User do Enum.uniq_by(fts_results ++ trigram_results, & &1.id) end + def all_except_one(user) do + query = from(u in User, where: u.id != ^user.id) + + Repo.all(query) + end + defp do_search(subquery, for_user, options \\ []) do q = from( @@ -889,21 +895,27 @@ defmodule Pleroma.User do end def mute(muter, %User{ap_id: ap_id}) do - mutes = muter.info["mutes"] || [] - new_mutes = Enum.uniq([ap_id | mutes]) - new_info = Map.put(muter.info, "mutes", new_mutes) + info_cng = + muter.info + |> User.Info.add_to_mutes(ap_id) - User.info_changeset(muter, %{info: new_info}) - |> update_and_set_cache() + cng = + change(muter) + |> put_embed(:info, info_cng) + + update_and_set_cache(cng) end - def unmute(user, %{ap_id: ap_id}) do - mutes = user.info["mutes"] || [] - new_mutes = List.delete(mutes, ap_id) - new_info = Map.put(user.info, "mutes", new_mutes) + def unmute(muter, %{ap_id: ap_id}) do + info_cng = + muter.info + |> User.Info.remove_from_mutes(ap_id) + + cng = + change(muter) + |> put_embed(:info, info_cng) - User.info_changeset(user, %{info: new_info}) - |> update_and_set_cache() + update_and_set_cache(cng) end def block(blocker, %User{ap_id: ap_id} = blocked) do @@ -948,7 +960,7 @@ defmodule Pleroma.User do update_and_set_cache(cng) end - def mutes?(user, %{ap_id: ap_id}), do: Enum.member?(user.info["mutes"] || [], ap_id) + def mutes?(user, %{ap_id: ap_id}), do: Enum.member?(user.info.mutes, ap_id) def blocks?(user, %{ap_id: ap_id}) do blocks = user.info.blocks @@ -961,6 +973,9 @@ defmodule Pleroma.User do end) 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)) @@ -1275,4 +1290,13 @@ defmodule Pleroma.User do inserted_at: NaiveDateTime.utc_now() } end + + def all_superusers do + from( + u in User, + where: u.local == true, + where: fragment("?->'is_admin' @> 'true' OR ?->'is_moderator' @> 'true'", u.info, u.info) + ) + |> Repo.all() + end end