const User = require("./User.js"); const state = require("./state.js"); /** * * @param {string} socketId * @param {number|undefined} lobbyId * @returns {Lobby} */ function joinLobby(socketId, lobbyId=undefined) { let lobby = state.getLobby(lobbyId); if (!lobby) { lobby = state.createRandomLobby(); } lobby.addUser(new User(socketId)); if (!lobby.hasLeader()) { lobby.setLeader(socketId); } state.lobbies[lobby.name] = lobby; return lobby; } function leaveLobby(socketId) { Object.keys(state.lobbies).forEach(lobbyId => { const lobby = state.getLobby(lobbyId); lobby.removeUser(socketId); if (!lobby.hasUsers()) { state.removeLobby(lobbyId); return; } if (lobby.getLeader() === socketId) { lobby.setRandomLeader(); } }); } module.exports = {joinLobby, leaveLobby};