From 891bb889d1c928bc367a31b2082f19e3f2cd0794 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Tue, 11 Apr 2023 22:55:50 +0300 Subject: [PATCH] make all validation reactions debounced --- apps/web/process/bonuses/reactions/validation.ts | 7 ++++--- apps/web/process/configurator/reactions/validation.ts | 7 ++++--- apps/web/process/gibdd/reactions.ts | 7 ++++--- apps/web/process/insurance/reactions.ts | 7 ++++--- apps/web/process/leasing-object/reactions/validation.ts | 8 +++++--- apps/web/process/price/reactions/validation.ts | 7 ++++--- apps/web/process/recalc/reactions.ts | 5 ++++- apps/web/process/supplier-agent/reactions/validation.ts | 7 ++++--- apps/web/process/used-pl/reactions.ts | 6 ++++-- 9 files changed, 37 insertions(+), 24 deletions(-) diff --git a/apps/web/process/bonuses/reactions/validation.ts b/apps/web/process/bonuses/reactions/validation.ts index f01c3df..84f3198 100644 --- a/apps/web/process/bonuses/reactions/validation.ts +++ b/apps/web/process/bonuses/reactions/validation.ts @@ -2,8 +2,8 @@ import { createValidationSchema } from '../validation'; import type { Elements } from '@/Components/Calculation/config/map/values'; import type { ProcessContext } from '@/process/types'; import ValidationHelper from '@/stores/validation/helper'; -import { reaction } from 'mobx'; import { uid } from 'radash'; +import { debouncedReaction } from 'tools'; const key = uid(7); @@ -13,7 +13,7 @@ export default function reactions(context: ProcessContext) { const validationSchema = createValidationSchema(context); const helper = new ValidationHelper(); - reaction( + debouncedReaction( () => $calculation.$values.getValues(['product', 'saleBonus']), async (values) => { const validationResult = await validationSchema.safeParseAsync(values); @@ -30,7 +30,8 @@ export default function reactions(context: ProcessContext) { } }, { - delay: 100, + delay: 1, + wait: 1000, } ); } diff --git a/apps/web/process/configurator/reactions/validation.ts b/apps/web/process/configurator/reactions/validation.ts index d719068..3b4c052 100644 --- a/apps/web/process/configurator/reactions/validation.ts +++ b/apps/web/process/configurator/reactions/validation.ts @@ -2,8 +2,8 @@ import { createValidationSchema } from '../validation'; import type { Elements } from '@/Components/Calculation/config/map/values'; import type { ProcessContext } from '@/process/types'; import ValidationHelper from '@/stores/validation/helper'; -import { reaction } from 'mobx'; import { uid } from 'radash'; +import { debouncedReaction } from 'tools'; const key = uid(7); @@ -13,7 +13,7 @@ export default function reactions(context: ProcessContext) { const validationSchema = createValidationSchema(context); const helper = new ValidationHelper(); - reaction( + debouncedReaction( () => $calculation.$values.getValues(['parmentsDecreasePercent', 'tarif']), async (values) => { const validationResult = await validationSchema.safeParseAsync(values); @@ -30,7 +30,8 @@ export default function reactions(context: ProcessContext) { } }, { - delay: 100, + delay: 1, + wait: 1000, } ); } diff --git a/apps/web/process/gibdd/reactions.ts b/apps/web/process/gibdd/reactions.ts index 9ec2fa6..9e38102 100644 --- a/apps/web/process/gibdd/reactions.ts +++ b/apps/web/process/gibdd/reactions.ts @@ -12,7 +12,7 @@ import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc'; import { reaction } from 'mobx'; import { uid } from 'radash'; -import { makeDisposable, normalizeOptions } from 'tools'; +import { debouncedReaction, makeDisposable, normalizeOptions } from 'tools'; dayjs.extend(utc); @@ -522,7 +522,7 @@ export function validation(context: ProcessContext) { const validationSchema = createValidationSchema(context); const validationHelper = new ValidationHelper(); - reaction( + debouncedReaction( () => $calculation.$values.getValues([ 'leaseObjectCategory', @@ -549,7 +549,8 @@ export function validation(context: ProcessContext) { } }, { - delay: 100, + delay: 1, + wait: 1000, } ); } diff --git a/apps/web/process/insurance/reactions.ts b/apps/web/process/insurance/reactions.ts index 360c4f7..fb7f8d4 100644 --- a/apps/web/process/insurance/reactions.ts +++ b/apps/web/process/insurance/reactions.ts @@ -7,7 +7,7 @@ import * as CRMTypes from '@/graphql/crm.types'; import ValidationHelper from '@/stores/validation/helper'; import { comparer, reaction, toJS } from 'mobx'; import { uid } from 'radash'; -import { normalizeOptions } from 'tools'; +import { debouncedReaction, normalizeOptions } from 'tools'; export function common({ store, apolloClient }: ProcessContext) { const { $calculation, $tables } = store; @@ -274,7 +274,7 @@ export function validation(context: ProcessContext) { const validationSchema = createValidationSchema(context); const helper = new ValidationHelper(); - reaction( + debouncedReaction( () => { const values = $calculation.$values.getValues([ 'leasingPeriod', @@ -316,8 +316,9 @@ export function validation(context: ProcessContext) { } }, { - delay: 100, + delay: 1, equals: comparer.structural, + wait: 1000, } ); } diff --git a/apps/web/process/leasing-object/reactions/validation.ts b/apps/web/process/leasing-object/reactions/validation.ts index 3e7f504..7571619 100644 --- a/apps/web/process/leasing-object/reactions/validation.ts +++ b/apps/web/process/leasing-object/reactions/validation.ts @@ -2,8 +2,9 @@ import { createValidationSchema } from '../validation'; import type { Elements } from '@/Components/Calculation/config/map/values'; import type { ProcessContext } from '@/process/types'; import ValidationHelper from '@/stores/validation/helper'; -import { autorun, reaction } from 'mobx'; +import { autorun } from 'mobx'; import { uid } from 'radash'; +import { debouncedReaction } from 'tools'; const key = uid(7); @@ -34,7 +35,7 @@ export default function reactions(context: ProcessContext) { const validationSchema = createValidationSchema(context); const helper = new ValidationHelper(); - reaction( + debouncedReaction( () => $calculation.$values.getValues([ 'leaseObjectType', @@ -60,7 +61,8 @@ export default function reactions(context: ProcessContext) { } }, { - delay: 100, + delay: 1, + wait: 1000, } ); } diff --git a/apps/web/process/price/reactions/validation.ts b/apps/web/process/price/reactions/validation.ts index be2ec4e..4175213 100644 --- a/apps/web/process/price/reactions/validation.ts +++ b/apps/web/process/price/reactions/validation.ts @@ -2,8 +2,8 @@ import { createValidationSchema } from '../validation'; import type { Elements } from '@/Components/Calculation/config/map/values'; import type { ProcessContext } from '@/process/types'; import ValidationHelper from '@/stores/validation/helper'; -import { reaction } from 'mobx'; import { uid } from 'radash'; +import { debouncedReaction } from 'tools'; const key = uid(7); @@ -13,7 +13,7 @@ export default function reactions(context: ProcessContext) { const validationSchema = createValidationSchema(context); const helper = new ValidationHelper(); - reaction( + debouncedReaction( () => $calculation.$values.getValues([ 'VATInLeaseObjectPrice', @@ -39,7 +39,8 @@ export default function reactions(context: ProcessContext) { } }, { - delay: 100, + delay: 1, + wait: 1000, } ); } diff --git a/apps/web/process/recalc/reactions.ts b/apps/web/process/recalc/reactions.ts index 12be7da..40bc4f1 100644 --- a/apps/web/process/recalc/reactions.ts +++ b/apps/web/process/recalc/reactions.ts @@ -246,6 +246,9 @@ export function validation(context: ProcessContext) { helper.removeErrors(); } }, - { delay: 1, wait: 1000 } + { + delay: 1, + wait: 1000, + } ); } diff --git a/apps/web/process/supplier-agent/reactions/validation.ts b/apps/web/process/supplier-agent/reactions/validation.ts index f37e635..2e3fd2f 100644 --- a/apps/web/process/supplier-agent/reactions/validation.ts +++ b/apps/web/process/supplier-agent/reactions/validation.ts @@ -2,8 +2,8 @@ import { createValidationSchema } from '../validation'; import type { Elements } from '@/Components/Calculation/config/map/values'; import type { ProcessContext } from '@/process/types'; import ValidationHelper from '@/stores/validation/helper'; -import { reaction } from 'mobx'; import { uid } from 'radash'; +import { debouncedReaction } from 'tools'; const key = uid(7); @@ -13,7 +13,7 @@ export default function reactions(context: ProcessContext) { const validationSchema = createValidationSchema(context); const helper = new ValidationHelper(); - reaction( + debouncedReaction( () => { const values = $calculation.$values.getValues([ 'calcBrokerRewardCondition', @@ -65,7 +65,8 @@ export default function reactions(context: ProcessContext) { } }, { - delay: 100, + delay: 1, + wait: 1000, } ); } diff --git a/apps/web/process/used-pl/reactions.ts b/apps/web/process/used-pl/reactions.ts index 854cc2d..7e6bee6 100644 --- a/apps/web/process/used-pl/reactions.ts +++ b/apps/web/process/used-pl/reactions.ts @@ -5,6 +5,7 @@ import * as CRMTypes from '@/graphql/crm.types'; import ValidationHelper from '@/stores/validation/helper'; import { reaction } from 'mobx'; import { uid } from 'radash'; +import { debouncedReaction } from 'tools'; export function common({ store, apolloClient }: ProcessContext) { const { $calculation } = store; @@ -248,7 +249,7 @@ export function validation(context: ProcessContext) { const validationSchema = createValidationSchema(context); const helper = new ValidationHelper(); - reaction( + debouncedReaction( () => $calculation.$values.getValues([ 'engineHours', @@ -273,7 +274,8 @@ export function validation(context: ProcessContext) { } }, { - delay: 100, + delay: 1, + wait: 1000, } ); }