diff --git a/scripts/chat-bot.ts b/scripts/chat-bot.ts index 074d7ea..9bfce84 100644 --- a/scripts/chat-bot.ts +++ b/scripts/chat-bot.ts @@ -14,8 +14,10 @@ import { createInterface } from "readline"; import { prisma } from "../src/lib/prisma"; import { procesarMensaje } from "../src/lib/whatsapp-bot"; +import { normalizarTelefono } from "../src/lib/telefono"; -const telefono = process.argv[2] ?? "5493510000000"; +// Normalizado igual que en el bot: si no, /reset no encuentra la conversación. +const telefono = normalizarTelefono(process.argv[2] ?? "5493510000000"); function mostrar(resp: { tipo: string; texto: string; botones?: { titulo: string }[] }[]) { for (const r of resp) { diff --git a/src/app/cliente/registro/page.tsx b/src/app/cliente/registro/page.tsx index e694dad..b325b69 100644 --- a/src/app/cliente/registro/page.tsx +++ b/src/app/cliente/registro/page.tsx @@ -23,12 +23,18 @@ export default function RegistroPage() { function handleTelefono(e: React.ChangeEvent) { const soloDigitos = e.target.value.replace(/\D/g, "").slice(0, 10); setForm((f) => ({ ...f, telefono: soloDigitos })); - if (soloDigitos === "") setTelefonoError(""); - else if (soloDigitos.startsWith("0")) setTelefonoError("Sin el 0 de la característica"); - else if (soloDigitos.length < 10) setTelefonoError("Faltan dígitos (son 10 en total)"); + // Mientras tipea sólo se avisa lo que ya es un error seguro; lo de "faltan + // dígitos" espera a que salga del campo, para no retarlo por la mitad. + if (soloDigitos.startsWith("0")) setTelefonoError("Sin el 0 de la característica"); + else if (soloDigitos.startsWith("15")) setTelefonoError("Sin el 15, poné la característica"); else setTelefonoError(""); } + function handleTelefonoBlur() { + if (form.telefono && !esLocalArgentinoValido(form.telefono)) + setTelefonoError("Son 10 dígitos: característica sin el 0 y número sin el 15"); + } + async function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (!esLocalArgentinoValido(form.telefono)) { @@ -76,6 +82,7 @@ export default function RegistroPage() { error={telefonoError} value={form.telefono} onChange={handleTelefono} + onBlur={handleTelefonoBlur} required /> {error &&

{error}

} diff --git a/src/lib/telefono.ts b/src/lib/telefono.ts index f682cc6..a24e94a 100644 --- a/src/lib/telefono.ts +++ b/src/lib/telefono.ts @@ -20,7 +20,9 @@ export const PREFIJO_WHATSAPP_AR = "549"; */ export function esLocalArgentinoValido(local: string): boolean { const d = normalizarTelefono(local); - return d.length === 10 && !d.startsWith("0"); + // Ninguna característica argentina empieza con 0 (es el prefijo de larga distancia) + // ni con 15 (el viejo prefijo de celular), así que esos casos son error de tipeo. + return d.length === 10 && !d.startsWith("0") && !d.startsWith("15"); } /** Número local a formato WhatsApp: 1141984844 → 5491141984844. */