diff options
author | Tusooa Zhu <tusooa@kazv.moe> | 2021-09-12 09:40:20 -0400 |
---|---|---|
committer | Tusooa Zhu <tusooa@kazv.moe> | 2021-12-28 01:11:07 -0500 |
commit | 60081a88181e7af9b6110e9b7456e56f33c16f6b (patch) | |
tree | d4ca1392fb22ea87130f54c5502b681e7ba8abce /lib | |
parent | 3092558bc1cef6cbea12284de17c13175b8d97ab (diff) | |
download | pleroma-60081a88181e7af9b6110e9b7456e56f33c16f6b.tar.gz pleroma-60081a88181e7af9b6110e9b7456e56f33c16f6b.zip |
Add User.add_alias/2 and User.alias_users/1
Ref: emit-move
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/user.ex | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 390de1e2d..ff56927de 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -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 |