process/fingap: disable query refetching

This commit is contained in:
Chika 2022-10-25 12:49:28 +03:00
parent 4ae1212a65
commit 34bab4f715
4 changed files with 28 additions and 10 deletions

View File

@ -1,9 +1,16 @@
/* eslint-disable import/prefer-default-export */ /* eslint-disable import/prefer-default-export */
import type { QueryFunctionContext } from '@tanstack/react-query';
import axios from 'axios'; import axios from 'axios';
import type { RequestFinGAP, ResponseFinGAP } from './types'; import type { RequestFinGAP, ResponseFinGAP } from './types';
export async function calculateFinGAP(payload: RequestFinGAP, signal?: AbortSignal) { export async function calculateFinGAP(payload: RequestFinGAP, { signal }: QueryFunctionContext) {
return axios.post<ResponseFinGAP>(process.env.NEXT_PUBLIC_URL_CORE_FINGAP_PROXY!, payload, { const { data } = await axios.post<ResponseFinGAP>(
signal, process.env.NEXT_PUBLIC_URL_CORE_FINGAP_PROXY!,
}); payload,
{
signal,
}
);
return data;
} }

2
constants/request.js Normal file
View File

@ -0,0 +1,2 @@
/* eslint-disable import/prefer-default-export */
export const STALE_TIME = Number.POSITIVE_INFINITY;

View File

@ -7,11 +7,13 @@ import type { QueryClient, QueryFunctionContext } from '@tanstack/react-query';
import { calculateFinGAP } from 'api/core/query'; import { calculateFinGAP } from 'api/core/query';
import type { RequestFinGAP } from 'api/core/types'; import type { RequestFinGAP } from 'api/core/types';
import type { Risk } from 'Components/Calculation/Form/Insurance/FinGAPTable/types'; import type { Risk } from 'Components/Calculation/Form/Insurance/FinGAPTable/types';
import { STALE_TIME } from 'constants/request';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc'; import utc from 'dayjs/plugin/utc';
import type * as CRMTypes from 'graphql/crm.types'; import type * as CRMTypes from 'graphql/crm.types';
import { comparer, reaction, toJS } from 'mobx'; import { comparer, reaction, toJS } from 'mobx';
import type RootStore from 'stores/root'; import type RootStore from 'stores/root';
import { flatten } from 'tools/object';
dayjs.extend(utc); dayjs.extend(utc);
@ -195,12 +197,15 @@ export default function commonReactions(
} }
function makeRequestGetFinGAP(request: RequestFinGAP) { function makeRequestGetFinGAP(request: RequestFinGAP) {
const queryCalculateFinGAP = ({ signal }: QueryFunctionContext) => const queryCalculateFinGAP = (context: QueryFunctionContext) =>
calculateFinGAP(request, signal); calculateFinGAP(request, context);
return queryClient.fetchQuery( return queryClient.fetchQuery(
['calculate', 'fingap', request.calcType], ['core', 'fingap', ...flatten(request)],
queryCalculateFinGAP queryCalculateFinGAP,
{
staleTime: STALE_TIME,
}
); );
} }
@ -211,8 +216,8 @@ export default function commonReactions(
).then((results) => { ).then((results) => {
const newRisks = risks.map((risk, i) => ({ const newRisks = risks.map((risk, i) => ({
...risk, ...risk,
sum: results.at(i)?.data.sum || 0, sum: results.at(i)?.sum || 0,
premium: results.at(i)?.data.premium || 0, premium: results.at(i)?.premium || 0,
})); }));
$tables.fingap.setRisks(newRisks); $tables.fingap.setRisks(newRisks);

4
tools/object.ts Normal file
View File

@ -0,0 +1,4 @@
/* eslint-disable import/prefer-default-export */
export function flatten(obj: object) {
return Object.values(obj).flat();
}