diff --git a/pages/index.tsx b/pages/index.tsx index 4916e31..ab043bc 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -5,6 +5,7 @@ import * as Calculation from 'Components/Calculation'; import Output from 'Components/Output'; import defaultOptions from 'config/default-options'; import * as InsuranceTableConfig from 'config/tables/insurance-table'; +import { merge } from 'lodash-es'; import type { GetServerSideProps } from 'next'; import Head from 'next/head'; import calculateValidationReactions from 'process/calculate/reactions/validation'; @@ -14,7 +15,6 @@ import paymentsReactions from 'process/payments/reactions'; import { fetchUser } from 'services/user'; import { useStore } from 'stores/hooks'; import styled from 'styled-components'; -import { normalizeOptions } from 'tools/entity'; import { Box } from 'UIKit/grid'; import { min } from 'UIKit/mq'; @@ -75,25 +75,17 @@ export const getServerSideProps: GetServerSideProps = async ({ req }) => { }); const apolloClient = initializeApollo(); - const { - options: crmOptions, - tables: { insurance }, - } = await getCRMData(apolloClient, user); - - const insuranceOptions = InsuranceTableConfig.defaultOptions; - insuranceOptions.osago.insuranceCompany = normalizeOptions(insurance.osago); - insuranceOptions.kasko.insuranceCompany = normalizeOptions(insurance.kasko); - insuranceOptions.finGAP.insuranceCompany = normalizeOptions(insurance.finGAP); + const { options, tables } = await getCRMData(apolloClient, user); return { props: { user, calculation: { - options: { ...crmOptions, ...defaultOptions }, + options: merge(defaultOptions, options), }, tables: { insurance: { - options: insuranceOptions, + options: merge(InsuranceTableConfig.defaultOptions, tables.insurance), }, }, diff --git a/process/init/get-data.ts b/process/init/get-data.ts index b907d16..194a950 100644 --- a/process/init/get-data.ts +++ b/process/init/get-data.ts @@ -3,6 +3,7 @@ import type { ApolloClient, NormalizedCache } from '@apollo/client'; import { gql } from '@apollo/client'; import { getDomainName } from 'services/user/tools'; import type { User } from 'services/user/types'; +import { normalizeOptions } from 'tools/entity'; import type { GetInsuranceData } from './__generated__/GetInsuranceData'; import type { GetOwnerData, GetOwnerDataVariables } from './__generated__/GetOwnerData'; import type { GetTransactionCurrencies } from './__generated__/GetTransactionCurrencies'; @@ -76,10 +77,24 @@ export async function getCRMData(apolloClient: ApolloClient, us query: QUERY_GET_TRANSACTION_CURRENCIES, }); - const { data: insuranceData } = await apolloClient.query({ + const { + data: { kasko, osago, finGAP }, + } = await apolloClient.query({ query: QUERY_GET_INSURANCE_DATA, }); + const insuranceData = { + osago: { + insuranceCompany: normalizeOptions(osago), + }, + kasko: { + insuranceCompany: normalizeOptions(kasko), + }, + finGAP: { + insuranceCompany: normalizeOptions(finGAP), + }, + }; + return { options: { selectLead,