fix #114: refactorización de AsignaturaDetailPage y hooks relacionados: persistencia, caché y tipado
- Persistencia de cambios de "Datos generales" usando updateAsignatura.mutate. - Corregido el manejo de caché: uso de qk centralizada y merge en setQueryData para no perder relaciones. - Corregidos los tipos devueltos por subjects_get. - Evitado estado inválido tras guardar (merge local + actualización de cache). Verificar: editar → guardar → volver al plan → reingresar muestra datos actualizados sin parpadeos.
This commit is contained in:
@@ -87,7 +87,7 @@ function AsignaturasPage() {
|
||||
const navigate = useNavigate()
|
||||
|
||||
// 1. Fetch de datos reales
|
||||
const { data: asignaturasApi, isLoading: loadingAsig } =
|
||||
const { data: asignaturaApi, isLoading: loadingAsig } =
|
||||
usePlanAsignaturas(planId)
|
||||
const { data: lineasApi, isLoading: loadingLineas } = usePlanLineas(planId)
|
||||
|
||||
@@ -99,8 +99,8 @@ function AsignaturasPage() {
|
||||
|
||||
// 3. Procesamiento de datos
|
||||
const asignaturas = useMemo(
|
||||
() => mapAsignaturas(asignaturasApi),
|
||||
[asignaturasApi],
|
||||
() => mapAsignaturas(asignaturaApi),
|
||||
[asignaturaApi],
|
||||
)
|
||||
const lineas = useMemo(() => lineasApi || [], [lineasApi])
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@ function MapaCurricularPage() {
|
||||
const { mutate: createLinea } = useCreateLinea()
|
||||
const { mutate: updateLineaApi } = useUpdateLinea()
|
||||
const { mutate: deleteLineaApi } = useDeleteLinea()
|
||||
const { data: asignaturasApi, isLoading: loadingAsig } =
|
||||
const { data: asignaturaApi, isLoading: loadingAsig } =
|
||||
usePlanAsignaturas(planId)
|
||||
const { data: lineasApi, isLoading: loadingLineas } = usePlanLineas(planId)
|
||||
const [asignaturas, setAsignaturas] = useState<Array<Asignatura>>([])
|
||||
@@ -286,9 +286,9 @@ function MapaCurricularPage() {
|
||||
}, [lineas])
|
||||
|
||||
useEffect(() => {
|
||||
if (asignaturasApi)
|
||||
setAsignaturas(mapAsignaturasToAsignaturas(asignaturasApi))
|
||||
}, [asignaturasApi])
|
||||
if (asignaturaApi)
|
||||
setAsignaturas(mapAsignaturasToAsignaturas(asignaturaApi))
|
||||
}, [asignaturaApi])
|
||||
|
||||
useEffect(() => {
|
||||
if (lineasApi) setLineas(mapLineasToLineaCurricular(lineasApi))
|
||||
|
||||
Reference in New Issue
Block a user