32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import type { ApolloClient } from '@apollo/client';
|
|
import { reaction } from 'mobx';
|
|
import type RootStore from 'stores/root';
|
|
|
|
export default function validationReactions(store: RootStore, apolloClient: ApolloClient<object>) {
|
|
const { $calculation, $tables } = store;
|
|
reaction(
|
|
() => {
|
|
const hasElementsErrors = Object.values($calculation.$validation).every(
|
|
(validation) => validation.hasErrors
|
|
);
|
|
const hasPaymentsErrors = $tables.payments.validation.hasErrors;
|
|
const hasInsuranceErrors = $tables.insurance.validation.hasErrors;
|
|
const hasFingapErrors = $tables.fingap.validation.hasErrors;
|
|
|
|
return hasElementsErrors || hasPaymentsErrors || hasInsuranceErrors || hasFingapErrors;
|
|
},
|
|
(hasErrors) => {
|
|
if (hasErrors) {
|
|
$calculation.$status.setStatus('btnCalculate', 'Disabled');
|
|
$calculation.$status.setStatus('btnCreateKP', 'Disabled');
|
|
} else {
|
|
$calculation.$status.setStatus('btnCalculate', 'Default');
|
|
$calculation.$status.setStatus('btnCreateKP', 'Default');
|
|
}
|
|
},
|
|
{
|
|
fireImmediately: true,
|
|
}
|
|
);
|
|
}
|