From 91245f256ff2c174ab8d5321a833d435ca9c2d42 Mon Sep 17 00:00:00 2001 From: Julian Sandoval <76192811+Julian-Sandoval-x@users.noreply.github.com> Date: Wed, 5 Jun 2024 18:35:12 -0700 Subject: [PATCH 1/2] Modificacion de funcion de desconexion --- server/db/connection.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/db/connection.js b/server/db/connection.js index 678abb7d..de54d69e 100644 --- a/server/db/connection.js +++ b/server/db/connection.js @@ -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(); } } From 7027630687420dccb18118c91eee68c58a5cae35 Mon Sep 17 00:00:00 2001 From: KarimSoto Date: Wed, 5 Jun 2024 18:36:06 -0700 Subject: [PATCH 2/2] prueba --- client/public/scripts/step3.js | 243 ++++++++++++--------------------- 1 file changed, 87 insertions(+), 156 deletions(-) diff --git a/client/public/scripts/step3.js b/client/public/scripts/step3.js index 2c273029..f8c34bfb 100644 --- a/client/public/scripts/step3.js +++ b/client/public/scripts/step3.js @@ -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 = `

- - ¡Procesando datos! - -

-

- La contraseña esta
- siendo procesada.
-

`; - - -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 = '
Debes de aceptar las políticas
'; - 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 = `
${mensaje}
`; + 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 = '
Las contraseñas no concuerdan
'; - div.classList.add('yellow'); + div.classList.add('toast', 'red'); + div.innerHTML = `
Tu contraseña ${mensaje}
`; 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 = '
Tu contraseña '+arreglo[i]+'
'; - toastBox.appendChild(div); - - setTimeout(()=>{ - div.remove(); - },6000) - } - ejecutandose = false; - return; - } - - if(respuestaJson.redirect){ - - if(respuestaJson.redirect = '/spa/signUp/Confirmacion'){ - - proximamente.innerHTML = ``; - - await new Promise(resolve=> setTimeout(resolve, 1200)); + }, 6000); + }); +} - proximamente.innerHTML = `

- - Inserción de Usuario - -

-

- Felicidades, en un momento se creará tu cuenta.
- Este proceso puede tardar unos segundos, se paciente.
-

`; - } - - window.location.href = respuestaJson.redirect; +async function manejarRedireccion(url) { + if (url === '/spa/signUp/Confirmacion') { + proximamente.innerHTML = ``; + await new Promise(resolve => setTimeout(resolve, 1200)); + proximamente.innerHTML = `

+ + Inserción de Usuario + +

+

+ Felicidades, en un momento se creará tu cuenta.
+ Este proceso puede tardar unos segundos, se paciente.
+

`; } - -}) - - -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 = '/'; -}) \ No newline at end of file + window.location.href = url; +} \ No newline at end of file