'use client'; import { useClientsQuery, useMastersQuery } from './query'; import { ContactsContext } from '@/context/contacts'; import { sift } from 'radash'; 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 }; }