summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2019-06-22 06:44:47 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2019-06-22 06:44:47 +0000
commit642630140702cb22cafc2f2307c2ce2c031c95c7 (patch)
tree8044ffa48f643c89ee92aca7cf4add5c6dfffedf
parentddd04d1c52a0ce7cc44f14c736cb2271ecf279e9 (diff)
downloadpleroma-642630140702cb22cafc2f2307c2ce2c031c95c7.tar.gz
pleroma-642630140702cb22cafc2f2307c2ce2c031c95c7.zip
notifications: fix notification generation for non-create activities
in 300d94c62, an Object.normalize() call was introduced. calling Object.normalize() on an activity with a non-object URI (say, a user) causes Really Bad Things to happen. so don't do that.
-rw-r--r--lib/pleroma/notification.ex10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex
index e25692006..a414afbbf 100644
--- a/lib/pleroma/notification.ex
+++ b/lib/pleroma/notification.ex
@@ -127,8 +127,7 @@ defmodule Pleroma.Notification do
end
end
- def create_notifications(%Activity{data: %{"to" => _, "type" => type}} = activity)
- when type in ["Create", "Like", "Announce", "Follow"] do
+ def create_notifications(%Activity{data: %{"to" => _, "type" => "Create"}} = activity) do
object = Object.normalize(activity)
unless object && object.data["type"] == "Answer" do
@@ -140,6 +139,13 @@ defmodule Pleroma.Notification do
end
end
+ def create_notifications(%Activity{data: %{"to" => _, "type" => type}} = activity)
+ when type in ["Like", "Announce", "Follow"] do
+ users = get_notified_from_activity(activity)
+ notifications = Enum.map(users, fn user -> create_notification(activity, user) end)
+ {:ok, notifications}
+ end
+
def create_notifications(_), do: {:ok, []}
# TODO move to sql, too.