diff options
author | rinpatch <rin@patch.cx> | 2021-02-16 10:11:41 +0000 |
---|---|---|
committer | rinpatch <rin@patch.cx> | 2021-02-16 10:11:41 +0000 |
commit | 13e324abe9af5d58137adda7caec115ed3305e95 (patch) | |
tree | bc680f2b66fa93a859a741ba1e1f5e4e09ffba0d /lib | |
parent | 8910303f71b6fa0a1fd79531ec983e1a9c5dc5ac (diff) | |
parent | 284504f689b03e23f7db0033a53dbf953663e395 (diff) | |
download | pleroma-13e324abe9af5d58137adda7caec115ed3305e95.tar.gz |
Merge branch '2053-notifications-actor-is-active-refactoring' into 'develop'
[#2053] `Notification.for_user_query/2` timeout fix
Closes #2053
See merge request pleroma/pleroma!3318
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/notification.ex | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index 1970fbf65..7efbdc49a 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -112,13 +112,6 @@ defmodule Pleroma.Notification do Notification |> where(user_id: ^user.id) - |> where( - [n, a], - fragment( - "? not in (SELECT ap_id FROM users WHERE is_active = 'false')", - a.actor - ) - ) |> join(:inner, [n], activity in assoc(n, :activity)) |> join(:left, [n, a], object in Object, on: @@ -129,7 +122,9 @@ defmodule Pleroma.Notification do a.data ) ) + |> join(:inner, [_n, a], u in User, on: u.ap_id == a.actor, as: :user_actor) |> preload([n, a, o], activity: {a, object: o}) + |> where([user_actor: user_actor], user_actor.is_active) |> exclude_notification_muted(user, exclude_notification_muted_opts) |> exclude_blocked(user, exclude_blocked_opts) |> exclude_filtered(user) @@ -156,9 +151,10 @@ defmodule Pleroma.Notification do query |> where([n, a], a.actor not in ^notification_muted_ap_ids) |> join(:left, [n, a], tm in ThreadMute, - on: tm.user_id == ^user.id and tm.context == fragment("?->>'context'", a.data) + on: tm.user_id == ^user.id and tm.context == fragment("?->>'context'", a.data), + as: :thread_mute ) - |> where([n, a, o, tm], is_nil(tm.user_id)) + |> where([thread_mute: thread_mute], is_nil(thread_mute.user_id)) end defp exclude_filtered(query, user) do |