refactorizacion

This commit is contained in:
Marklogo 2024-04-01 13:55:51 +02:00
parent 5c64b4e147
commit 285761e075
7 changed files with 100 additions and 62 deletions

17
public/js/cardgames.js Normal file
View File

@ -0,0 +1,17 @@
export const cardGame = (nickname, game_id) => {
var cardGameDiv = document.createElement('div');
cardGameDiv.classList.add('cardGame');
cardGameDiv.innerHTML = `<span>${nickname}</span>
<span>Esperando rival...</span>
<button onclick="eliminarPartida('${game_id}')">Cancelar</button>
`;
};
export const cardGame = (nickname, game_id) => {
var cardGameDiv = document.createElement('div');
cardGameDiv.classList.add('cardGame');
cardGameDiv.innerHTML = `<span>${nickname}</span>
<span>VS</span>
<button onclick="unirsePartida('${game_id}')">Unirse</button>
`;
};

View File

@ -0,0 +1,14 @@
export class ListaPartidas {
_partidas = [];
constructor(partidas) {
this._partidas = partidas;
}
agregarPartida(partida) {
this._partidas.push(partida);
}
get partidasAbiertas() {
return this._partidas.filter((partida) => partida.abierta);
}
}

View File

@ -0,0 +1,33 @@
export class ListaUsuarios {
_usuario = {};
_usuarios = [];
constructor(uuidUsuario, usuarios) {
this._usuario = usuarios.find((usuario) => usuario.uuid === uuidUsuario);
this._usuarios = usuarios.filter((usuario) => usuario.uuid !== uuidUsuario);
}
get usuario() {
return this._usuario;
}
get usuariosConectados() {
return this._usuarios
.filter((usuario) => usuario.conectado)
.sort((a, b) => a.nickname.localeCompare(b.nickname));
}
get usuariosDesconectados() {
return this._usuarios
.filter((usuario) => !usuario.conectado)
.sort((a, b) => a.nickname.localeCompare(b.nickname));
}
actualizaUsuario(usuario) {
const user = this.obtenerUsuarioPorUuid(usuario.uuid);
if (user) {
user.conectado = usuario.conectado;
} else {
this._usuarios.push(usuario);
}
}
obtenerUsuarioPorUuid(uuid) {
return this._usuarios.find((usuario) => usuario.uuid === uuid);
}
}

View File

@ -1,48 +1,5 @@
class ListaUsuarios { import { ListaUsuarios } from "./listausuarios.js";
_usuario = {}; import { ListaPartidas } from "./listapartidas.js";
_usuarios = [];
constructor(uuidUsuario, usuarios) {
this._usuario = usuarios.find((usuario) => usuario.uuid === uuidUsuario);
this._usuarios = usuarios.filter((usuario) => usuario.uuid !== uuidUsuario);
}
get usuario() {
return this._usuario;
}
get usuariosConectados() {
return this._usuarios
.filter((usuario) => usuario.conectado)
.sort((a, b) => a.nickname.localeCompare(b.nickname));
}
get usuariosDesconectados() {
return this._usuarios
.filter((usuario) => !usuario.conectado)
.sort((a, b) => a.nickname.localeCompare(b.nickname));
}
actualizaUsuario(usuario) {
const user = this.obtenerUsuarioPorUuid(usuario.uuid);
if (user) {
user.conectado = usuario.conectado;
} else {
this._usuarios.push(usuario);
}
}
obtenerUsuarioPorUuid(uuid) {
return this._usuarios.find((usuario) => usuario.uuid === uuid);
}
}
class ListaPartidas {
_partidas = [];
agregarPartida(partida) {
this._partidas.push(partida);
}
get partidasAbiertas() {
return this._partidas.filter((partida) => partida.abierta);
}
}
const usersConnectUlEl = document.querySelector('#users_connect'); const usersConnectUlEl = document.querySelector('#users_connect');
const usersDisconnectUlEl = document.querySelector('#users_disconnect'); const usersDisconnectUlEl = document.querySelector('#users_disconnect');
@ -54,7 +11,7 @@ const userId = localStorage.getItem('userId');
const socket = io('/salachat', { closeOnBeforeunload: true, auth: { userId } }); const socket = io('/salachat', { closeOnBeforeunload: true, auth: { userId } });
let listaUsuarios; let listaUsuarios;
let listaPartidas = new ListaPartidas(); let listaPartidas;
function unirse(data) { function unirse(data) {
console.log(data); console.log(data);
@ -117,27 +74,32 @@ function agregaMsgBroadcast(msg) {
chat.appendChild(linea); chat.appendChild(linea);
logchat.scrollTop = logchat.scrollHeight; logchat.scrollTop = logchat.scrollHeight;
} }
const cardGameHTML = (nickname, game_id) => { const cardGameHTML = (nickname, game_id) => {
var cardGameDiv = document.createElement('div'); var cardGameDiv = document.createElement('div');
cardGameDiv.classList.add('cardGame'); cardGameDiv.classList.add('cardGame');
cardGameDiv.innerHTML = cardGameDiv.innerHTML =
nickname === listaUsuarios.usuario.nickname nickname === listaUsuarios.usuario.nickname
? `<span>${nickname}</span> ? `<span>${nickname}</span>
<span>VS</span> <span>Esperando rival...</span>
<span>Esperando rival</button> <button onclick="eliminarPartida('${game_id}')">Cancelar</button>
` `
: `<span>${nickname}</span> : `<span>${nickname}</span>
<span>VS</span> <span>VS</span>
<button onclick="unirse('${game_id}')">Unirse</button> <button onclick="unirsePartida('${game_id}')">Unirse</button>
`; `;
partidasAbiertasEl.appendChild(cardGameDiv); partidasAbiertasEl.appendChild(cardGameDiv);
}; };
// Logica de negocio de la aplicacion // Logica de negocio de la aplicacion
//Entra a la sala //Entra a la sala
const entraSala = (usuarios) => { const entraSala = ({ usuarios, partidas }) => {
listaUsuarios = new ListaUsuarios(userId, usuarios); listaUsuarios = new ListaUsuarios(userId, usuarios);
listarUsuarios(); listarUsuarios();
listaPartidas = new ListaPartidas(partidas);
listarPartidasAbiertas();
}; };
// Actualiza info Usuarios // Actualiza info Usuarios
const actualizaUsuarios = (usuario) => { const actualizaUsuarios = (usuario) => {

View File

@ -56,7 +56,7 @@
</div> </div>
</div> </div>
<script src="socket.io/socket.io.js"></script> <script src="socket.io/socket.io.js"></script>
<script src="./js/salaespera.js"></script> <script type="module" src="./js/salaespera.js"></script>
</body> </body>
</html> </html>

View File

@ -19,11 +19,16 @@ export class SalaChatGateway
handleConnection(client: Socket) { handleConnection(client: Socket) {
const userId = client.handshake.auth.userId; const userId = client.handshake.auth.userId;
const userConectado = this.salaChatService.conectaUsuarioUUID(userId); const userConectado = this.salaChatService.conectaUsuarioUUID(userId);
if (userConectado){ if (userConectado) {
client.join('chat_general'); client.join('chat_general');
client.emit('onConnectRoom',this.salaChatService.listaUsuariosSinPartidas); client.emit('onConnectRoom', {
client.broadcast.to('chat_general').emit('onUserConnectRoom',userConectado); usuarios: this.salaChatService.listaUsuariosSinPartidas,
}else{ partidas: this.salaChatService.partidasAbiertas,
});
client.broadcast
.to('chat_general')
.emit('onUserConnectRoom', userConectado);
} else {
client.disconnect(); client.disconnect();
} }
} }
@ -31,8 +36,10 @@ export class SalaChatGateway
handleDisconnect(client: Socket) { handleDisconnect(client: Socket) {
const userId = client.handshake.auth.userId; const userId = client.handshake.auth.userId;
const userDesconectado = this.salaChatService.desconectaUsuarioUUID(userId); const userDesconectado = this.salaChatService.desconectaUsuarioUUID(userId);
if (userDesconectado){ if (userDesconectado) {
client.broadcast.to('chat_general').emit('onUserDisconnectRoom',userDesconectado); client.broadcast
.to('chat_general')
.emit('onUserDisconnectRoom', userDesconectado);
} }
client.leave('chat_general'); client.leave('chat_general');
} }
@ -42,20 +49,20 @@ export class SalaChatGateway
const userId = client.handshake.auth.userId; const userId = client.handshake.auth.userId;
const user = this.salaChatService.getUsuarioUUID(userId); const user = this.salaChatService.getUsuarioUUID(userId);
if (user) { if (user) {
this.server.to('chat_general').emit('chatMsg', { uuid:userId, msg }); this.server.to('chat_general').emit('chatMsg', { uuid: userId, msg });
} else { } else {
client.disconnect(); client.disconnect();
} }
} }
sendBroadcastMsg(msg:string){ sendBroadcastMsg(msg: string) {
this.server.to('chat_general').emit('broadcastMsg',msg); this.server.to('chat_general').emit('broadcastMsg', msg);
} }
@SubscribeMessage('creaPartida') @SubscribeMessage('creaPartida')
handleCreaPartida(client: Socket) { handleCreaPartida(client: Socket) {
const userId = client.handshake.auth.userId; const userId = client.handshake.auth.userId;
const partida= this.salaChatService.creaPartida(userId); const partida = this.salaChatService.creaPartida(userId);
this.server.to('chat_general').emit('on_create_partida',partida); this.server.to('chat_general').emit('on_create_partida', partida);
} }
} }

View File

@ -19,6 +19,11 @@ export class SalaChatService {
); );
} }
get partidasAbiertas(){
return this.partidasService.partidasAbiertas;
}
getUsuarioUUID(uuid: string) { getUsuarioUUID(uuid: string) {
return this.usuariosService.getUsuarioByUUID(uuid); return this.usuariosService.getUsuarioByUUID(uuid);
} }