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);
    }
  }