Selaa lähdekoodia

Writing logic to store some game information in localStorage

Kirk Trombley 5 vuotta sitten
vanhempi
commit
f17a25523a
2 muutettua tiedostoa jossa 38 lisäystä ja 4 poistoa
  1. 15 4
      client/src/domain/gameStore.js
  2. 23 0
      client/src/domain/localStorageMethods.js

+ 15 - 4
client/src/domain/gameStore.js

@@ -1,6 +1,7 @@
 import { PRE_GAME, PRE_ROUND, IN_ROUND, POST_ROUND, POST_GAME } from "./GameState";
 import { createStore } from "../store";
 import { joinGame, sendGuess } from "./apiMethods";
+import { saveGameInfoToLocalStorage, clearGameInfoFromLocalStorage } from "./localStorageMethods";
 
 export const [
   {
@@ -37,7 +38,14 @@ export const [
     const name = get.playerName();
     const { playerId } = await joinGame(gameId, name);
     set({ playerId });
+    saveGameInfoToLocalStorage(gameId, name, playerId);
   },
+  rejoinGame: ([set], gameId, playerName, playerId) => set({ 
+    gameId, 
+    playerName, 
+    playerId, 
+    gameState: IN_ROUND,
+  }),
   startRound: ([set]) => set({ gameState: IN_ROUND }),
   submitGuess: async ([set, get], selectedPoint, roundNum, targetPoint) => {
     const { score, totalScore } = await sendGuess(
@@ -56,8 +64,11 @@ export const [
       gameState: POST_ROUND,
     });
   },
-  goToSummary: ([set, get], gameId) => set({
-    gameId: gameId || get.gameId(),
-    gameState: POST_GAME,
-  }),
+  goToSummary: ([set, get], gameId) => {
+    clearGameInfoFromLocalStorage();
+    set({
+      gameId: gameId || get.gameId(),
+      gameState: POST_GAME,
+    });
+  },
 });

+ 23 - 0
client/src/domain/localStorageMethods.js

@@ -0,0 +1,23 @@
+
+const localStorageGameId = "terrassumptions:gameId";
+const localStoragePlayerName = "terrassumptions:playerName";
+const localStoragePlayerId = "terrassumptions:playerId";
+
+export const saveGameInfoToLocalStorage = (gameId, playerName, playerId) => {
+  localStorage.setItem(localStorageGameId, gameId);
+  localStorage.setItem(localStoragePlayerName, playerName);
+  localStorage.setItem(localStoragePlayerId, playerId);
+}
+
+export const clearGameInfoFromLocalStorage = () => {
+  localStorage.removeItem(localStorageGameId);
+  localStorage.removeItem(localStoragePlayerName);
+  localStorage.removeItem(localStoragePlayerId);
+}
+
+export const getGameInfoFromLocalStorage = () => {
+  const gameId = localStorage.getItem(localStorageGameId);
+  const playerName = localStorage.getItem(localStoragePlayerName);
+  const playerId = localStorage.getItem(localStoragePlayerId);
+  return { gameId, playerName, playerId };
+}