diff options
author | dtluna <dtluna@openmailbox.org> | 2017-04-12 17:34:36 +0300 |
---|---|---|
committer | dtluna <dtluna@openmailbox.org> | 2017-04-12 17:34:36 +0300 |
commit | 65ef18a7157f8cfcc494ad7a72ce083e79e38d26 (patch) | |
tree | 534f449991e337deec86dd40f770a63338f26f9b /lib/pleroma/user.ex | |
parent | b5e94bf9301713fd9eb3b80dbcf64ae6782092bc (diff) | |
download | pleroma-65ef18a7157f8cfcc494ad7a72ce083e79e38d26.tar.gz |
Add error messages for repeated follows and unfollows
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index c77704db0..5f5bc1c38 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -31,22 +31,31 @@ defmodule Pleroma.User do def follow(%User{} = follower, %User{} = followed) do ap_followers = User.ap_followers(followed) - following = [ap_followers | follower.following] - |> Enum.uniq + if following?(follower, followed) do + { :error, + "Could not follow user: #{followed.nickname} is already on your list." } + else + following = [ap_followers | follower.following] + |> Enum.uniq - follower - |> follow_changeset(%{following: following}) - |> Repo.update + follower + |> follow_changeset(%{following: following}) + |> Repo.update + end end def unfollow(%User{} = follower, %User{} = followed) do ap_followers = User.ap_followers(followed) - following = follower.following - |> List.delete(ap_followers) + if following?(follower, followed) do + following = follower.following + |> List.delete(ap_followers) - follower - |> follow_changeset(%{following: following}) - |> Repo.update + follower + |> follow_changeset(%{following: following}) + |> Repo.update + else + { :error, "Not subscribed!" } + end end def following?(%User{} = follower, %User{} = followed) do |