/* eslint-disable @typescript-eslint/naming-convention */ import { getUser } from '@/api/user/query'; import { STALE_TIME } from '@/constants/request'; import * as CRMTypes from '@/graphql/crm.types'; import { useStore } from '@/stores/hooks'; import { useApolloClient } from '@apollo/client'; import { useQuery } from '@tanstack/react-query'; import { useEffect } from 'react'; import { normalizeOptions } from 'tools'; /** * @param {import('@apollo/client').ApolloClient} apolloClient * @param {import('@/api/user/types').User } user * @param {*} onCompleted */ export function getInitialData({ query }, user, onCompleted) { query({ query: CRMTypes.GetLeadsDocument, variables: { domainname: user.domainName } }).then( ({ data }) => { onCompleted({ selectLead: data?.leads, }); } ); query({ query: CRMTypes.GetOpportunitiesDocument, variables: { domainname: user.domainName }, }).then(({ data }) => { onCompleted({ selectOpportunity: data?.opportunities, }); }); query({ query: CRMTypes.GetTransactionCurrenciesDocument, }).then(({ data }) => { onCompleted({ selectSupplierCurrency: data?.transactioncurrencies, }); const transactioncurrency_rub = data?.transactioncurrencies?.find( (x) => x?.isocurrencycode === 'RUB' ); onCompleted(null, { supplierCurrency: transactioncurrency_rub?.value, }); }); } export function useInitialData() { const { $calculation } = useStore(); const apolloClient = useApolloClient(); const { data: user } = useQuery(['user'], getUser, { staleTime: STALE_TIME }); function handleOnCompleted(options, values) { if (options) Object.keys(options).forEach((elementName) => { const elementOptions = options[elementName]; $calculation.element(elementName).setOptions(normalizeOptions(elementOptions)); }); if (values) $calculation.$values.hydrate(values); } useEffect(() => { if (user) getInitialData(apolloClient, user, handleOnCompleted); }, [user]); }