Skip to content
Snippets Groups Projects
Unverified Commit 11a6bd89 authored by tamaina's avatar tamaina Committed by GitHub
Browse files

fix: some fixes of multiple notification read (#8819)

* fix: limit multiple notification read

* fix

* fix
parent 3a987b00
No related branches found
Tags 13.11.0.beta-1
No related merge requests found
......@@ -9,6 +9,8 @@ export async function readNotification(
userId: User['id'],
notificationIds: Notification['id'][]
) {
if (notificationIds.length === 0) return;
// Update documents
await Notifications.update({
id: In(notificationIds),
......
......@@ -34,7 +34,11 @@ export const paramDef = {
{
type: 'object',
properties: {
notificationIds: { type: 'array', items: { type: 'string', format: 'misskey:id' } },
notificationIds: {
type: 'array',
items: { type: 'string', format: 'misskey:id' },
maxItems: 100,
},
},
required: ['notificationIds'],
},
......
......@@ -37,12 +37,22 @@ class SwNotificationReadManager {
account.queue.push(data.body.id as string);
if (account.queue.length >= 20) {
if (account.timeout) clearTimeout(account.timeout);
const notificationIds = account.queue;
account.queue = [];
await api('notifications/read', data.userId, { notificationIds });
return;
}
// 最後の呼び出しから200ms待ってまとめて処理する
if (account.timeout) clearTimeout(account.timeout);
account.timeout = setTimeout(() => {
account.timeout = null;
api('notifications/read', data.userId, { notificationIds: account.queue });
const notificationIds = account.queue;
account.queue = [];
api('notifications/read', data.userId, { notificationIds });
}, 200);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment