zapishis-client/apps/web/hooks/api/contacts/use-customer-contacts.ts
2025-06-10 15:36:01 +03:00

48 lines
1.2 KiB
TypeScript

'use client';
import { useClientsQuery, useMastersQuery } from './query';
import { ContactsContext } from '@/context/contacts';
import { sift } from 'radashi';
import { use, useEffect, useMemo } from 'react';
export function useCustomerContacts() {
const { filter, setFilter } = use(ContactsContext);
const {
data: clientsData,
isLoading: isLoadingClients,
refetch: refetchClients,
} = useClientsQuery();
const {
data: mastersData,
isLoading: isLoadingMasters,
refetch: refetchMasters,
} = useMastersQuery();
const clients = clientsData?.customers?.at(0)?.clients || [];
const masters = mastersData?.customers?.at(0)?.masters || [];
const isLoading = isLoadingClients || isLoadingMasters;
useEffect(() => {
if (filter === 'clients') {
refetchClients();
} else if (filter === 'masters') {
refetchMasters();
} else {
refetchClients();
refetchMasters();
}
}, [filter, refetchClients, refetchMasters]);
const contacts = useMemo(() => {
if (filter === 'clients') return sift(clients);
if (filter === 'masters') return sift(masters);
return [...sift(clients), ...sift(masters)];
}, [clients, masters, filter]);
return { contacts, filter, isLoading, setFilter };
}