import { Button } from '@/components/ui/button'; import { apiClient } from '@/lib/api-client'; import type { ComplexWithRole } from '@repo/api-contract'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useNavigate } from '@tanstack/react-router'; import { Building2, Loader2 } from 'lucide-react'; export function SelectComplexPage() { const navigate = useNavigate(); const complexesQuery = useQuery({ queryKey: ['my-complexes'], queryFn: () => apiClient.complexes.listMine(), }); const queryClient = useQueryClient(); const selectMutation = useMutation({ mutationFn: async (complexId: string) => { const response = await apiClient.complexes.select({ complexId }); return response; }, onSuccess: (data) => { queryClient.setQueryData(['current-complex'], data); navigate({ to: '/' }); }, }); const handleSelect = (complex: ComplexWithRole) => { selectMutation.mutate(complex.id); }; if (complexesQuery.isLoading) { return ( ); } if (complexesQuery.isError) { return ( Error al cargar tus complejos. complexesQuery.refetch()}> Reintentar ); } const complexes = complexesQuery.data ?? []; if (complexes.length === 0) { return ( No tenés complejos asociados. ); } return ( Seleccioná un complejo Elegí el complejo con el que vas a trabajar. {complexes.map((complex) => ( handleSelect(complex)} disabled={selectMutation.isPending} > {complex.complexName} {complex.city ?? 'Sin ciudad'} · {complex.role} {selectMutation.isPending && selectMutation.variables === complex.id && ( )} ))} ); }
Error al cargar tus complejos.
No tenés complejos asociados.
Elegí el complejo con el que vas a trabajar.
{complex.complexName}
{complex.city ?? 'Sin ciudad'} · {complex.role}