Kaynağa Gözat

Some clean up to the dispatch logic

Kirk Trombley 5 yıl önce
ebeveyn
işleme
435f276d9b

+ 19 - 23
client/src/domain/gameStore.js

@@ -50,33 +50,36 @@ export const [
     playerId: null,
     gameState: PRE_ROUND,
   }),
-  joinGame: async ([set, get]) => {
-    const gameId = get.gameId();
-    const name = get.playerName();
-    const { playerId } = await joinGame(gameId, name);
-    // TODO pull this chunk out
-    const { currentRound, coord, timer } = await getCurrentRound(gameId, playerId);
+  updateCurrentRound: async ([set, get]) => {
+    const { currentRound, coord, timer } = await getCurrentRound(
+      get.gameId(), 
+      get.playerId()
+    );
     set({
-      playerId,
       currentRound,
       targetPoint: coord,
       panoStartPosition: coord,
       panoStartPov: { heading: 0, pitch: 0 },
       roundSeconds: timer,
     });
+  },
+  joinGame: async ([set, get]) => {
+    const gameId = get.gameId();
+    const name = get.playerName();
+    const { playerId } = await joinGame(gameId, name);
+    set({ playerId });
+    await dispatch.updateCurrentRound();
     saveGameInfoToLocalStorage(gameId, name, playerId);
   },
-  rejoinGame: async ([set]) => {
+  rejoinGame: async ([set, get]) => {
     const { gameId, playerName, playerId } = getGameInfoFromLocalStorage();
     set({ gameId, playerName, playerId });
-    const { currentRound, coord, timer } = await getCurrentRound(gameId, playerId);
-    const { savedPosition, savedPov, savedTimer } = getRoundInfoFromLocalStorage();
+    await dispatch.updateCurrentRound();
+    const { timer, position, pov } = getRoundInfoFromLocalStorage();
     set({
-      currentRound,
-      targetPoint: coord,
-      roundSeconds: savedTimer ?? timer,
-      panoStartPosition: savedPosition ?? coord,
-      panoStartPov: savedPov ?? { heading: 0, pitch: 0 },
+      roundSeconds: timer ?? get.roundSeconds(),
+      panoStartPosition: position ?? get.panoStartPosition(),
+      panoStartPov: pov ?? get.panoStartPov(),
       gameState: IN_ROUND,
     });
   },
@@ -102,14 +105,7 @@ export const [
       },
       gameState: POST_ROUND,
     });
-    const { currentRound, coord, timer } = await getCurrentRound(gameId, playerId);
-    set({
-      currentRound,
-      targetPoint: coord,
-      panoStartPosition: coord,
-      panoStartPov: { heading: 0, pitch: 0 },
-      roundSeconds: timer,
-    });
+    await dispatch.updateCurrentRound();
   },
   goToSummary: ([set], gameId, clearSavedGame = true) => {
     if (gameId) {

+ 5 - 4
client/src/domain/localStorageMethods.js

@@ -7,6 +7,7 @@ const localStorageTimer = "terrassumptions:timer";
 
 const localStoragePanoLat = "terrassumptions:pano:lat";
 const localStoragePanoLng = "terrassumptions:pano:lng";
+
 const localStoragePanoHeading = "terrassumptions:pano:heading";
 const localStoragePanoPitch = "terrassumptions:pano:pitch";
 
@@ -62,6 +63,7 @@ const parseFloatFromStorage = key => {
 }
 
 export const getRoundInfoFromLocalStorage = () => {
+  const timer = localStorage.getItem(localStorageTimer);
   const position = {
     lat: parseFloatFromStorage(localStoragePanoLat),
     lng: parseFloatFromStorage(localStoragePanoLng),
@@ -70,11 +72,10 @@ export const getRoundInfoFromLocalStorage = () => {
     heading: parseFloatFromStorage(localStoragePanoHeading),
     pitch: parseFloatFromStorage(localStoragePanoPitch),
   };
-  const timer = localStorage.getItem(localStorageTimer);
 
   return {
-    savedPosition: position.lat !== null && position.lng !== null ? position : null,
-    savedPov: pov.heading !== null && pov.pitch !== null ? pov : null,
-    savedTimer: timer !== null ? Number.parseInt(timer) : null,
+    timer: timer !== null ? Number.parseInt(timer) : null,
+    position: position.lat !== null && position.lng !== null ? position : null,
+    pov: pov.heading !== null && pov.pitch !== null ? pov : null,
   }
 };