From 1736955694336096dd0e6e999c43fefa4c55801b Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Tue, 25 Mar 2025 13:29:03 +0900
Subject: [PATCH] =?UTF-8?q?fix(backend):=20=E8=87=AA=E5=88=86=E3=81=8C?=
 =?UTF-8?q?=E3=82=AA=E3=83=BC=E3=83=8A=E3=83=BC=E3=81=A7=E3=81=AF=E3=81=AA?=
 =?UTF-8?q?=E3=81=84=E5=8F=82=E5=8A=A0=E4=B8=AD=E3=81=AE=E3=83=AB=E3=83=BC?=
 =?UTF-8?q?=E3=83=A0=E3=81=AB=E3=83=A1=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8?=
 =?UTF-8?q?=E3=82=92=E9=80=81=E4=BF=A1=E3=81=99=E3=82=8B=E3=81=A8=E4=B8=8D?=
 =?UTF-8?q?=E5=BF=85=E8=A6=81=E3=81=AA=E9=80=9A=E7=9F=A5=E3=81=8C=E7=99=BA?=
 =?UTF-8?q?=E7=94=9F=E3=81=99=E3=82=8B=E3=81=AE=E3=82=92=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 packages/backend/src/core/ChatService.ts | 12 +++++++-----
 1 file 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);