Add User.add_alias/2 and User.alias_users/1

Ref: emit-move
This commit is contained in:
Tusooa Zhu 2021-09-12 09:40:20 -04:00
commit 60081a8818
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
2 changed files with 71 additions and 0 deletions

View file

@ -2270,6 +2270,25 @@ 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
# Internal function; public one is `deactivate/2`
defp set_activation_status(user, status) do
user