From 8b508063e84853f1f64fe2fbccdc97b8aa7b333d Mon Sep 17 00:00:00 2001 From: simplonco Date: Mon, 16 Jan 2023 16:46:04 +0100 Subject: [PATCH] will not show users in rooms if blocked --- .../api_back/src/chat/chat.controller.ts | 13 +++++++++- .../nestjs/api_back/src/chat/chat.service.ts | 25 +++++++++---------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/srcs/requirements/nestjs/api_back/src/chat/chat.controller.ts b/srcs/requirements/nestjs/api_back/src/chat/chat.controller.ts index 46e15292..a3971ef7 100644 --- a/srcs/requirements/nestjs/api_back/src/chat/chat.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/chat/chat.controller.ts @@ -92,8 +92,19 @@ export class ChatController { printCaller("- in "); const rooms: roomDto[] = await this.chatService.getAllOtherRoomsAndUsers(req.user.username) + const blocked = await this.chatService.getListBlockUser(req.user.username); - const ret_rooms = rooms.map(room => this.format_room(room)); + let filtered_rooms = rooms.filter(room => + { + if (room.type === 'user') + { + if (blocked.includes(room.name)) + return false; + } + return true; + }); + + const ret_rooms = filtered_rooms.map(room => this.format_room(room)); res.status(HttpStatus.OK).json({ rooms: ret_rooms }); printCaller("- out "); } diff --git a/srcs/requirements/nestjs/api_back/src/chat/chat.service.ts b/srcs/requirements/nestjs/api_back/src/chat/chat.service.ts index 5225ad7d..a97d9004 100644 --- a/srcs/requirements/nestjs/api_back/src/chat/chat.service.ts +++ b/srcs/requirements/nestjs/api_back/src/chat/chat.service.ts @@ -306,26 +306,22 @@ export class ChatService { async findOneRelationshipByUsername(friendUsername : string, username : string) { + printCaller("-- in "); + const friendship = await this.friendshipRepository .createQueryBuilder('friendship') .leftJoinAndSelect('friendship.sender', 'sender') .leftJoinAndSelect('friendship.receiver', 'receiver') - .where - ( - new Brackets((qb) => - { - qb.where - ( - new Brackets((subAQb) => - { + .where ( + new Brackets((qb) => { + qb.where ( + new Brackets((subAQb) => { subAQb.where('sender.username = :username', {username : username}) .andWhere('receiver.username = :friendUsername', {friendUsername : friendUsername}) }) ) - .orWhere - ( - new Brackets((subBQb) => - { + .orWhere ( + new Brackets((subBQb) => { subBQb.where('sender.username = :friendUsername2', {friendUsername2 : friendUsername}) .andWhere('receiver.username = :username2', {username2 : username}) .andWhere('friendship.status != :status', {status : FriendshipStatus.BLOCKED}) @@ -333,11 +329,14 @@ export class ChatService { ) }), ) - .getOne() + .getOne(); + console.log("friendship:", friendship); if (!friendship) return null; return new SendableFriendship(friendship); + + printCaller("-- out "); } async addBlockUser(username: string, to_block_username: string): Promise