fix: 通知インジケータが光りっぱなしになる問題を修正 (#10483)
* fix(misskey-js): ストリームがstringで送信される場合があるのを修正 * pnpm run api * force read notification * fix competition
This commit is contained in:
parent
712c60106a
commit
2650a7a5b8
4 changed files with 25 additions and 22 deletions
|
@ -43,6 +43,7 @@ export class NotificationService implements OnApplicationShutdown {
|
|||
@bindThis
|
||||
public async readAllNotification(
|
||||
userId: User['id'],
|
||||
force = false,
|
||||
) {
|
||||
const latestReadNotificationId = await this.redisClient.get(`latestReadNotification:${userId}`);
|
||||
|
||||
|
@ -57,7 +58,7 @@ export class NotificationService implements OnApplicationShutdown {
|
|||
|
||||
this.redisClient.set(`latestReadNotification:${userId}`, latestNotificationId);
|
||||
|
||||
if (latestReadNotificationId == null || (latestReadNotificationId < latestNotificationId)) {
|
||||
if (force || latestReadNotificationId == null || (latestReadNotificationId < latestNotificationId)) {
|
||||
return this.postReadAllNotifications(userId);
|
||||
}
|
||||
}
|
||||
|
@ -95,7 +96,7 @@ export class NotificationService implements OnApplicationShutdown {
|
|||
...data,
|
||||
} as Notification;
|
||||
|
||||
this.redisClient.xadd(
|
||||
const redisIdPromise = this.redisClient.xadd(
|
||||
`notificationTimeline:${notifieeId}`,
|
||||
'MAXLEN', '~', '300',
|
||||
`${this.idService.parse(notification.id).date.getTime()}-*`,
|
||||
|
@ -109,7 +110,7 @@ export class NotificationService implements OnApplicationShutdown {
|
|||
// 2秒経っても(今回作成した)通知が既読にならなかったら「未読の通知がありますよ」イベントを発行する
|
||||
setTimeout(2000, 'unread notification', { signal: this.#shutdownController.signal }).then(async () => {
|
||||
const latestReadNotificationId = await this.redisClient.get(`latestReadNotification:${notifieeId}`);
|
||||
if (latestReadNotificationId && (latestReadNotificationId >= notification.id)) return;
|
||||
if (latestReadNotificationId && (latestReadNotificationId >= await redisIdPromise)) return;
|
||||
|
||||
this.globalEventService.publishMainStream(notifieeId, 'unreadNotification', packed);
|
||||
this.pushNotificationService.pushNotification(notifieeId, 'notification', packed);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue