X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fnotification.ex;h=d8878338ee5859b90f9a1ca843a4afc4871e4d69;hb=0f132b802dde7f217ecb07767e0d34e3edb517b7;hp=32f13df69c31a6400d77156b6fdfcaba36e0289d;hpb=28a17c2dc70f33734aceeb499f38cb804489788f;p=akkoma diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index 32f13df69..d8878338e 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -68,7 +68,6 @@ defmodule Pleroma.Notification do follow_request mention move - pleroma:chat_mention pleroma:emoji_reaction pleroma:report reblog @@ -128,6 +127,7 @@ defmodule Pleroma.Notification do |> where([user_actor: user_actor], user_actor.is_active) |> exclude_notification_muted(user, exclude_notification_muted_opts) |> exclude_blocked(user, exclude_blocked_opts) + |> exclude_blockers(user) |> exclude_filtered(user) |> exclude_visibility(opts) end @@ -141,6 +141,17 @@ defmodule Pleroma.Notification do |> FollowingRelationship.keep_following_or_not_domain_blocked(user) end + defp exclude_blockers(query, user) do + if Pleroma.Config.get([:activitypub, :blockers_visible]) == true do + query + else + blocker_ap_ids = User.incoming_relationships_ungrouped_ap_ids(user, [:block]) + + query + |> where([n, a], a.actor not in ^blocker_ap_ids) + end + end + defp exclude_notification_muted(query, _, %{@include_muted_option => true}) do query end @@ -329,6 +340,14 @@ defmodule Pleroma.Notification do |> Repo.delete_all() end + def destroy_multiple_from_types(%{id: user_id}, types) do + from(n in Notification, + where: n.user_id == ^user_id, + where: n.type in ^types + ) + |> Repo.delete_all() + end + def dismiss(%Pleroma.Activity{} = activity) do Notification |> where([n], n.activity_id == ^activity.id) @@ -424,16 +443,7 @@ defmodule Pleroma.Notification do end end - defp type_from_activity_object(%{data: %{"type" => "Create", "object" => %{}}}), do: "mention" - - defp type_from_activity_object(%{data: %{"type" => "Create"}} = activity) do - object = Object.get_by_ap_id(activity.data["object"]) - - case object && object.data["type"] do - "ChatMessage" -> "pleroma:chat_mention" - _ -> "mention" - end - end + defp type_from_activity_object(%{data: %{"type" => "Create"}}), do: "mention" # TODO move to sql, too. def create_notification(%Activity{} = activity, %User{} = user, opts \\ []) do