From c5c71491a480578770631067569659c3d1ef3b44 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Sat, 13 Dec 2025 09:16:18 +0330 Subject: [PATCH] leave room --- .gitignore | 2 ++ src/modules/notifications/notifications.gateway.ts | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 4b56acf..ca28fe8 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,5 @@ pids # Diagnostic reports (https://nodejs.org/api/report.html) report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +/react/* \ No newline at end of file diff --git a/src/modules/notifications/notifications.gateway.ts b/src/modules/notifications/notifications.gateway.ts index d25ad90..7b9dd1a 100644 --- a/src/modules/notifications/notifications.gateway.ts +++ b/src/modules/notifications/notifications.gateway.ts @@ -9,7 +9,7 @@ import { } from '@nestjs/websockets'; import { Server, Socket } from 'socket.io'; import { Logger, UseGuards, Inject, forwardRef } from '@nestjs/common'; - import { NotificationService } from './services/notification.service'; +import { NotificationService } from './services/notification.service'; import { WsAdminAuthGuard, type AuthenticatedSocket } from './guards/ws-admin-auth.guard'; import { ModuleRef } from '@nestjs/core'; import { ExecutionContext } from '@nestjs/common'; @@ -52,6 +52,7 @@ export class NotificationsGateway implements OnGatewayConnection, OnGatewayDisco handleDisconnect(client: Socket) { this.logger.log(`Client disconnected: ${client.id}`); + this.handleLeaveRoom(client); } sendInAppNotification(repipient: { adminId: string; restaurantId: string }, payload: IInAppNotificationPayload) { @@ -64,6 +65,13 @@ export class NotificationsGateway implements OnGatewayConnection, OnGatewayDisco private getRoom(adminId: string, restaurantId: string) { return `restaurant:${restaurantId}-admin:${adminId}`; } + + handleLeaveRoom(client: AuthenticatedSocket) { + const room = this.getRoom(client.adminId!, client.restId!); + void client.leave(room); + this.logger.log(`Admin ${client.adminId} (Client ${client.id}) left room: ${room}`); + void client.emit('left', { room, message: 'Successfully Admin left room' }); + } /** * Join a room for a specific restaurant (admin/staff) * Requires admin authentication via JWT token @@ -273,7 +281,7 @@ export class NotificationsGateway implements OnGatewayConnection, OnGatewayDisco const canActivate = await guard.canActivate(context); if (!canActivate) { - throw new Error('Authentication failed'); + throw new Error('Authentication failed'); } } }