diff --git a/api/core/query.ts b/api/core/query.ts index 74d03c8..4f42c02 100644 --- a/api/core/query.ts +++ b/api/core/query.ts @@ -1,9 +1,16 @@ /* eslint-disable import/prefer-default-export */ +import type { QueryFunctionContext } from '@tanstack/react-query'; import axios from 'axios'; import type { RequestFinGAP, ResponseFinGAP } from './types'; -export async function calculateFinGAP(payload: RequestFinGAP, signal?: AbortSignal) { - return axios.post(process.env.NEXT_PUBLIC_URL_CORE_FINGAP_PROXY!, payload, { - signal, - }); +export async function calculateFinGAP(payload: RequestFinGAP, { signal }: QueryFunctionContext) { + const { data } = await axios.post( + process.env.NEXT_PUBLIC_URL_CORE_FINGAP_PROXY!, + payload, + { + signal, + } + ); + + return data; } diff --git a/constants/request.js b/constants/request.js new file mode 100644 index 0000000..a0c6479 --- /dev/null +++ b/constants/request.js @@ -0,0 +1,2 @@ +/* eslint-disable import/prefer-default-export */ +export const STALE_TIME = Number.POSITIVE_INFINITY; diff --git a/process/fingap/reactions/common.ts b/process/fingap/reactions/common.ts index acb1451..d63e2d6 100644 --- a/process/fingap/reactions/common.ts +++ b/process/fingap/reactions/common.ts @@ -7,11 +7,13 @@ import type { QueryClient, QueryFunctionContext } from '@tanstack/react-query'; import { calculateFinGAP } from 'api/core/query'; import type { RequestFinGAP } from 'api/core/types'; import type { Risk } from 'Components/Calculation/Form/Insurance/FinGAPTable/types'; +import { STALE_TIME } from 'constants/request'; import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc'; import type * as CRMTypes from 'graphql/crm.types'; import { comparer, reaction, toJS } from 'mobx'; import type RootStore from 'stores/root'; +import { flatten } from 'tools/object'; dayjs.extend(utc); @@ -195,12 +197,15 @@ export default function commonReactions( } function makeRequestGetFinGAP(request: RequestFinGAP) { - const queryCalculateFinGAP = ({ signal }: QueryFunctionContext) => - calculateFinGAP(request, signal); + const queryCalculateFinGAP = (context: QueryFunctionContext) => + calculateFinGAP(request, context); return queryClient.fetchQuery( - ['calculate', 'fingap', request.calcType], - queryCalculateFinGAP + ['core', 'fingap', ...flatten(request)], + queryCalculateFinGAP, + { + staleTime: STALE_TIME, + } ); } @@ -211,8 +216,8 @@ export default function commonReactions( ).then((results) => { const newRisks = risks.map((risk, i) => ({ ...risk, - sum: results.at(i)?.data.sum || 0, - premium: results.at(i)?.data.premium || 0, + sum: results.at(i)?.sum || 0, + premium: results.at(i)?.premium || 0, })); $tables.fingap.setRisks(newRisks); diff --git a/tools/object.ts b/tools/object.ts new file mode 100644 index 0000000..01713f2 --- /dev/null +++ b/tools/object.ts @@ -0,0 +1,4 @@ +/* eslint-disable import/prefer-default-export */ +export function flatten(obj: object) { + return Object.values(obj).flat(); +}