diff --git a/src/usePresence/usePresence.tsx b/src/usePresence/usePresence.tsx index d9135e0..4ee04be 100644 --- a/src/usePresence/usePresence.tsx +++ b/src/usePresence/usePresence.tsx @@ -17,14 +17,16 @@ export function usePresence( channel.on('presence_state', (newState) => { _setPresence((prevState) => { if (Object.keys(prevState).length === 0) return newState; - return Presence.syncState(prevState, newState); + const nextState = {...prevState}; + return Presence.syncState(nextState, newState); }); }); channel.on('presence_diff', (newDiff) => { _setPresence((prevState) => { - if (Object.keys(prevState).length === 0) return prevState; - return Presence.syncDiff(prevState, newDiff); + // Note that prevState might be empty, we still need to sync it + const nextState = {...prevState}; + return Presence.syncDiff(nextState, newDiff); }); });