Se agrega persistencia en tab de datos y mapa curricular
fix #42 fix #54
This commit is contained in:
@@ -1,13 +1,8 @@
|
||||
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
|
||||
import { qk } from '../query/keys'
|
||||
import type { UUID } from '../types/domain'
|
||||
import type {
|
||||
BibliografiaUpsertInput,
|
||||
SubjectsCreateManualInput,
|
||||
SubjectsUpdateFieldsPatch,
|
||||
} from '../api/subjects.api'
|
||||
|
||||
import {
|
||||
ai_generate_subject,
|
||||
asignaturas_update,
|
||||
subjects_bibliografia_list,
|
||||
subjects_clone_from_existing,
|
||||
subjects_create_manual,
|
||||
@@ -21,6 +16,14 @@ import {
|
||||
subjects_update_contenido,
|
||||
subjects_update_fields,
|
||||
} from '../api/subjects.api'
|
||||
import { qk } from '../query/keys'
|
||||
|
||||
import type {
|
||||
BibliografiaUpsertInput,
|
||||
SubjectsCreateManualInput,
|
||||
SubjectsUpdateFieldsPatch,
|
||||
} from '../api/subjects.api'
|
||||
import type { UUID } from '../types/domain'
|
||||
|
||||
export function useSubject(subjectId: UUID | null | undefined) {
|
||||
return useQuery({
|
||||
@@ -159,7 +162,7 @@ export function useUpdateSubjectContenido() {
|
||||
const qc = useQueryClient()
|
||||
|
||||
return useMutation({
|
||||
mutationFn: (vars: { subjectId: UUID; unidades: any[] }) =>
|
||||
mutationFn: (vars: { subjectId: UUID; unidades: Array<any> }) =>
|
||||
subjects_update_contenido(vars.subjectId, vars.unidades),
|
||||
onSuccess: (updated) => {
|
||||
qc.setQueryData(qk.asignatura(updated.id), updated)
|
||||
@@ -194,3 +197,28 @@ export function useGenerateSubjectDocumento() {
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
export function useUpdateAsignatura() {
|
||||
const qc = useQueryClient()
|
||||
|
||||
return useMutation({
|
||||
mutationFn: (vars: {
|
||||
asignaturaId: UUID
|
||||
patch: Partial<SubjectsUpdateFieldsPatch>
|
||||
}) => asignaturas_update(vars.asignaturaId, vars.patch),
|
||||
|
||||
onSuccess: (updated) => {
|
||||
// 1. Actualizamos la materia específica en la caché si tienes un query de "detalle"
|
||||
qc.setQueryData(['asignatura', updated.id], updated)
|
||||
|
||||
// 2. IMPORTANTÍSIMO: Invalidamos la lista de materias del plan
|
||||
// para que el mapa curricular vea los cambios (créditos, horas, nombre, etc.)
|
||||
qc.invalidateQueries({
|
||||
queryKey: ['plan_asignaturas', updated.plan_estudio_id],
|
||||
})
|
||||
|
||||
// 3. Si tienes una lista general de asignaturas, también la invalidamos
|
||||
qc.invalidateQueries({ queryKey: ['asignaturas', 'list'] })
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user