From 063307be5b3a8dd727ede4cc6ab5595ac1cc6639 Mon Sep 17 00:00:00 2001 From: PG fom78 Date: Sun, 30 Apr 2023 02:41:47 -0300 Subject: [PATCH] fix bugs when refresh with modal active --- projects/02-tic-tac-toe/src/App.jsx | 21 ++++++++++++------- .../02-tic-tac-toe/src/logic/storage/index.js | 4 +++- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/projects/02-tic-tac-toe/src/App.jsx b/projects/02-tic-tac-toe/src/App.jsx index 404193f..97a20d5 100644 --- a/projects/02-tic-tac-toe/src/App.jsx +++ b/projects/02-tic-tac-toe/src/App.jsx @@ -20,7 +20,11 @@ function App () { }) // null es que no hay ganador, false es que hay un empate - const [winner, setWinner] = useState(null) + const [winner, setWinner] = useState(() => { + const winnerFromStorage = window.localStorage.getItem('winner') + if (winnerFromStorage === 'null') return null + return winnerFromStorage + }) const resetGame = () => { setBoard(Array(9).fill(null)) @@ -41,19 +45,22 @@ function App () { // cambiar el turno const newTurn = turn === TURNS.X ? TURNS.O : TURNS.X setTurn(newTurn) - // guardar aqui partida - saveGameToStorage({ - board: newBoard, - turn: newTurn - }) + // revisar si hay ganador - const newWinner = checkWinnerFrom(newBoard) + let newWinner = checkWinnerFrom(newBoard) if (newWinner) { confetti() setWinner(newWinner) } else if (checkEndGame(newBoard)) { setWinner(false) // empate + newWinner = false } + // guardar aqui partida + saveGameToStorage({ + board: newBoard, + turn: newTurn, + winner: newWinner + }) } return ( diff --git a/projects/02-tic-tac-toe/src/logic/storage/index.js b/projects/02-tic-tac-toe/src/logic/storage/index.js index 746ee2a..2c1c711 100644 --- a/projects/02-tic-tac-toe/src/logic/storage/index.js +++ b/projects/02-tic-tac-toe/src/logic/storage/index.js @@ -1,10 +1,12 @@ -export const saveGameToStorage = ({ board, turn }) => { +export const saveGameToStorage = ({ board, turn, winner }) => { // guardar aqui partida window.localStorage.setItem('board', JSON.stringify(board)) window.localStorage.setItem('turn', turn) + window.localStorage.setItem('winner', winner) } export const resetGameStorage = () => { window.localStorage.removeItem('board') window.localStorage.removeItem('turn') + window.localStorage.removeItem('winner') }