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:
@@ -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))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user