diff --git a/cryptide_project/server/api/controllers/AuthController.js b/cryptide_project/server/api/controllers/AuthController.js index 5699804..6c2203b 100644 --- a/cryptide_project/server/api/controllers/AuthController.js +++ b/cryptide_project/server/api/controllers/AuthController.js @@ -67,6 +67,9 @@ class AuthController { // Stocker l'utilisateur dans la session) req.session.user = user; + req.session.user.nbNodes = 25 + req.session.user.nbIndices = 3 + // Envoyer une réponse réussie console.log("[" + hour + ":" + minutes + "] " + user.pseudo + " have been connected."); @@ -82,6 +85,20 @@ class AuthController { } } + static async UpdateNbNodesIndices(req, res){ + try{ + if (req.session.user){ + req.session.user.nbNodes = req.body.nbNodes; + req.session.user.nbIndices = req.body.nbIndices; + res.status(200).json({ message: 'Nombre de noeuds mis à jour.' }); + } + } + catch(error){ + console.error(error); + res.status(500).json({ error: 'Erreur lors de la mise à jour du nombre de noeuds.' }); + } +} + static async logout(req, res) { const pseudo = req.session.user.pseudo; const date = new Date(); diff --git a/cryptide_project/server/api/controllers/SessionController.js b/cryptide_project/server/api/controllers/SessionController.js index 1fc1fc4..95d34ee 100644 --- a/cryptide_project/server/api/controllers/SessionController.js +++ b/cryptide_project/server/api/controllers/SessionController.js @@ -87,7 +87,7 @@ class SessionController { req.session.user.onlineStats = {nbGames: nbGamesOL, nbWins: nbWinsOL, ratio: ratioOL}; - + res.status(200).json({ user: req.session.user }); } catch(error){ diff --git a/cryptide_project/server/api/routes/AuthRoutes.js b/cryptide_project/server/api/routes/AuthRoutes.js index 95b3c80..338dcc4 100644 --- a/cryptide_project/server/api/routes/AuthRoutes.js +++ b/cryptide_project/server/api/routes/AuthRoutes.js @@ -11,6 +11,7 @@ router.delete('/auth/logout', AuthController.logout) router.delete('/auth/delAccount', AuthController.delAccount) router.post('/auth/validatePassword', AuthController.validatePassword); router.put('/auth/updatePassword', AuthController.updatePassword); +router.put('/session/updateNbNodes', AuthController.UpdateNbNodesIndices); // Routes pour les sessions router.get('/session', SessionController.getUserInformation); @@ -21,6 +22,7 @@ router.post('/session/addHardEnigmaStats', SessionController.addHardEnigmaStats) router.post('/session/addOnlineStats', SessionController.addOnlineStats); router.put('/session/updatePseudo', SessionController.UpdatePseudo); + // Routes pour le daily scoreboard router.get('/scoreboard/getDailyMastermind', ScoreboardController.getDailyMastermind); router.get('/scoreboard/getDailyEasyEnigma', ScoreboardController.getDailyEasyEnigma); diff --git a/cryptide_project/src/Components/GraphContainer.tsx b/cryptide_project/src/Components/GraphContainer.tsx index 3b92947..be36bfd 100644 --- a/cryptide_project/src/Components/GraphContainer.tsx +++ b/cryptide_project/src/Components/GraphContainer.tsx @@ -75,7 +75,6 @@ let cptHistory = 0 let lastNodes: NodePerson[] = [] let cptEndgame = 0 let endgame= false -let firstHistory = true let cptSquare = 0 let cptOnAskedWrong = 0 let cptPlayerLeft = 0 @@ -86,6 +85,7 @@ let testTemps = 0 let testFirst = false let gameStartTmp = true let index = 0 +let firstHistory = true const MyGraphComponent: React.FC = ({onNodeClick, handleShowTurnBar, handleTurnBarTextChange, playerTouched, setPlayerTouched, changecptTour, solo, isDaily, difficulty, addToHistory, showLast, setNetwork, setNetworkEnigme, setPlayerIndex, askedWrong, setAskedWrong, importToPdf, setImportToPdf, importToJSON, setImportToJSON, setPutCorrectBackground, setPutGreyBackground, setPutImposssibleGrey, putCorrectBackground, putGreyBackground, putImposssibleGrey, handleTurn, setChangeGraph, lang}) => { let cptTour: number = 1 @@ -109,6 +109,8 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS const [netEnigme, setNetEnigme] = useState[]> | null>(null) const [downloaded, setDownloaded] = useState(false) + const [updateHistory, setUpdateHistory] = useState<() => void>(() => {}) + useEffect(() => { if (testFirst){ testTemps = 0 @@ -190,7 +192,6 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS gameStartTmp=gameStart if (gameStartTmp){ setGameStartData(false) - console.log(gameStart) setLastIndex(turnPlayerIndex) setPlayerIndex(playerIndex) } @@ -416,6 +417,7 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS link.click(); URL.revokeObjectURL(url); } + useEffect(() => { @@ -434,11 +436,16 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS setIndicesData(choosenIndices) const map = EnigmeDuJourCreator.createEnigme(networkPerson, choosenIndices, choosenPerson, Stub.GenerateIndice()) setDailyEnigmeData(map) - addToHistory("<----- [Tour " + 1 +"/"+networkPerson.getPersons().length + "] ----->"); + if (solo && (difficulty === "intermediate" || !isDaily)){ + addToHistory("<----- ["+ intl.formatMessage({ id: 'turn' }) +" " + 1 +"/"+networkPerson.getPersons().length + "] ----->"); + } + else{ + choosenIndices.forEach((indice, index) => { + addToHistory(intl.formatMessage({ id: 'indice' }) + positionToEmoji(index, true) + " : " + indice.ToString(lang)) + }) + } changecptTour(1) testTemps=0 - - } useEffect(() => { @@ -494,6 +501,7 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS } } }; + const networkData = { nodes: nodes, edges: graph.edges }; const network = new Network(container, networkData, initialOptions); @@ -501,6 +509,17 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS setNetwork(network) setSeedData(network.getSeed()) + if (solo){ + if (solo && (difficulty === "intermediate" || !isDaily)){ + addToHistory("<----- ["+ intl.formatMessage({ id: 'turn' }) +" " + 1 +"/"+networkData.nodes.length + "] ----->"); + } + else{ + indices.forEach((indice, index) => { + addToHistory(intl.formatMessage({ id: 'indice' }) + positionToEmoji(index, true) + " : " + indice.ToString(lang)) + }) + } + } + if (isDaily){ setNetworkEnigme(dailyEnigme) setNetEnigme(dailyEnigme) @@ -519,15 +538,6 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS }) }); } - else if (difficulty === "easy"){ - if (firstHistory){ - firstHistory=false - indices.forEach((indice, index) => { - addToHistory(intl.formatMessage({ id: 'indice' }) + positionToEmoji(index, true) + " : " + indice.ToString(lang)) - }) - } - - } } socket.on("give network", (playerId) => { @@ -618,7 +628,6 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS setPlayerIndex(index) setLastIndex(index) if (actualPlayerIndex==index){ - handleTurnBarTextChange(intl.formatMessage({ id: 'game.yourTurn' })) handleShowTurnBar(true) } }) @@ -899,6 +908,7 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS setLastIndex(-1) setPlayerTouched(-1) setWinnerData(winner) + firstHistory=true first = true @@ -907,7 +917,6 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS setAskedWrong(false) askedWrongBot=false endgame = true - firstHistory=true cptBug=0 try{ if(isLoggedIn){ @@ -949,24 +958,6 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS } }) - - - personNetwork.getPersons().forEach(p => { - let a = 0 - for (let i of indices){ - let tester = IndiceTesterFactory.Create(i) - if (tester.Works(p)){ - a++ - } - } - if (a==indices.length){ - //networkData.nodes.update({id: p.getId(), label: p.getName() + "\n🔵"}) - //console.log(p) - } - - }); - - // Gérer le changement entre la physique et le déplacement manuel network.on("dragging", (params) => { if (params.nodes.length > 0) { @@ -1104,15 +1095,14 @@ const MyGraphComponent: React.FC = ({onNodeClick, handleS const personTest = personNetwork?.getPersons().find((p) => p.getId() == params.nodes[0]) //person sélectionnée const node = nodes.get().find((n: any) => params.nodes[0] == n.id) if(node == undefined)return; - if (personTest != undefined && !node.label.includes(positionToEmoji(index, true)) && !node.label.includes(positionToEmoji(index, false))){ //si la personne existe et que le noeud n'a pas déjà été cliqué + if (node.label.includes(colorToEmoji(positionToColor(0), true)) || node.label.includes(colorToEmoji(positionToColor(0), false))) return + if (personTest != undefined){ //si la personne existe et que le noeud n'a pas déjà été cliqué let index =0 - let works = true - const statsTime = elapsedTime; for (const i of indices){ const tester = IndiceTesterFactory.Create(i) const test = tester.Works(personTest) //@ts-ignore - if (node!=undefined){ + if (node!=undefined && !node.label.includes(positionToEmoji(index, true)) && !node.label.includes(positionToEmoji(index, false))){ const nodeNode = nodes.get().find((n: any) => params.nodes[0] == n.id) if(nodeNode == undefined)return; networkData.nodes.update({id: params.nodes[0], label: nodeNode.label + positionToEmoji(index, test)}) diff --git a/cryptide_project/src/Components/PlayerList.tsx b/cryptide_project/src/Components/PlayerList.tsx index 7bbf279..0062bba 100644 --- a/cryptide_project/src/Components/PlayerList.tsx +++ b/cryptide_project/src/Components/PlayerList.tsx @@ -8,6 +8,7 @@ import Person from '../res/img/Person.png' import BotImg from '../res/img/bot.png' import { socket } from '../SocketConfig'; +import { FormattedMessage } from 'react-intl'; //@ts-ignore @@ -69,7 +70,7 @@ const PlayerList: React.FC = ({ players, playerTouched, setPlay textAlign: "center", color: "white", padding: "10px"}} - onClick={() => askEveryone()}>Ask everyone + onClick={() => askEveryone()}> ): ( + onClick={() => askEveryone()}> ) } diff --git a/cryptide_project/src/Components/ScoreBoard.css b/cryptide_project/src/Components/ScoreBoard.css index 2272e63..0946e44 100644 --- a/cryptide_project/src/Components/ScoreBoard.css +++ b/cryptide_project/src/Components/ScoreBoard.css @@ -12,4 +12,17 @@ } /* Personnalisez davantage selon vos préférences */ - \ No newline at end of file + + .carousselButton{ + border:none; + background-color:darkgray; + color:white; + opacity: 60%; + width: 50px; + height: 70px; + font-size: 40px; + border-radius: 5px; + padding: 5px; + margin: 5px; + cursor: pointer; + } \ No newline at end of file diff --git a/cryptide_project/src/Components/ScoreBoard.tsx b/cryptide_project/src/Components/ScoreBoard.tsx index a6115f6..817f88f 100644 --- a/cryptide_project/src/Components/ScoreBoard.tsx +++ b/cryptide_project/src/Components/ScoreBoard.tsx @@ -94,6 +94,19 @@ const ScoreBoard: React.FC<{ Player: User }> = ({ Player }) => { const intl = useIntl(); + + //@ts-ignore + const CustomPrevButton = ({ previousSlide }) => ( + + ); + + //@ts-ignore + const CustomNextButton = ({ nextSlide }) => ( + + ); + + + return ( = ({ Player }) => { title={intl.formatMessage({ id: 'score.tab.stat' })} disabled={!Player.pseudo.startsWith("Guest_") ? false : true}> - + } + renderCenterRightControls={({ nextSlide }) => } + adaptiveHeight + wrapAround + slidesToShow={1} + cellSpacing={10} + key={carouselKey} + >

@@ -117,7 +138,7 @@ const ScoreBoard: React.FC<{ Player: User }> = ({ Player }) => {

: {Player.mastermindStats.avgNbTry.toFixed(2)}

-
Enigme facile
+

: {Player.easyEnigmaStats.nbGames}

: {Player.easyEnigmaStats.nbWins}

@@ -126,14 +147,14 @@ const ScoreBoard: React.FC<{ Player: User }> = ({ Player }) => {

: {Player.easyEnigmaStats.avgTime.toFixed(2) + "s"}

-
Enigme moyenne
+

: {Player.mediumEnigmaStats.nbGames}

: {Player.mediumEnigmaStats.bestScore}

: {Player.mediumEnigmaStats.avgNbTry.toFixed(2)}

-
Enigme difficile
+

: {Player.hardEnigmaStats.nbGames}

: {Player.hardEnigmaStats.nbWins}

@@ -142,7 +163,7 @@ const ScoreBoard: React.FC<{ Player: User }> = ({ Player }) => {

: {Player.hardEnigmaStats.avgTime.toFixed(2) + "s"}

-
En ligne
+

: {Player.onlineStats.nbGames}

: {Player.onlineStats.nbWins}

@@ -151,7 +172,7 @@ const ScoreBoard: React.FC<{ Player: User }> = ({ Player }) => { - +
@@ -257,7 +278,7 @@ const ScoreBoard: React.FC<{ Player: User }> = ({ Player }) => { - +
diff --git a/cryptide_project/src/Error/ErrorPage.tsx b/cryptide_project/src/Error/ErrorPage.tsx index d0f57c0..d0a6522 100644 --- a/cryptide_project/src/Error/ErrorPage.tsx +++ b/cryptide_project/src/Error/ErrorPage.tsx @@ -28,7 +28,7 @@ function ErrorPage({ code = "", msg = "Something is wrong"}) {
- +
); diff --git a/cryptide_project/src/Pages/InGame.tsx b/cryptide_project/src/Pages/InGame.tsx index 9aefa2a..27411f9 100644 --- a/cryptide_project/src/Pages/InGame.tsx +++ b/cryptide_project/src/Pages/InGame.tsx @@ -55,6 +55,7 @@ import {generateLatexCode, generateLatexCodeEnigme} from '../Script/LatexScript' import Pair from '../model/Pair'; import Indice from '../model/Indices/Indice'; import {basePath} from "../AdressSetup" +import { useAuth } from '../Contexts/AuthContext'; let cptNavigation = 0 @@ -65,6 +66,7 @@ const InGame = ({locale, changeLocale}) => { const theme = useTheme(); const navigate = useNavigate() + const {user, manager} = useAuth() const params = new URLSearchParams(window.location.search); @@ -104,6 +106,7 @@ const InGame = ({locale, changeLocale}) => { const [askedWrong, setAskedWrong] = useState(false) const [importToPdf, setImportToPdf] = useState(false) const [importToJSON, setImportToJSON] = useState(false) + const [firstHistory, setFirstHistory] = useState(true) const [putCorrectBackground, setPutCorrectBackground] = useState<() => void>(() => {}); const [putGreyBackgroud, setPutGreyBackground] = useState<() => void>(() => {}); @@ -324,20 +327,76 @@ const InGame = ({locale, changeLocale}) => { const [playTurnSound, setPlayTurnSound] = useState(false); const [soundPreference, setSoundPreference] = useState(true); // utilisateur - const [enteredNumber, setEnteredNumber] = useState(25); - const [enteredNumberIndices, setEnteredNumberIndices] = useState(3); + const [enteredNumber, setEnteredNumber] = useState(user?.nbNodes || 25); + const [enteredNumberIndices, setEnteredNumberIndices] = useState(user?.nbIndices || 3); //@ts-ignore const handleNumberChange = (event) => { + if (parseInt(event.target.value)){ + setEnteredNumber(parseInt(event.target.value)); + } + }; + + //@ts-ignore + const handleKeyDown = (event) => { + // Vérifier si la touche appuyée est "Entrée" + if (event.key === 'Enter' && user!==null && parseInt(event.target.value)) { const newNumber = Math.max(20, Math.min(50, parseInt(event.target.value, 10))); + user.nbNodes = newNumber; + setEnteredNumber(newNumber); + } + }; + + const handleBlur = () => { + if (user!==null){ + const newNumber = Math.max(20, Math.min(50, enteredNumber)); + user.nbNodes = newNumber; setEnteredNumber(newNumber); + } }; + //@ts-ignore const handleNumberIndicesChange = (event) => { + if (parseInt(event.target.value)){ + setEnteredNumberIndices(parseInt(event.target.value)); + } +}; + +useEffect(() => { + if (changeGraph){ + if (enteredNumber>=20 && enteredNumber<=50 && enteredNumberIndices>=3 && enteredNumberIndices<=6){ + console.log(enteredNumber) + console.log(enteredNumberIndices) + manager?.userService.changeNodesIndices(enteredNumber, enteredNumberIndices) + setHistory([]); + setFirstHistory(true) + changeGraph(enteredNumber, enteredNumberIndices) + } + } + else{ + setEnteredNumber(user?.nbNodes || 25) + setEnteredNumberIndices(user?.nbIndices || 3) + } +}, [enteredNumber, enteredNumberIndices]) + +//@ts-ignore +const handleKeyDownIndice = (event) => { + // Vérifier si la touche appuyée est "Entrée" + if (event.key === 'Enter' && user!=null && parseInt(event.target.value)) { const newNumber = Math.max(3, Math.min(6, parseInt(event.target.value, 10))); + user.nbIndices = newNumber; setEnteredNumberIndices(newNumber); + } +}; + +const handleBlurIndice = () => { + if (user!==null){ + const newNumber = Math.max(3, Math.min(6, enteredNumberIndices)); + setEnteredNumberIndices(newNumber); + user.nbIndices = newNumber; + } }; const handleSoundPreferenceChange = () => { @@ -541,7 +600,7 @@ const InGame = ({locale, changeLocale}) => { + style={{height: '80%', width: '30%', left: '70%' }}> param @@ -553,54 +612,47 @@ const InGame = ({locale, changeLocale}) => { {IsSolo && -
+
- -
-
} {IsSolo && -
+
- -
-
} +
+ +
+
diff --git a/cryptide_project/src/Pages/Lobby.tsx b/cryptide_project/src/Pages/Lobby.tsx index e54a061..c143f9d 100644 --- a/cryptide_project/src/Pages/Lobby.tsx +++ b/cryptide_project/src/Pages/Lobby.tsx @@ -309,9 +309,9 @@ function Lobby() {

{/* Bouton pour copier le lien */} - + */} {({ placement: _placement, diff --git a/cryptide_project/src/Pages/NewPlay.tsx b/cryptide_project/src/Pages/NewPlay.tsx index c300498..f1a44e5 100644 --- a/cryptide_project/src/Pages/NewPlay.tsx +++ b/cryptide_project/src/Pages/NewPlay.tsx @@ -96,7 +96,7 @@ function NewPlay() { } function launchMastermind(){ - const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(3, 30) + const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(user?.nbIndices || 3, user?.nbNodes || 25) setPersonData(choosenPerson) setPersonNetworkData(networkPerson) setIndicesData(choosenIndices) @@ -159,7 +159,7 @@ function NewPlay() { //* Mode facile //todo différencier les deux - const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(3, 30) + const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(user?.nbIndices || 3, user?.nbNodes || 25) setPersonData(choosenPerson) setPersonNetworkData(networkPerson) setIndicesData(choosenIndices) @@ -173,7 +173,7 @@ function NewPlay() { //* Mode facile //todo différencier les deux - const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(3, 30) + const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(user?.nbIndices || 3, user?.nbNodes || 25) setPersonData(choosenPerson) setPersonNetworkData(networkPerson) setIndicesData(choosenIndices) @@ -193,7 +193,7 @@ function NewPlay() { //* Mode difficile //todo différencier les deux - const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(3, 30) + const [networkPerson, choosenPerson, choosenIndices] = GameCreator.CreateGame(user?.nbIndices || 3, user?.nbNodes || 25) setPersonData(choosenPerson) setPersonNetworkData(networkPerson) setIndicesData(choosenIndices) @@ -255,7 +255,7 @@ function NewPlay() {
{/* Lobbies */} -
+
diff --git a/cryptide_project/src/Translations/en.json b/cryptide_project/src/Translations/en.json index c130ae9..6845448 100644 --- a/cryptide_project/src/Translations/en.json +++ b/cryptide_project/src/Translations/en.json @@ -28,7 +28,7 @@ "indice":"Hint", "param":"Settings", - "sfx":"Activate SFX", + "sfx":"Activate sounds", "aide":"Help", "majUn":"A", @@ -101,6 +101,10 @@ "compris": "Understood!", "close": "Close", + "regenerate":"Regenarte graph", + "BackHome" : "Back to home", + "askeveryone" : "Ask everyone", + "color.green":"Green", "color.blue":"Blue", "color.red":"Red", @@ -136,6 +140,8 @@ "score.online": "Online", "score.tab.stat" : "Your Stats", + "score.tab.quoti" : "Daily", + "score.tab.hebdo" : "Weekly", "lobby.players" : "Players", "lobby.bienvenue": "Welcome to your lobby!", diff --git a/cryptide_project/src/Translations/fr.json b/cryptide_project/src/Translations/fr.json index d4a6db6..69dd320 100644 --- a/cryptide_project/src/Translations/fr.json +++ b/cryptide_project/src/Translations/fr.json @@ -28,7 +28,7 @@ "indice":"Indice", "param":"Paramètres", - "sfx":"Activer les SFX", + "sfx":"Activer les sons", "aide":"Aide", "majUn":"Un", @@ -98,13 +98,17 @@ "compris":"Compris !", "close" : "Fermer", + "askeveryone" : "Demandez à tous", + + "regenerate":"Regénérer le graph", + "BackHome" : "Retour à l'accueil", "color.green":"Vert", "color.blue":"Bleu", "color.red":"Rouge", "color.yellow":"Jaune", - "play.jouerseul": "Jouer seul", + "play.jouerseul": "Mastermind", "play.enigme": "Résoudre une énigme", "play.enigme.easy": "Facile", "play.enigme.medium": "Intermédiaire", @@ -134,6 +138,8 @@ "score.online" : "En ligne", "score.tab.stat" : "Vos Stats", + "score.tab.quoti" : "Quotidien", + "score.tab.hebdo" : "Hebdomadaire", "lobby.players" : "Joueurs", "lobby.bienvenue" : "Bienvenue dans votre lobby !", @@ -345,7 +351,7 @@ "tuto.txt.14.6.5":" pour deviner, bonne chance !", - "history.mis":" à mis un ", + "history.mis":" a mis un ", "à":"à", "history.cantPose":" ne peut plus poser de carré", "history.NotCoupable":" n'est pas le coupable !" diff --git a/cryptide_project/src/model/DataManagers/DbUserService.ts b/cryptide_project/src/model/DataManagers/DbUserService.ts index 18dafcc..d801c19 100644 --- a/cryptide_project/src/model/DataManagers/DbUserService.ts +++ b/cryptide_project/src/model/DataManagers/DbUserService.ts @@ -41,6 +41,8 @@ class DbUserService implements IUserService{ nbWins: sessionData.user.onlineStats.nbWins, ratio: sessionData.user.onlineStats.ratio, }); + currentUser.nbNodes = sessionData.user.nbNodes || 25 + currentUser.nbIndices = sessionData.user.nbIndices || 3 return [currentUser, true]; } @@ -76,6 +78,9 @@ class DbUserService implements IUserService{ ratio: 0, }); + guestUser.nbNodes = 25 + guestUser.nbIndices = 3 + return [guestUser, false]; } } catch (error) { @@ -148,6 +153,19 @@ class DbUserService implements IUserService{ console.error(error); } } + + async changeNodesIndices(nbNodes: number, nbIndices: number): Promise { + try { + const result = await SessionService.changeNodesIndices(nbNodes, nbIndices); + if (result) { + console.log("Nodes updated"); + } else { + console.log("Nodes not updated"); + } + } catch (error) { + console.error(error); + } + } } export default DbUserService \ No newline at end of file diff --git a/cryptide_project/src/model/DataManagers/IUserService.ts b/cryptide_project/src/model/DataManagers/IUserService.ts index 6ec24a9..74fd61a 100644 --- a/cryptide_project/src/model/DataManagers/IUserService.ts +++ b/cryptide_project/src/model/DataManagers/IUserService.ts @@ -2,6 +2,7 @@ import User from "../User"; interface IUserService{ fetchUserInformation(): Promise<[User | null, boolean]> + changeNodesIndices(nbNodes: number, nbIndices: number): Promise addMastermindStats(pseudo: string, score: number, time: number): Promise addEasyEnigmaStats(pseudo: string, win: number, time: number): Promise // addMediumEnigmaStats(pseudo: string, win: number, time: number): Promise diff --git a/cryptide_project/src/model/User.tsx b/cryptide_project/src/model/User.tsx index 009a934..5c7842b 100644 --- a/cryptide_project/src/model/User.tsx +++ b/cryptide_project/src/model/User.tsx @@ -7,6 +7,8 @@ class User extends Player{ public mediumEnigmaStats: any public hardEnigmaStats: any public onlineStats: any + public nbNodes: number = 25 + public nbIndices: number = 3 constructor(id: string, pseudo: string, profilePicture: string, soloStats: any, easyEnigmaStats: any, mediumEnigmaStats: any, hardEnigmaStats: any, onlineStats: any){ super(id, pseudo, profilePicture || defaultImg) diff --git a/cryptide_project/src/services/SessionService.tsx b/cryptide_project/src/services/SessionService.tsx index f555132..5836f2b 100644 --- a/cryptide_project/src/services/SessionService.tsx +++ b/cryptide_project/src/services/SessionService.tsx @@ -24,6 +24,34 @@ class SessionService { } } + static async changeNodesIndices(nbNodes: number, nbIndices: number) { + try { + const response = await fetch(ADRESSE_DBSERVER + '/session/updateNbNodes', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + nbNodes, + nbIndices + }), + credentials: 'include', + }); + + if (response.ok) { + const result = await response.json(); + return result; + } else { + const errorResponse = await response.json(); + throw new Error(errorResponse.error); + } + } catch (error) { + console.error(error); + throw error; + } + + } + static async addMastermindStats(pseudo: string, score: number, time: number){ try { const response = await fetch(ADRESSE_DBSERVER + '/session/addMastermindStats', {