fix(wizard): cache geo singleton, feedback carga, debounce draft

geo_paraguay_full.json se cargaba dos veces sin cache compartido.
Módulo lib/geo-cache.ts singleton: un fetch para toda la sesión.
Feedback visual mientras carga (disabled + placeholder) y si falla
(mensaje + texto libre). debounce 500ms en saveDraft para no escribir
en localStorage en cada keystroke.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
markosbenitez
2026-06-28 22:04:12 -03:00
parent 5472043a33
commit 704d2407e8
4 changed files with 42 additions and 13 deletions

View File

@@ -70,7 +70,8 @@ export function WizardForm({ survey, schema }: WizardFormProps) {
useEffect(() => {
if (!hydrated) return
saveDraft(survey.id, state.answers)
const timer = setTimeout(() => saveDraft(survey.id, state.answers), 500)
return () => clearTimeout(timer)
}, [state.answers, hydrated, survey.id])
const screens = resolveScreens(schema, state.answers)
@@ -192,10 +193,12 @@ export function WizardForm({ survey, schema }: WizardFormProps) {
setErrors((e) => ({ ...e, [screen.question!.code]: 'Este campo es obligatorio.' }))
return
}
saveDraft(survey.id, state.answers)
setState((s) => next(s, schema))
}
function handleBack() {
saveDraft(survey.id, state.answers)
setState((s) => back(s, schema))
}