aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSadposter <hannah+pleroma@coffee-and-dreams.uk>2019-01-05 22:54:25 +0000
committerkaniini <nenolod@gmail.com>2019-01-05 22:54:25 +0000
commit042852ecf344b4ede15a22ea0279fff8a67b75f0 (patch)
tree474e47d1886b569bae046009077e4dc9009a4cf6 /lib
parent8d047c7a72c961f84518b879b6bd92e7a40dabb2 (diff)
downloadpleroma-042852ecf344b4ede15a22ea0279fff8a67b75f0.tar.gz
Add check to prevent multiple follow notifications from the same user
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/notification.ex7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex
index 51d59870c..c7d01f63b 100644
--- a/lib/pleroma/notification.ex
+++ b/lib/pleroma/notification.ex
@@ -109,7 +109,12 @@ defmodule Pleroma.Notification do
# TODO move to sql, too.
def create_notification(%Activity{} = activity, %User{} = user) do
unless User.blocks?(user, %{ap_id: activity.data["actor"]}) or
- user.ap_id == activity.data["actor"] do
+ user.ap_id == activity.data["actor"] or
+ (activity.data["type"] == "Follow" and
+ Enum.any?(Notification.for_user(user), fn notif ->
+ notif.activity.data["type"] == "Follow" and
+ notif.activity.data["actor"] == activity.data["actor"]
+ end)) do
notification = %Notification{user_id: user.id, activity: activity}
{:ok, notification} = Repo.insert(notification)
Pleroma.Web.Streamer.stream("user", notification)