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
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(
)
end
- def mute(muter, %User{ap_id: ap_id} = muted) do
- if following?(muter, muter) do
- unfollow(muter, muter)
- end
+ def mute(muter, %User{ap_id: ap_id}) do
+ info_cng =
+ muter.info
+ |> User.Info.add_to_mutes(ap_id)
- mutes = muter.info["mutes"] || []
- new_mutes = Enum.uniq([ap_id | mutes])
- new_info = Map.put(muter.info, "mutes", new_mutes)
+ cng =
+ change(muter)
+ |> put_embed(:info, info_cng)
- cs = User.info_changeset(muter, %{info: new_info})
- update_and_set_cache(cs)
+ 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)
- cs = User.info_changeset(user, %{info: new_info})
- update_and_set_cache(cs)
+ update_and_set_cache(cng)
end
def block(blocker, %User{ap_id: ap_id} = blocked) 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
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))
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