diff --git a/README.md b/README.md index 5459bbea..8846b817 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ - [/] see all joignable rooms - [/] see all my rooms - [/] leave room -- [ ] leave direct impossible +- [/] leave direct impossible - [ ] invite someone in room - [ ] make admin - [ ] ban 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 4e6d2131..00d4bb73 100644 --- a/srcs/requirements/nestjs/api_back/src/chat/chat.controller.ts +++ b/srcs/requirements/nestjs/api_back/src/chat/chat.controller.ts @@ -189,5 +189,19 @@ export class ChatController { console.log("- out getRoomUsers controller"); } + @UseGuards(AuthenticateGuard) + @UseGuards(TwoFactorGuard) + @Get('users') + async getAllUsers(@Req() req, @Res() res): Promise + { + console.log("- in getAllUsers controller"); + + 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 }); + + console.log("- out getAllUsers controller"); + } + } 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 6e12e9da..0842a6d3 100644 --- a/srcs/requirements/nestjs/api_back/src/chat/chat.service.ts +++ b/srcs/requirements/nestjs/api_back/src/chat/chat.service.ts @@ -309,6 +309,24 @@ export class ChatService { return users; } + async getAllUsersNotInRoom(current_room_name: string): Promise + { + console.log("-- in getAllUsersNotInRoom service"); + + // get all users in current room + const current_room = await this.getRoomByName(current_room_name); + const usernames = current_room.users; + + const users = await this.userRepository + .createQueryBuilder('user') + .where('user.username NOT IN (:...usernames)', { usernames: usernames }) + .getMany(); + console.log("--- users:", users); + + console.log("-- out getAllUsersNotInRoom service"); + return users; + } + /* GATEWAY EVENTS ***************************************** */ diff --git a/srcs/requirements/svelte/api_front/src/pieces/chat/Chat_layouts.svelte b/srcs/requirements/svelte/api_front/src/pieces/chat/Chat_layouts.svelte index d01f5765..e91ac23f 100644 --- a/srcs/requirements/svelte/api_front/src/pieces/chat/Chat_layouts.svelte +++ b/srcs/requirements/svelte/api_front/src/pieces/chat/Chat_layouts.svelte @@ -15,6 +15,7 @@ import CreateLayout from './Layout_create.svelte'; import MuteLayout from './Layout_mute.svelte'; import UserLayout from './Layout_user.svelte'; + import InviteLayout from './Layout_invite.svelte'; import Button from './Element_button.svelte'; @@ -79,6 +80,9 @@ {:else if $layout === "user"} + {:else if $layout === "invite"} + + {/if} diff --git a/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_invite.svelte b/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_invite.svelte new file mode 100644 index 00000000..286ea76a --- /dev/null +++ b/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_invite.svelte @@ -0,0 +1,86 @@ + + +
+ + + + + + + + + + + + + + +
+

invite someone in this room :

+
+
+

/ there is no one to invite yet /

+
+ {#await users} +

users are loading...

+ {:then users} + {#each users as user} + + {/each} + {/await} +
+
+ +
+ + + diff --git a/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_room_set.svelte b/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_room_set.svelte index 46f3bd20..c37a7210 100644 --- a/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_room_set.svelte +++ b/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_room_set.svelte @@ -45,6 +45,9 @@ + {/if}

room users :

diff --git a/srcs/requirements/svelte/api_front/src/pieces/chat/Request_rooms.ts b/srcs/requirements/svelte/api_front/src/pieces/chat/Request_rooms.ts index b795560b..aff3b5ed 100644 --- a/srcs/requirements/svelte/api_front/src/pieces/chat/Request_rooms.ts +++ b/srcs/requirements/svelte/api_front/src/pieces/chat/Request_rooms.ts @@ -134,4 +134,15 @@ export async function leave_room() }); } +export async function get_all_users() +{ + console.log("in get_all_users"); + + const response = await fetch('/api/v2/chat/users'); + const data = await response.json(); + console.log("users:", data.users); + + return data.users; +} +