diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 48e341a0..00000000 --- a/package-lock.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "lockfileVersion": 1 -} 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 a0c0abcd..d3a4eedb 100644 --- a/srcs/requirements/nestjs/api_back/src/chat/chat.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/chat/chat.controller.ts @@ -52,8 +52,22 @@ export class ChatController { let fields = ["name", "type", "users", "protection", "allowed_users"]; const rooms = await this.chatService.getMyRooms(req.user.username, fields); + const blocked = await this.chatService.getListBlockUser(req.user.username); - const ret_rooms = rooms.map(room => + let filtered_rooms = rooms.filter(room => + { + if (room.type === 'direct') + { + let roomname = room.users[0]; + if (roomname === req.user.username) + roomname = room.users[1]; + if (blocked.includes(roomname)) + return false; + } + return true; + }); + + const ret_rooms = filtered_rooms.map(room => { let new_room = this.format_room(room); if (room.protection) @@ -78,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 "); } @@ -200,6 +225,19 @@ export class ChatController { let response = ""; if (room.type === 'user') { + const blocked = await this.chatService.getListBlockUser(req.user.username); + if (blocked.includes(room.name)) + { + console.log("throw error: error: true, code: 'BLOCKED_USER', message: 'you cannot enter this room, you blocked this user'"); + throw new HttpException({ error: true, code: 'BLOCKED_USER', message: `you cannot enter this room, you blocked this user` }, HttpStatus.UNAUTHORIZED); + } + + const find_room = await this.chatService.getRoomByName(`${req.user.username} + ${room.name}`); + if (find_room) + { + console.log("throw error: error: true, code: 'ROOM_CONFLICT', message: 'This room name already exist'"); + throw new HttpException({ error: true, code: 'ROOM_CONFLICT', message: `This room name already exist` }, HttpStatus.CONFLICT); + } room.type = 'direct'; room.users = [room.name, req.user.username]; room.name += ` + ${req.user.username}`; @@ -243,7 +281,7 @@ export class ChatController { { printCaller("- in "); - let fields = ["protection", "allowed_users"]; + let fields = ["protection", "allowed_users", "type", "users"]; const room_db = await this.chatService.getRoomByName(room.name, fields); if (room_db.protection === true) @@ -255,6 +293,19 @@ export class ChatController { } } + const blocked = await this.chatService.getListBlockUser(req.user.username); + if (room_db.type === 'direct') + { + let roomname = room_db.users[0]; + if (roomname === req.user.username) + roomname = room.users[1]; + if (blocked.includes(roomname)) + { + console.log("throw error: error: true, code: 'BLOCKED_USER', message: 'you cannot enter this room, you blocked this user'"); + throw new HttpException({ error: true, code: 'BLOCKED_USER', message: `you cannot enter this room, you blocked this user` }, HttpStatus.UNAUTHORIZED); + } + } + await this.chatService.setCurrentRoom(req.user.username, room.name); let socket: socketDto = this.chatGateway.sockets.get(req.user.username); await this.chatService.socketChangeRoom(socket, room.name); @@ -361,6 +412,14 @@ export class ChatController { { printCaller("- in "); + + const blocked = await this.chatService.getListBlockUser(req.user.username); + if (blocked.includes(username)) + { + console.log("throw error: error: true, code: 'BLOCKED_USER', message: 'you cannot invite this user, you have blocked it'"); + throw new HttpException({ error: true, code: 'BLOCKED_USER', message: `you cannot invite this user, you have blocked it` }, HttpStatus.UNAUTHORIZED); + } + let current_room_name = await this.chatService.getCurrentRoomName(req.user.username); let room = await this.chatService.addUserToRoom(username, current_room_name); let message = `${username} joined the room`; @@ -403,7 +462,17 @@ export class ChatController { printCaller("- in "); const messages = await this.chatService.getMessagesFromCurrentRoom(req.user.username); - res.status(HttpStatus.OK).json({ messages: messages }); + + console.log("messages:", messages); + const blocked = await this.chatService.getListBlockUser(req.user.username); + let filtered_messages = messages.filter(message => + { + if (blocked.includes(message.name)) + return false; + return true; + }); + + res.status(HttpStatus.OK).json({ messages: filtered_messages }); printCaller("- out "); } @@ -456,7 +525,15 @@ export class ChatController { const room_name = await this.chatService.getCurrentRoomName(req.user.username); const users = await this.chatService.getAllUsersNotInRoom(room_name); - res.status(HttpStatus.OK).json({ users: users }); + const blocked = await this.chatService.getListBlockUser(req.user.username); + let filtered_users = users.filter(user => + { + if (blocked.includes(user.username)) + return false; + return true; + }); + + res.status(HttpStatus.OK).json({ users: filtered_users }); printCaller("- out "); } diff --git a/srcs/requirements/nestjs/api_back/src/chat/chat.gateway.ts b/srcs/requirements/nestjs/api_back/src/chat/chat.gateway.ts index 80e2b589..554366f5 100644 --- a/srcs/requirements/nestjs/api_back/src/chat/chat.gateway.ts +++ b/srcs/requirements/nestjs/api_back/src/chat/chat.gateway.ts @@ -28,7 +28,7 @@ implements OnGatewayConnection, OnGatewayDisconnect socket.username = socket.handshake.query.username.toString(); this.sockets.set(socket.username, socket); - printCaller("socket.username:", socket.username); + printCaller("--- socket.username:", socket.username); let not_emit: string = `${socket.username}_not_emit`; socket.join(not_emit); 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 diff --git a/srcs/requirements/svelte/api_front/src/pages/SplashPage.svelte b/srcs/requirements/svelte/api_front/src/pages/SplashPage.svelte index c944f34e..c57a677c 100644 --- a/srcs/requirements/svelte/api_front/src/pages/SplashPage.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/SplashPage.svelte @@ -1,30 +1,36 @@ diff --git a/srcs/requirements/svelte/api_front/src/pages/TwoFactorAuthentication.svelte b/srcs/requirements/svelte/api_front/src/pages/TwoFactorAuthentication.svelte index be30e387..cbf4d74c 100644 --- a/srcs/requirements/svelte/api_front/src/pages/TwoFactorAuthentication.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/TwoFactorAuthentication.svelte @@ -1,44 +1,59 @@ diff --git a/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte b/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte index 3cf3590f..1b28fd70 100644 --- a/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte @@ -14,8 +14,8 @@ let user; let allUsers; - let playerOneAvatar; - let playerTwoAvatar; + let playerOneAvatar = ""; + let playerTwoAvatar = ""; //Game's stuff const options = new pong.InitOptions(); diff --git a/srcs/requirements/svelte/api_front/src/pages/game/GameSpectator.svelte b/srcs/requirements/svelte/api_front/src/pages/game/GameSpectator.svelte index 033c25eb..337cb4a4 100644 --- a/srcs/requirements/svelte/api_front/src/pages/game/GameSpectator.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/game/GameSpectator.svelte @@ -5,13 +5,13 @@ import MatchListElem from "../../pieces/MatchListElem.svelte"; import type { Match } from "../../pieces/Match"; - import { fetchUser, fetchAllUsers, fetchAvatar } from "../../pieces/utils"; + import { fetchAvatar } from "../../pieces/utils"; import * as pongSpectator from "./client/pongSpectator"; import { gameState } from "./client/ws"; - let playerOneAvatar; - let playerTwoAvatar; + let playerOneAvatar = ""; + let playerTwoAvatar = ""; //Game's stuff const gameAreaId = "game_area"; @@ -190,6 +190,7 @@ position: relative; width: 100%; height: 100%; + box-sizing: border-box; } #canvas_container { margin-top: 20px; diff --git a/srcs/requirements/svelte/api_front/src/pages/game/Ranking.svelte b/srcs/requirements/svelte/api_front/src/pages/game/Ranking.svelte index 35fc66ee..033da320 100644 --- a/srcs/requirements/svelte/api_front/src/pages/game/Ranking.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/game/Ranking.svelte @@ -1,28 +1,37 @@ @@ -41,18 +50,18 @@ - {#each allUsers as user, i} + {#each allUsersRanking as userRanking, i} {i + 1} - {#if user.username === currentUser.username} - {user.username} [You] + {#if userRanking.username === user.username} + {userRanking.username} [You] {:else} - {user.username} + {userRanking.username} {/if} - {user.stats.winGame} - {user.stats.loseGame} - {user.stats.drawGame} - {user.stats.totalGame} + {userRanking.stats.winGame} + {userRanking.stats.loseGame} + {userRanking.stats.drawGame} + {userRanking.stats.totalGame} {/each} diff --git a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplay.svelte b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplay.svelte index 6d7466f3..8553e32b 100644 --- a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplay.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplay.svelte @@ -1,17 +1,17 @@ diff --git a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplayOneUser.svelte b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplayOneUser.svelte index fc2fd8fb..f44f3755 100644 --- a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplayOneUser.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileDisplayOneUser.svelte @@ -1,38 +1,25 @@
-{#if user !== undefined} - +{#if oneUser} + {:else}

Sorry

Failed to load user {params.username}
diff --git a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileSettings.svelte b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileSettings.svelte index 738dd392..e5822e3d 100644 --- a/srcs/requirements/svelte/api_front/src/pages/profile/ProfileSettings.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/profile/ProfileSettings.svelte @@ -1,81 +1,89 @@ @@ -240,7 +305,7 @@