summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-05-02 12:14:06 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-05-02 12:14:06 +0900
commit8dc5edde76c1824e5f8689aea10822a794f21f5b (patch)
tree9e78d36287dcf5fe25013b55f2fe215285edc140
parentUpdate CHANGELOG.md (diff)
downloadmisskey-8dc5edde76c1824e5f8689aea10822a794f21f5b.tar.gz
misskey-8dc5edde76c1824e5f8689aea10822a794f21f5b.tar.bz2
misskey-8dc5edde76c1824e5f8689aea10822a794f21f5b.zip
fix(backend): フォローリクエストの通知が残る問題を修正
Fix #10611
-rw-r--r--CHANGELOG.md1
-rw-r--r--packages/backend/src/core/entities/NotificationEntityService.ts14
2 files changed, 14 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fc19adff40..307ff52370 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -30,6 +30,7 @@
* デフォルトがオフになるので、ロールタイムラインを表示する場合はオンにしてください。
- カスタム絵文字のライセンスを複数でセットできるようになりました。
- 管理者が予約ユーザー名を設定できるようになりました。
+- フォローリクエストの通知が残る問題を修正
### Client
- 通知の表示をカスタマイズできるように
diff --git a/packages/backend/src/core/entities/NotificationEntityService.ts b/packages/backend/src/core/entities/NotificationEntityService.ts
index 0dc63d969f..d76b863957 100644
--- a/packages/backend/src/core/entities/NotificationEntityService.ts
+++ b/packages/backend/src/core/entities/NotificationEntityService.ts
@@ -2,7 +2,7 @@ import { Inject, Injectable } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { In } from 'typeorm';
import { DI } from '@/di-symbols.js';
-import type { AccessTokensRepository, NoteReactionsRepository, NotesRepository, User, UsersRepository } from '@/models/index.js';
+import type { AccessTokensRepository, FollowRequestsRepository, NoteReactionsRepository, NotesRepository, User, UsersRepository } from '@/models/index.js';
import { awaitAll } from '@/misc/prelude/await-all.js';
import type { Notification } from '@/models/entities/Notification.js';
import type { Note } from '@/models/entities/Note.js';
@@ -35,6 +35,9 @@ export class NotificationEntityService implements OnModuleInit {
@Inject(DI.noteReactionsRepository)
private noteReactionsRepository: NoteReactionsRepository,
+ @Inject(DI.followRequestsRepository)
+ private followRequestsRepository: FollowRequestsRepository,
+
@Inject(DI.accessTokensRepository)
private accessTokensRepository: AccessTokensRepository,
@@ -131,6 +134,15 @@ export class NotificationEntityService implements OnModuleInit {
});
const packedUsers = new Map(packedUsersArray.map(p => [p.id, p]));
+ // 既に解決されたフォローリクエストの通知を除外
+ const followRequestNotifications = validNotifications.filter(x => x.type === 'receiveFollowRequest');
+ if (followRequestNotifications.length > 0) {
+ const reqs = await this.followRequestsRepository.find({
+ where: { followerId: In(followRequestNotifications.map(x => x.notifierId!)) },
+ });
+ validNotifications = validNotifications.filter(x => (x.type !== 'receiveFollowRequest') || reqs.some(r => r.followerId === x.notifierId));
+ }
+
return await Promise.all(validNotifications.map(x => this.pack(x, meId, {}, {
packedNotes,
packedUsers,