diff options
author | Sergey Suprunenko <suprunenko.s@gmail.com> | 2019-05-16 20:04:08 +0000 |
---|---|---|
committer | feld <feld@feld.me> | 2019-05-16 20:04:08 +0000 |
commit | 2c303afc8b25ca92eaa229df3e9e4737856e890c (patch) | |
tree | e643ab9cba86a6556cb18772957be612be47986e /lib/pleroma | |
parent | 0f8892686a659283d0242998b08e9c6d95ccb2c3 (diff) | |
download | pleroma-2c303afc8b25ca92eaa229df3e9e4737856e890c.tar.gz |
Remove duplicated entries in users' following lists
Diffstat (limited to 'lib/pleroma')
-rw-r--r-- | lib/pleroma/user.ex | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 1aa966dfc..9ffb61300 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -166,7 +166,7 @@ defmodule Pleroma.User do def update_changeset(struct, params \\ %{}) do struct - |> cast(params, [:bio, :name, :avatar]) + |> cast(params, [:bio, :name, :avatar, :following]) |> unique_constraint(:nickname) |> validate_format(:nickname, local_nickname_regex()) |> validate_length(:bio, max: 5000) @@ -709,6 +709,18 @@ defmodule Pleroma.User do end end + def remove_duplicated_following(%User{following: following} = user) do + uniq_following = Enum.uniq(following) + + if length(following) == length(uniq_following) do + {:ok, user} + else + user + |> update_changeset(%{following: uniq_following}) + |> update_and_set_cache() + end + end + @spec get_users_from_set([String.t()], boolean()) :: [User.t()] def get_users_from_set(ap_ids, local_only \\ true) do criteria = %{ap_id: ap_ids, deactivated: false} |