Hooks¶
Todos los custom hooks estan en src/hooks/. Encapsulan logica de fetching, estado y side effects para mantener los componentes limpios.
Autenticacion y Tenant¶
useAuth¶
Hook unificado de autenticacion. Soporta modo Auth0 (produccion) y modo testing (desarrollo).
Archivo: src/hooks/useAuth.ts
const {
user_id, // string | null - UUID del usuario en el tenant
auth_id, // string | null - Auth0 sub claim
user_name, // string | null
user_email, // string | null
profile_picture_url, // string | null
sector, // string | null - Acronimo del sector
department, // string | null - Nombre del departamento
sector_id, // string | null - UUID del sector
default_seal, // string | null - Nombre del sello
default_seal_id, // number | null
currentTenant, // string | null - schema_name
hasTenant, // boolean
isAuthenticated, // boolean
isLoading, // boolean
error, // Error | null
isTestingMode, // boolean
isStorageReady, // boolean
logout, // () => void
setTenant, // (schemaName: string) => void
setProfile, // (profile: TenantProfile) => void
addUserIdToUrl, // (path: string) => string
} = useAuth();
Flujo multi-tenant:
- Usuario hace login con Auth0
useOnboardingobtiene lista de tenants- Usuario selecciona tenant (o auto-select si solo tiene 1)
- Tenant se guarda en localStorage
- Todas las requests llevan header
X-Tenant-Schema
useOnboarding¶
Obtiene datos de onboarding del usuario: tenants disponibles, tenant por defecto y perfil.
Archivo: src/hooks/useOnboarding.ts
const {
user, // OnboardingUser | null
tenants, // TenantAccess[]
defaultTenant, // TenantAccess | null
defaultProfile, // TenantProfile | null
isLoading, // boolean
error, // string | null
refetch, // () => Promise<void>
} = useOnboarding(skip?: boolean);
| Parametro | Tipo | Default | Descripcion |
|---|---|---|---|
skip |
boolean |
false |
Si true, no ejecuta la llamada al montar |
useTenantProfile¶
Obtiene el perfil del usuario en el tenant actual.
Archivo: src/hooks/useTenantProfile.ts
useCsrf¶
Obtiene y gestiona el token CSRF para requests POST seguros.
Archivo: src/hooks/useCsrf.ts
Documentos¶
useCreateDocument¶
Crea un nuevo documento en el backend.
Archivo: src/hooks/useCreateDocument.ts
const {
createDocument, // (data: CreateDocumentData) => Promise<CreateDocumentResponse | null>
loading, // boolean
error, // string | null
clearError, // () => void
} = useCreateDocument();
La funcion createDocument recibe:
interface CreateDocumentData {
document_type_acronym: string; // "IF", "ACTA", "NOTA", etc.
reference: string; // Motivo/referencia del documento
}
useSaveDocument¶
Guarda el contenido y metadata de un documento existente.
Archivo: src/hooks/useSaveDocument.ts
useDocumentDetails¶
Obtiene los detalles de un documento por su ID.
Archivo: src/hooks/useDocumentDetails.ts
const {
documentDetails, // DocumentDetails | null
loading, // boolean
error, // string | null
refreshDocumentDetails, // () => void
} = useDocumentDetails(documentId?: string);
| Parametro | Tipo | Descripcion |
|---|---|---|
documentId |
string \| undefined |
UUID del documento. No fetcha si es undefined |
useUnifiedDocumentDetails¶
Obtiene detalles unificados (editing o signing) de un documento.
Archivo: src/hooks/useUnifiedDocumentDetails.ts
useDocumentTypes¶
Obtiene la lista de tipos de documento disponibles.
Archivo: src/hooks/useDocumentTypes.ts
const {
documentTypes, // DocumentType[]
loading, // boolean
error, // string | null
} = useDocumentTypes();
Incluye fallback automatico con tipos basicos si la API falla.
useDocumentSearch¶
Busqueda de documentos con filtros.
Archivo: src/hooks/useDocumentSearch.ts
useCreateImportedDocument¶
Crea un documento importado (PDF subido directamente).
Archivo: src/hooks/useCreateImportedDocument.ts
useReplaceImportedPdf¶
Reemplaza el PDF de un documento importado.
Archivo: src/hooks/useReplaceImportedPdf.ts
Firma¶
useSignDocument¶
Firma un documento digitalmente.
Archivo: src/hooks/useSignDocument.ts
const {
signDocument, // (documentId: string, userId: string) => Promise<SignDocumentResponse>
isSigningDocument, // boolean
signError, // string | null
} = useSignDocument();
Retorna { success: true, data: { official_number, is_numerator, document_status } } en caso de exito.
useStartSigningProcess¶
Inicia el proceso de firma de un documento (cambia estado de "editing" a "signing").
Archivo: src/hooks/useStartSigningProcess.ts
const {
startSigningProcess, // (documentId: string, userId: string) => Promise<Response | null>
isStarting, // boolean
error, // string | null
clearError, // () => void
} = useStartSigningProcess();
useRejectDocument¶
Rechaza un documento con motivo.
Archivo: src/hooks/useRejectDocument.ts
const {
rejectDocument, // (documentId: string, userId: string, reason?: string) => Promise<Response>
isRejectingDocument, // boolean
rejectError, // string | null
} = useRejectDocument();
useBatchSign¶
Firma multiples documentos en lote.
Archivo: src/hooks/useBatchSign.ts
PDF¶
usePdfDownload¶
Descarga/previsualiza un PDF de documento.
Archivo: src/hooks/usePdfDownload.ts
const {
pdfUrl, // string | null - URL del blob o URL directa
isLoadingPdf, // boolean
pdfError, // string | null
fetchPdfDownload, // (documentId: string, userId: string) => Promise<void>
} = usePdfDownload();
Soporta respuestas con PDF directo (blob) o JSON con URL.
usePreviewDocumentInfo¶
Obtiene informacion de previsualizacion del documento.
Archivo: src/hooks/usePreviewDocumentInfo.ts
usePreviewInfo¶
Informacion de preview incluyendo firmantes y estado.
Archivo: src/hooks/usePreviewInfo.ts
Expedientes¶
useExpedienteData¶
Obtiene datos basicos de un expediente.
Archivo: src/hooks/useExpedienteData.ts
const {
caseData, // CaseData | null
loadingCase, // boolean
refetchCaseDetails, // () => void
} = useExpedienteData(expedienteId, user_id, isRouterReady);
| Parametro | Tipo | Descripcion |
|---|---|---|
expedienteId |
string \| undefined |
UUID del expediente |
user_id |
string \| undefined |
UUID del usuario |
isRouterReady |
boolean |
Si el router de Next.js ya tiene los query params |
useExpedienteDocuments¶
Obtiene documentos vinculados a un expediente.
Archivo: src/hooks/useExpedienteDocuments.ts
useExpedienteModals¶
Gestiona el estado de multiples modales del detalle de expediente.
Archivo: src/hooks/useExpedienteModals.ts
useCaseHistory¶
Obtiene el historial completo de un expediente.
Archivo: src/hooks/useCaseHistory.ts
useCaseMovements¶
Obtiene los movimientos recientes de un expediente.
Archivo: src/hooks/useCaseMovements.ts
useCaseSearch¶
Busca expedientes por numero oficial.
Archivo: src/hooks/useCaseSearch.ts
useAssignmentForm¶
Logica del formulario de asignacion de expediente.
Archivo: src/hooks/useAssignmentForm.ts
useTransferForm¶
Logica del formulario de transferencia de expediente.
Archivo: src/hooks/useTransferForm.ts
useSubsanarWorkflow¶
Workflow de subsanacion de documentos en expediente.
Archivo: src/hooks/useSubsanarWorkflow.ts
useVincularWorkflow¶
Workflow para vincular documentos a expedientes.
Archivo: src/hooks/useVincularWorkflow.ts
Notas¶
useNotesReceived¶
Obtiene notas recibidas con paginacion y filtros.
Archivo: src/hooks/useNotesReceived.ts
const {
notes, // NoteReceived[]
loading, // boolean
error, // string | null
total, // number
totalPages, // number
currentPage, // number
refetch, // () => void
} = useNotesReceived({
page?: number, // default: 1
pageSize?: number, // default: 10
dateFilter?: string,
dateFrom?: string,
dateTo?: string,
search?: string,
});
Soporta cancelacion de requests anteriores via AbortController.
useNotesSent¶
Obtiene notas enviadas. Misma interfaz que useNotesReceived.
Archivo: src/hooks/useNotesSent.ts
useNotesArchived¶
Obtiene notas archivadas.
Archivo: src/hooks/useNotesArchived.ts
useNoteDetail¶
Obtiene el detalle completo de una nota.
Archivo: src/hooks/useNoteDetail.ts
useArchiveNote¶
Archiva o desarchiva una nota.
Archivo: src/hooks/useArchiveNote.ts
Busqueda¶
useUnifiedSearch¶
Busqueda unificada de documentos y expedientes con deteccion automatica de tipo.
Archivo: src/hooks/useUnifiedSearch.ts
const {
query, // string
setQuery, // (q: string) => void
results, // UnifiedSearchResponse | null
isLoading, // boolean
error, // string | null
isOpen, // boolean - dropdown abierto
searchType, // SearchType - 'document_official' | 'case_official' | 'free_text'
partialType, // 'document' | 'case' | null
totalResults, // number
hasResults, // boolean
hasDocuments, // boolean
hasExpedientes, // boolean
clearSearch, // () => void
closeDropdown, // () => void
openDropdown, // () => void
} = useUnifiedSearch({
debounceMs?: number, // default: 300
minLength?: number, // default: 2
limit?: number, // default: 5
});
Utilidades¶
useDebounce¶
Debounce de valores. Util para busquedas que disparan requests.
Archivo: src/hooks/useDebounce.ts
| Parametro | Tipo | Default | Descripcion |
|---|---|---|---|
value |
T |
- | Valor a debounce |
delay |
number |
300 |
Milisegundos de espera |
useSectors¶
Obtiene la lista de sectores disponibles.
Archivo: src/hooks/useSectors.ts
const {
sectors, // Sector[]
loading, // boolean
error, // string | null
refresh, // () => void
} = useSectors();
useUserSearch¶
Busqueda de usuarios por nombre o email.
Archivo: src/hooks/useUserSearch.ts
useUserInfo / useUserProfile¶
Informacion y perfil del usuario actual.
Archivos: src/hooks/useUserInfo.ts, src/hooks/useUserProfile.ts
useChatFastAPI¶
Chat con el asistente IA (GDI-AgenteLANG).
Archivo: src/hooks/useChatFastAPI.ts
const {
messages, // ChatMessage[]
isLoading, // boolean
error, // string | null
sendMessage, // (messageText: string) => Promise<void>
} = useChatFastAPI({
conversationId: string, // ID de la conversacion
userId: string, // UUID del usuario
caseId?: string, // Si se define, usa endpoint contextual por expediente
});
Genera mensaje de bienvenida automaticamente al montar. Si caseId esta definido, obtiene bienvenida contextual del backend.