projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
activitypub: short-circuit is_public?() with directMessage flag check
[akkoma]
/
lib
/
pleroma
/
notification.ex
diff --git
a/lib/pleroma/notification.ex
b/lib/pleroma/notification.ex
index a40b8f8c936a6844afba2773763a61864cc538ff..c7d01f63b83517c36b15779ec9a9772524d5b6d4 100644
(file)
--- a/
lib/pleroma/notification.ex
+++ b/
lib/pleroma/notification.ex
@@
-1,3
+1,7
@@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
defmodule Pleroma.Notification do
use Ecto.Schema
alias Pleroma.{User, Activity, Notification, Repo, Object}
defmodule Pleroma.Notification do
use Ecto.Schema
alias Pleroma.{User, Activity, Notification, Repo, Object}
@@
-76,9
+80,8
@@
defmodule Pleroma.Notification do
end
def clear(user) do
end
def clear(user) do
- query = from(n in Notification, where: n.user_id == ^user.id)
-
- Repo.delete_all(query)
+ from(n in Notification, where: n.user_id == ^user.id)
+ |> Repo.delete_all()
end
def dismiss(%{id: user_id} = _user, id) do
end
def dismiss(%{id: user_id} = _user, id) do
@@
-106,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
# 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)
notification = %Notification{user_id: user.id, activity: activity}
{:ok, notification} = Repo.insert(notification)
Pleroma.Web.Streamer.stream("user", notification)
@@
-118,7
+126,7
@@
defmodule Pleroma.Notification do
def get_notified_from_activity(activity, local_only \\ true)
def get_notified_from_activity(
def get_notified_from_activity(activity, local_only \\ true)
def get_notified_from_activity(
- %Activity{data: %{"to" => _, "type" => type} = data} = activity,
+ %Activity{data: %{"to" => _, "type" => type} =
_
data} = activity,
local_only
)
when type in ["Create", "Like", "Announce", "Follow"] do
local_only
)
when type in ["Create", "Like", "Announce", "Follow"] do
@@
-131,18
+139,18
@@
defmodule Pleroma.Notification do
User.get_users_from_set(recipients, local_only)
end
User.get_users_from_set(recipients, local_only)
end
- def get_notified_from_activity(_, local_only), do: []
+ def get_notified_from_activity(_,
_
local_only), do: []
defp maybe_notify_to_recipients(
recipients,
defp maybe_notify_to_recipients(
recipients,
- %Activity{data: %{"to" => to, "type" =>
type}} =
activity
+ %Activity{data: %{"to" => to, "type" =>
_type}} = _
activity
) do
recipients ++ to
end
defp maybe_notify_mentioned_recipients(
recipients,
) do
recipients ++ to
end
defp maybe_notify_mentioned_recipients(
recipients,
- %Activity{data: %{"to" =>
to, "type" => type} = data} =
activity
+ %Activity{data: %{"to" =>
_to, "type" => type} = data} = _
activity
)
when type == "Create" do
object = Object.normalize(data["object"])
)
when type == "Create" do
object = Object.normalize(data["object"])