diff --git a/srcs/requirements/nestjs/api_back/src/game/game.service.ts b/srcs/requirements/nestjs/api_back/src/game/game.service.ts index d6ca27c5..4e6d4805 100644 --- a/srcs/requirements/nestjs/api_back/src/game/game.service.ts +++ b/srcs/requirements/nestjs/api_back/src/game/game.service.ts @@ -200,8 +200,10 @@ export class GameService { async declineInvitation(user : User, token : string, @Res() res : Response) { - if (user.status !== STATUS.CONNECTED) - return res.status(HttpStatus.FORBIDDEN).json({message : "You must not be in game to decline an invitation"}); + /* Luke: le check de user.status n'est pas fonctionnel avec l'implémentation des invitations dans le front. + Ça me semble dispensable, je désactive donc pour le moment plutôt que de refaire l'implémentation front. */ + // if (user.status !== STATUS.CONNECTED) + // return res.status(HttpStatus.FORBIDDEN).json({message : "You must not be in game to decline an invitation"}); console.log("On décline l'invitation") const tokenGame = await this.tokenGameRepository.createQueryBuilder('tokengame') .andWhere('tokengame.playerTwoUsername = :playerTwoUsername', {playerTwoUsername : user.username}) @@ -236,8 +238,10 @@ export class GameService { async acceptInvitation(user : User, token : string, @Res() res : Response) { - if (user.status !== STATUS.CONNECTED) - return res.status(HttpStatus.FORBIDDEN).send("") + /* Luke: le check de user.status n'est pas fonctionnel avec l'implémentation des invitations dans le front. + Ça me semble dispensable, je désactive donc pour le moment plutôt que de refaire l'implémentation front. */ + // if (user.status !== STATUS.CONNECTED) + // return res.status(HttpStatus.FORBIDDEN).send("") const tokenGame = await this.tokenGameRepository.createQueryBuilder('tokenGame') .andWhere('tokenGame.playerTwoUsername = :playerTwoUsername', {playerTwoUsername : user.username}) .andWhere('tokenGame.token = :token', {token : token}) diff --git a/srcs/requirements/svelte/api_front/public/img/default.png b/srcs/requirements/svelte/api_front/public/img/default.png new file mode 100644 index 00000000..1dfcbae0 Binary files /dev/null and b/srcs/requirements/svelte/api_front/public/img/default.png differ diff --git a/srcs/requirements/svelte/api_front/public/img/default_user_icon.png b/srcs/requirements/svelte/api_front/public/img/default_user_icon.png deleted file mode 100644 index fee7a53d..00000000 Binary files a/srcs/requirements/svelte/api_front/public/img/default_user_icon.png and /dev/null differ 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 ad93cf74..87933cc8 100644 --- a/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/game/Game.svelte @@ -4,11 +4,13 @@ import { fade, fly } from 'svelte/transition'; import Header from '../../pieces/Header.svelte'; - import { fetchAvatar } from "../../pieces/utils"; + import { fetchUser, fetchAllUsers, fetchAvatar } from "../../pieces/utils"; import * as pong from "./client/pong"; import { gameState } from "./client/ws"; + import { invited_username } from '../../pieces/store_invitation'; + //user's stuff let user; let allUsers; @@ -36,11 +38,21 @@ const watchMatchStartIntervalRate = 111; onMount( async() => { - user = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user`) - .then( x => x.json() ); - allUsers = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user/all`) - .then( x => x.json() ); + user = await fetchUser(); + allUsers = await fetchAllUsers(); + + if (!user) { + showError = true; + errorMessage = "User load failed"; + return; + } + options.playerOneUsername = user.username; + if ($invited_username) { + options.isSomeoneIsInvited = true; + options.playerTwoUsername = $invited_username; + invited_username.set(""); + } }) onDestroy( async() => { @@ -298,8 +310,8 @@ {#if options.isSomeoneIsInvited} {/if} 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 d0ba4bc7..dfa4d63b 100644 --- a/srcs/requirements/svelte/api_front/src/pages/game/GameSpectator.svelte +++ b/srcs/requirements/svelte/api_front/src/pages/game/GameSpectator.svelte @@ -6,15 +6,11 @@ import Header from '../../pieces/Header.svelte'; import MatchListElem from "../../pieces/MatchListElem.svelte"; import type { Match } from "../../pieces/Match"; - import { fetchAvatar } from "../../pieces/utils"; + import { fetchUser, fetchAllUsers, fetchAvatar } from "../../pieces/utils"; import * as pongSpectator from "./client/pongSpectator"; import { gameState } from "./client/ws"; - //user's stuff - let user; - let allUsers; - let playerOneAvatar; let playerTwoAvatar; @@ -30,13 +26,7 @@ const watchGameStateIntervalRate = 142; onMount( async() => { - user = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user`) - .then( x => x.json() ); - allUsers = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/user/all`) - .then( x => x.json() ); - const responseForMatchList = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/game/match/all`) - const jsonForMatchList = await responseForMatchList.json(); - matchList = jsonForMatchList; + matchList = await fetchMatchList(); }) onDestroy( async() => { @@ -82,12 +72,25 @@ async function resetPage() { hiddenGame = true; pongSpectator.destroy(); - fetchMatchList(); + matchList = await fetchMatchList(); }; - async function fetchMatchList() { - matchList = await fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/game/match/all`) - .then( x => x.json() ); + async function fetchMatchList() + { + return fetch(`http://${process.env.WEBSITE_HOST}:${process.env.WEBSITE_PORT}/api/v2/game/match/all`) + .then((response) => { + if (!response.ok) { + throw new Error("All matchs not retrieved"); + } + return response.json(); + }) + .then((body) => { + return body; + }) + .catch((error) => { + console.log("catch fetchMatchList: ", error); + return []; + }); }; diff --git a/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_user.svelte b/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_user.svelte index 7fe25b94..b5abf6f3 100644 --- a/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_user.svelte +++ b/srcs/requirements/svelte/api_front/src/pieces/chat/Layout_user.svelte @@ -8,6 +8,15 @@ let mute = "mute"; let block = "block"; + import { push } from "svelte-spa-router"; + import { invited_username } from '../store_invitation'; + function game_invitation() + { + const usernamePLACEHOLDER = "hulamy"; + invited_username.set(usernamePLACEHOLDER); + push("/game"); + } +
@@ -40,7 +49,7 @@ -