summaryrefslogtreecommitdiff
path: root/lib/pleroma/user.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r--lib/pleroma/user.ex20
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index ea72af517..1b426c9d7 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -82,7 +82,7 @@ defmodule Pleroma.User do
endorsement: [
endorser_endorsements: :endorsed_users,
endorsee_endorsements: :endorser_users
- ],
+ ]
]
@cachex Pleroma.Config.get([:cachex, :provider], Cachex)
@@ -1522,10 +1522,20 @@ defmodule Pleroma.User do
end
def endorse(%User{} = endorser, %User{} = target) do
- if not following?(endorser, target) do
- {:error, "Could not endorse: You are not following #{target.nickname}"}
- else
- UserRelationship.create_endorsement(endorser, target)
+ with max_endorsed_users <- Pleroma.Config.get([:instance, :max_endorsed_users], 0),
+ endorsed_users <-
+ User.endorsed_users_relation(endorser)
+ |> Pleroma.Repo.all() do
+ cond do
+ Enum.count(endorsed_users) >= max_endorsed_users ->
+ {:error, "You have already pinned the maximum number of users"}
+
+ not following?(endorser, target) ->
+ {:error, "Could not endorse: You are not following #{target.nickname}"}
+
+ true ->
+ UserRelationship.create_endorsement(endorser, target)
+ end
end
end