summaryrefslogtreecommitdiff
path: root/packages/backend
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-03-25 13:29:03 +0900
committersyuilo <4439005+syuilo@users.noreply.github.com>2025-03-25 13:29:03 +0900
commit1736955694336096dd0e6e999c43fefa4c55801b (patch)
tree90ea8b7e80eacc269af5de135d290598f08fa622 /packages/backend
parentenhance(frontend): Enterでチャットのメッセージを送信できる... (diff)
downloadmisskey-1736955694336096dd0e6e999c43fefa4c55801b.tar.gz
misskey-1736955694336096dd0e6e999c43fefa4c55801b.tar.bz2
misskey-1736955694336096dd0e6e999c43fefa4c55801b.zip
fix(backend): 自分がオーナーではない参加中のルームにメッセージを送信すると不必要な通知が発生するのを修正
Diffstat (limited to 'packages/backend')
-rw-r--r--packages/backend/src/core/ChatService.ts12
1 files changed, 7 insertions, 5 deletions
diff --git a/packages/backend/src/core/ChatService.ts b/packages/backend/src/core/ChatService.ts
index 57e33af107..3b73a0f6ba 100644
--- a/packages/backend/src/core/ChatService.ts
+++ b/packages/backend/src/core/ChatService.ts
@@ -199,6 +199,8 @@ export class ChatService {
throw new Error('you are not a member of the room');
}
+ const membershipsOtherThanMe = memberships.filter(member => member.userId !== fromUser.id);
+
const message = {
id: this.idService.gen(),
fromUserId: fromUser.id,
@@ -216,7 +218,7 @@ export class ChatService {
this.globalEventService.publishChatRoomStream(toRoom.id, 'message', packedMessage);
const redisPipeline = this.redisClient.pipeline();
- for (const membership of memberships) {
+ for (const membership of membershipsOtherThanMe) {
if (membership.isMuted) continue;
redisPipeline.set(`newRoomChatMessageExists:${membership.userId}:${toRoom.id}`, message.id);
@@ -227,7 +229,7 @@ export class ChatService {
// 3秒経っても既読にならなかったらイベント発行
setTimeout(async () => {
const redisPipeline = this.redisClient.pipeline();
- for (const membership of memberships) {
+ for (const membership of membershipsOtherThanMe) {
redisPipeline.get(`newRoomChatMessageExists:${membership.userId}:${toRoom.id}`);
}
const markers = await redisPipeline.exec();
@@ -237,12 +239,12 @@ export class ChatService {
const packedMessageForTo = await this.chatEntityService.packMessageDetailed(inserted);
- for (let i = 0; i < memberships.length; i++) {
+ for (let i = 0; i < membershipsOtherThanMe.length; i++) {
const marker = markers[i][1];
if (marker == null) continue;
- this.globalEventService.publishMainStream(memberships[i].userId, 'newChatMessage', packedMessageForTo);
- //this.pushNotificationService.pushNotification(memberships[i].userId, 'newChatMessage', packedMessageForTo);
+ this.globalEventService.publishMainStream(membershipsOtherThanMe[i].userId, 'newChatMessage', packedMessageForTo);
+ //this.pushNotificationService.pushNotification(membershipsOtherThanMe[i].userId, 'newChatMessage', packedMessageForTo);
}
}, 3000);