From c7aac9d2ce62dfa2dc739b204af6313da171e58a Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Fri, 9 Apr 2021 15:13:06 +1000 Subject: [PATCH] Updated player session id syncing --- src/contexts/PlayerContext.js | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/contexts/PlayerContext.js b/src/contexts/PlayerContext.js index 6ae1d1c..26cd95c 100644 --- a/src/contexts/PlayerContext.js +++ b/src/contexts/PlayerContext.js @@ -62,32 +62,50 @@ export function PlayerProvider({ session, children }) { }, [playerState, database, databaseStatus]); useEffect(() => { - setPlayerState((prevState) => ({ - ...prevState, - userId, - })); + if (userId) { + setPlayerState((prevState) => { + if (prevState) { + return { + ...prevState, + userId, + }; + } + return prevState; + }); + } }, [userId, setPlayerState]); useEffect(() => { + function updateSessionId() { + setPlayerState((prevState) => { + if (prevState) { + return { + ...prevState, + sessionId: session.id, + }; + } + return prevState; + }); + } function handleSocketConnect() { // Set the player state to trigger a sync - setPlayerState({ ...playerState, sessionId: session.id }); + updateSessionId(); } function handleSocketStatus(status) { if (status === "joined") { - setPlayerState({ ...playerState, sessionId: session.id }); + updateSessionId(); } } session.on("status", handleSocketStatus); session.socket?.on("connect", handleSocketConnect); - session.socket?.on("reconnect", handleSocketConnect); + session.socket?.io.on("reconnect", handleSocketConnect); return () => { session.off("status", handleSocketStatus); session.socket?.off("connect", handleSocketConnect); - session.socket?.off("reconnect", handleSocketConnect); + session.socket?.io.off("reconnect", handleSocketConnect); }; });