diff options
author | Alex Gleason <alex@alexgleason.me> | 2020-07-16 22:19:17 -0500 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2020-07-17 16:17:49 -0500 |
commit | d0eb43b58b0a191b727360cf4523329d2dc60adc (patch) | |
tree | f8c2adc32f2f242ea0792295662dacbff8211972 /lib/pleroma/user.ex | |
parent | 3a2b2cb6f2d6ce39ae0d246649189c021c535992 (diff) | |
download | pleroma-d0eb43b58b0a191b727360cf4523329d2dc60adc.tar.gz |
Add account aliases
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 9240e912d..9b756c9a0 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -89,6 +89,7 @@ defmodule Pleroma.User do field(:keys, :string) field(:public_key, :string) field(:ap_id, :string) + field(:ap_aliases, {:array, :string}, default: []) field(:avatar, :map, default: %{}) field(:local, :boolean, default: true) field(:follower_address, :string) @@ -2268,4 +2269,27 @@ defmodule Pleroma.User do |> Map.put(:bio, HTML.filter_tags(user.bio, filter)) |> Map.put(:fields, fields) end + + def add_aliases(%User{} = user, aliases) when is_list(aliases) do + alias_set = + (user.ap_aliases ++ aliases) + |> MapSet.new() + |> MapSet.to_list() + + user + |> change(%{ap_aliases: alias_set}) + |> Repo.update() + end + + def delete_aliases(%User{} = user, aliases) when is_list(aliases) do + alias_set = + user.ap_aliases + |> MapSet.new() + |> MapSet.difference(MapSet.new(aliases)) + |> MapSet.to_list() + + user + |> change(%{ap_aliases: alias_set}) + |> Repo.update() + end end |