Skip to content
This repository has been archived by the owner on Jun 6, 2024. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
adriandrs committed Jun 6, 2024
2 parents c8eefec + 90bede7 commit 32a92e7
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 157 deletions.
243 changes: 87 additions & 156 deletions client/public/scripts/step3.js
Original file line number Diff line number Diff line change
@@ -1,179 +1,110 @@
var contraseña = document.getElementById('contraseña');
var confirmacion = document.getElementById('nueva-contraseña');
var politicas = document.getElementById('state');
var proximamente = document.getElementById('oculto');
proximamente.style.position = 'fixed';
proximamente.style.top = '50%';
proximamente.style.left = '50%';
proximamente.style.transform = 'translate(-50%, -50%)';
proximamente.style.zIndex = '50';
proximamente.innerHTML = `<h1 className="soon-title">
<i id='alarm' class="fa-solid fa-spinner"></i>
¡Procesando datos!
<i id='alarm' class="fa-solid fa-spinner"></i>
</h1>
<h4 className="soon-desc">
La contraseña esta <br />
siendo procesada. <br />
</h4>`;


var ejecutandose = false;

proximamente.style.display = 'none';
contraseña.addEventListener('input',()=>{if(contraseña.value.length > 0) contraseña.style.borderColor='#ccc';});
confirmacion.addEventListener('input',()=>{if(confirmacion.value.length > 0) confirmacion.style.borderColor='#ccc';});


function ShowSoon(id){
let mostrar = document.getElementById(id);

if(mostrar.style.display == 'none'){
mostrar.style.display = 'inline-block';
}
else{
mostrar.style.display = 'none';
}
}



document.getElementById('step3').addEventListener('click',async ()=>{

if(ejecutandose == true){
// el usuario le dio en continuar, pero la vez pasada que le dio continuar aun no termina
document.getElementById('step3').addEventListener('click', async () => {
if (ejecutandose) {
return;
}
else{
// si estaba en false, ahora la funcion se ejecutara, y activaremos el estado de ejecucion como true
ejecutandose = true;
}


document.cookie = "Rem_cookie=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
ejecutandose = true;
document.cookie = "Rem_cookie=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

if(politicas.checked == false){
let toastBox = document.getElementById('toastBox');
let div = document.createElement('div');
div.classList.add('toast');
div.innerHTML = '<div id="texto">Debes de aceptar las políticas</div><div id="icono"><i class="fa-solid fa-lock"></i></div>';
div.classList.add('blue');
toastBox.appendChild(div);
setTimeout(()=>{
div.remove();
},6000);
// el proceso termino y el estado vuelve a false, y se hace un return para salir de la funcion
if (!politicas.checked) {
mostrarToast('Debes de aceptar las políticas', 'blue', 'fa-lock');
ejecutandose = false;
return;
}

ShowSoon('oculto');

await new Promise(resolve=> setTimeout(resolve, 2000));
await new Promise(resolve => setTimeout(resolve, 2000));

try {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 10000); // Timeout de 10 segundos

const respuesta = await fetch("/api/step3",{
method:'POST',
headers:{
"Content-Type":"application/json"
},
body:JSON.stringify({
pass:contraseña.value,
again_pass:confirmacion.value,
})
})
const respuesta = await fetch("/api/step3", {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
pass: contraseña.value,
again_pass: confirmacion.value,
}),
signal: controller.signal
});

if(!respuesta.ok){
ShowSoon('oculto');
ejecutandose = false;
return;
}

clearTimeout(timeoutId);

const respuestaJson = await respuesta.json();
if (!respuesta.ok) {
throw new Error('Network response was not ok');
}

const respuestaJson = await respuesta.json();

if(respuestaJson.confirmar){
if (respuestaJson.confirmar) {
manejarRespuestaInvalida('Las contraseñas no concuerdan', 'yellow', 'fa-equals');
} else if (respuestaJson.invalidas) {
manejarContraseñasInvalidas(respuestaJson.invalidas);
} else if (respuestaJson.redirect) {
await manejarRedireccion(respuestaJson.redirect);
}
} catch (error) {
console.error('Fetch error:', error);
mostrarToast('Hubo un problema con la solicitud. Inténtalo de nuevo.', 'red', 'fa-exclamation-triangle');
} finally {
ShowSoon('oculto');
ejecutandose = false;
}
});

function mostrarToast(mensaje, color, icono) {
let toastBox = document.getElementById('toastBox');
let div = document.createElement('div');
div.classList.add('toast', color);
div.innerHTML = `<div id="texto">${mensaje}</div><div id="icono"><i class="fa-solid ${icono}"></i></div>`;
toastBox.appendChild(div);
setTimeout(() => {
div.remove();
}, 6000);
}

// ambas contraseñas no concuerdan
contraseña.value = '';
contraseña.style.borderColor = 'yellow';
confirmacion.value = '';
confirmacion.style.borderColor = 'yellow';
function manejarRespuestaInvalida(mensaje, color, icono) {
contraseña.value = '';
confirmacion.value = '';
contraseña.style.borderColor = color;
confirmacion.style.borderColor = color;
mostrarToast(mensaje, color, icono);
}

let toastBox = document.getElementById('toastBox');
function manejarContraseñasInvalidas(invalidas) {
contraseña.value = '';
confirmacion.value = '';
contraseña.style.borderColor = 'red';
confirmacion.style.borderColor = 'red';
let toastBox = document.getElementById('toastBox');
invalidas.forEach(mensaje => {
let div = document.createElement('div');
div.classList.add('toast');
div.innerHTML = '<div id="texto">Las contraseñas no concuerdan</div> <div id="icono"> <i class="fa-solid fa-equals"></i> </div>';
div.classList.add('yellow');
div.classList.add('toast', 'red');
div.innerHTML = `<div id="texto">Tu contraseña ${mensaje}</div><div id="icono"><i class="fa-solid fa-circle-xmark"></i></div>`;
toastBox.appendChild(div);
setTimeout(()=>{
setTimeout(() => {
div.remove();
},6000);
ejecutandose = false;
return;
}

if(respuestaJson.invalidas){
ShowSoon('oculto');

// ambas contraseñas si concuerdan, pero no son validas
contraseña.value = '';
contraseña.style.borderColor = 'red';
confirmacion.value = '';
confirmacion.style.borderColor = 'red';

let toastBox = document.getElementById('toastBox');
let arreglo = respuestaJson.invalidas;
for(let i in arreglo){
let div = document.createElement('div');
div.classList.add('toast');
div.innerHTML = '<div id="texto">Tu contraseña '+arreglo[i]+'</div> <div id="icono"><i class="fa-solid fa-circle-xmark"></i></div>';
toastBox.appendChild(div);

setTimeout(()=>{
div.remove();
},6000)
}
ejecutandose = false;
return;
}

if(respuestaJson.redirect){

if(respuestaJson.redirect = '/spa/signUp/Confirmacion'){

proximamente.innerHTML = `<img id="process-img" src="../../pictures/ArrowCut.png" />`;

await new Promise(resolve=> setTimeout(resolve, 1200));
}, 6000);
});
}

proximamente.innerHTML = `<h1 className="soon-title">
<i id='alarm' class="fa-solid fa-user-plus"></i>
Inserción de Usuario
<i id='alarm' class="fa-solid fa-user-plus"></i>
</h1>
<h4 className="soon-desc">
Felicidades, en un momento se creará tu cuenta. <br />
Este proceso puede tardar unos segundos, se paciente. <br />
</h4>`;
}

window.location.href = respuestaJson.redirect;
async function manejarRedireccion(url) {
if (url === '/spa/signUp/Confirmacion') {
proximamente.innerHTML = `<img id="process-img" src="../../pictures/ArrowCut.png" />`;
await new Promise(resolve => setTimeout(resolve, 1200));
proximamente.innerHTML = `<h1 className="soon-title">
<i id='alarm' class="fa-solid fa-user-plus"></i>
Inserción de Usuario
<i id='alarm' class="fa-solid fa-user-plus"></i>
</h1>
<h4 className="soon-desc">
Felicidades, en un momento se creará tu cuenta. <br />
Este proceso puede tardar unos segundos, se paciente. <br />
</h4>`;
}

})


document.getElementById('cancelar').addEventListener('click', ()=>{

document.cookie = "Megumin_cookie=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie = "Nakano_Itsuki=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie = "Rem_cookie=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

document.getElementById('contraseña').value = '';
document.getElementById('nueva-contraseña').value = '';
document.getElementById('state').checked = false;

window.location.href = '/';
})
window.location.href = url;
}
2 changes: 1 addition & 1 deletion server/db/connection.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export async function endConnection() {
// Verificamos que exista una conexion
if (pool) {
console.log("RELEASE CONNECTION");
await pool.release();
await pool.releaseConnection();
}
}

Expand Down

0 comments on commit 32a92e7

Please sign in to comment.