X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fuser.ex;h=b256c87e1f7d36047488e2929fe03c534e9dd79c;hb=99ced95d3bf4b49246e6946568cdd31b4173a25f;hp=dc6c661eaf03486f79d99a1045f80b24e33b75d0;hpb=7989b84d010d74123ee78f68fda4bc21746d4f87;p=akkoma diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index dc6c661ea..b256c87e1 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -2288,6 +2288,38 @@ defmodule Pleroma.User do |> update_and_set_cache() end + def alias_users(user) do + user.also_known_as + |> Enum.map(&User.get_cached_by_ap_id/1) + |> Enum.filter(fn user -> user != nil end) + end + + def add_alias(user, new_alias_user) do + current_aliases = user.also_known_as || [] + new_alias_ap_id = new_alias_user.ap_id + + if new_alias_ap_id in current_aliases do + {:ok, user} + else + user + |> cast(%{also_known_as: current_aliases ++ [new_alias_ap_id]}, [:also_known_as]) + |> update_and_set_cache() + end + end + + def delete_alias(user, alias_user) do + current_aliases = user.also_known_as || [] + alias_ap_id = alias_user.ap_id + + if alias_ap_id in current_aliases do + user + |> cast(%{also_known_as: current_aliases -- [alias_ap_id]}, [:also_known_as]) + |> update_and_set_cache() + else + {:error, :no_such_alias} + end + end + # Internal function; public one is `deactivate/2` defp set_activation_status(user, status) do user