hooks/init: use Promise.all in getInitialData

This commit is contained in:
vchikalkin 2023-09-21 10:20:22 +03:00
parent 33b06a14b4
commit c264fe7f1e

View File

@ -5,61 +5,66 @@ import type { ApolloClient } from '@apollo/client';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
export async function getInitialData({ query }: ApolloClient<object>, user: User) { export async function getInitialData({ query }: ApolloClient<object>, user: User) {
const { const leadsQuery = query({
data: { leads }, query: CRMTypes.GetLeadsDocument,
} = await query({ query: CRMTypes.GetLeadsDocument, variables: { domainname: user.domainName } }); variables: { domainname: user.domainName },
});
const { const opportunitiesQuery = query({
data: { opportunities },
} = await query({
query: CRMTypes.GetOpportunitiesDocument, query: CRMTypes.GetOpportunitiesDocument,
variables: { domainname: user.domainName }, variables: { domainname: user.domainName },
}); });
const transactionCurrenciesQuery = query({ query: CRMTypes.GetTransactionCurrenciesDocument });
const { const productsQuery = query({
data: { transactioncurrencies }, fetchPolicy: 'network-only',
} = await query({ query: CRMTypes.GetProductsDocument,
query: CRMTypes.GetTransactionCurrenciesDocument, variables: { currentDate: dayjs().utc(false).toISOString() },
}); });
const systemUserQuery = query({
fetchPolicy: 'network-only',
query: CRMTypes.GetSystemUserDocument,
variables: { domainname: user?.domainName },
});
const [
{
data: { leads },
},
{
data: { opportunities },
},
{
data: { transactioncurrencies },
},
{
data: { evo_baseproducts },
},
{
data: { systemuser },
},
] = await Promise.all([
leadsQuery,
opportunitiesQuery,
transactionCurrenciesQuery,
productsQuery,
systemUserQuery,
]);
const transactioncurrency_rub = transactioncurrencies?.find((x) => x?.isocurrencycode === 'RUB'); const transactioncurrency_rub = transactioncurrencies?.find((x) => x?.isocurrencycode === 'RUB');
if (transactioncurrency_rub?.transactioncurrencyid) if (transactioncurrency_rub?.transactioncurrencyid) {
await query({ await query({
query: CRMTypes.GetTransactionCurrencyDocument, query: CRMTypes.GetTransactionCurrencyDocument,
variables: { variables: {
currencyid: transactioncurrency_rub?.transactioncurrencyid, currencyid: transactioncurrency_rub?.transactioncurrencyid,
}, },
}); });
}
const currentDate = dayjs().utc(false).toISOString();
let {
data: { evo_baseproducts },
} = await query({
fetchPolicy: 'network-only',
query: CRMTypes.GetProductsDocument,
variables: {
currentDate,
},
});
const {
data: { systemuser },
} = await query({
fetchPolicy: 'network-only',
query: CRMTypes.GetSystemUserDocument,
variables: {
domainname: user?.domainName,
},
});
evo_baseproducts = crmTools.evo_baseproducts(evo_baseproducts).filterBy.systemuser(systemuser);
return { return {
options: { options: {
selectLead: leads, selectLead: leads,
selectOpportunity: opportunities, selectOpportunity: opportunities,
selectProduct: evo_baseproducts, selectProduct: crmTools.evo_baseproducts(evo_baseproducts).filterBy.systemuser(systemuser),
selectSupplierCurrency: transactioncurrencies, selectSupplierCurrency: transactioncurrencies,
}, },
values: { values: {