mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-11-10 19:29:11 +00:00
Merge branch 'notification-fixes' into 'develop'
Notification performance fixes See merge request pleroma/pleroma!2595
This commit is contained in:
commit
91f73a7592
3 changed files with 18 additions and 16 deletions
|
@ -92,8 +92,9 @@ defmodule Pleroma.Notification do
|
||||||
|> join(:left, [n, a], object in Object,
|
|> join(:left, [n, a], object in Object,
|
||||||
on:
|
on:
|
||||||
fragment(
|
fragment(
|
||||||
"(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
|
"(?->>'id') = COALESCE(?->'object'->>'id', ?->>'object')",
|
||||||
object.data,
|
object.data,
|
||||||
|
a.data,
|
||||||
a.data
|
a.data
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -224,18 +225,8 @@ defmodule Pleroma.Notification do
|
||||||
|> Marker.multi_set_last_read_id(user, "notifications")
|
|> Marker.multi_set_last_read_id(user, "notifications")
|
||||||
|> Repo.transaction()
|
|> Repo.transaction()
|
||||||
|
|
||||||
Notification
|
for_user_query(user)
|
||||||
|> where([n], n.id in ^notification_ids)
|
|> where([n], n.id in ^notification_ids)
|
||||||
|> join(:inner, [n], activity in assoc(n, :activity))
|
|
||||||
|> join(:left, [n, a], object in Object,
|
|
||||||
on:
|
|
||||||
fragment(
|
|
||||||
"(?->>'id') = COALESCE((? -> 'object'::text) ->> 'id'::text)",
|
|
||||||
object.data,
|
|
||||||
a.data
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|> preload([n, a, o], activity: {a, object: o})
|
|
||||||
|> Repo.all()
|
|> Repo.all()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
defmodule Pleroma.Repo.Migrations.ChangeNotificationUserIndex do
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
def change do
|
||||||
|
drop_if_exists(index(:notifications, [:user_id]))
|
||||||
|
create_if_not_exists(index(:notifications, [:user_id, "id desc nulls last"]))
|
||||||
|
end
|
||||||
|
end
|
|
@ -454,8 +454,7 @@ defmodule Pleroma.NotificationTest do
|
||||||
status: "hey again @#{other_user.nickname}!"
|
status: "hey again @#{other_user.nickname}!"
|
||||||
})
|
})
|
||||||
|
|
||||||
[n2, n1] = notifs = Notification.for_user(other_user)
|
[n2, n1] = Notification.for_user(other_user)
|
||||||
assert length(notifs) == 2
|
|
||||||
|
|
||||||
assert n2.id > n1.id
|
assert n2.id > n1.id
|
||||||
|
|
||||||
|
@ -464,7 +463,9 @@ defmodule Pleroma.NotificationTest do
|
||||||
status: "hey yet again @#{other_user.nickname}!"
|
status: "hey yet again @#{other_user.nickname}!"
|
||||||
})
|
})
|
||||||
|
|
||||||
Notification.set_read_up_to(other_user, n2.id)
|
[_, read_notification] = Notification.set_read_up_to(other_user, n2.id)
|
||||||
|
|
||||||
|
assert read_notification.activity.object
|
||||||
|
|
||||||
[n3, n2, n1] = Notification.for_user(other_user)
|
[n3, n2, n1] = Notification.for_user(other_user)
|
||||||
|
|
||||||
|
@ -972,7 +973,9 @@ defmodule Pleroma.NotificationTest do
|
||||||
|
|
||||||
{:ok, _activity} = CommonAPI.post(muted, %{status: "hey @#{user.nickname}"})
|
{:ok, _activity} = CommonAPI.post(muted, %{status: "hey @#{user.nickname}"})
|
||||||
|
|
||||||
assert length(Notification.for_user(user)) == 1
|
[notification] = Notification.for_user(user)
|
||||||
|
|
||||||
|
assert notification.activity.object
|
||||||
end
|
end
|
||||||
|
|
||||||
test "it doesn't return notifications for muted user with notifications" do
|
test "it doesn't return notifications for muted user with notifications" do
|
||||||
|
|
Loading…
Reference in a new issue