merge: Fix stuck "new chat message" indicators when a room is deleted (!1216)

View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/1216

Approved-by: dakkar <dakkar@thenautilus.net>
Approved-by: Marie <github@yuugi.dev>
This commit is contained in:
Hazelnoot 2025-08-16 19:08:33 +00:00
commit ad4f9823a2

View file

@ -580,11 +580,20 @@ export class ChatService {
public async deleteRoom(room: MiChatRoom, deleter?: MiUser) {
await this.chatRoomsRepository.delete(room.id);
// Erase any message notifications for this room
const redisPipeline = this.redisClient.pipeline();
const memberships = await this.chatRoomMembershipsRepository.findBy({ roomId: room.id });
for (const membership of memberships) {
redisPipeline.del(`newRoomChatMessageExists:${membership.userId}:${room.id}`);
redisPipeline.srem(`newChatMessagesExists:${membership.userId}`, `room:${room.id}`);
}
await redisPipeline.exec();
if (deleter) {
const deleterIsModerator = await this.roleService.isModerator(deleter);
if (deleterIsModerator) {
this.moderationLogService.log(deleter, 'deleteChatRoom', {
await this.moderationLogService.log(deleter, 'deleteChatRoom', {
roomId: room.id,
room: room,
});