import type { ApolloClient } from '@apollo/client'; import { reaction, toJS } from 'mobx'; import type RootStore from 'stores/root'; export default function paymentsReactions(store: RootStore, apolloClient: ApolloClient) { const { $calculation, $tables } = store; /** * При изменении срока лизинга регулируем длину таблицы платежей */ reaction( () => $calculation.$values.getValue('leasingPeriod'), (leasingPeriod) => { if (leasingPeriod) { $tables.payments.setValues( Array.from( { length: leasingPeriod, }, () => 0 ) ); } }, { fireImmediately: true, } ); /** * Проверяем платежи на 0 */ const errorText = 'Значения должны быть больше 0'; let removeError: () => void; reaction( () => toJS($tables.payments.values), (values) => { if (values.includes(0)) { removeError = $tables.payments.validation.addError(errorText); } else { removeError(); } }, { fireImmediately: true, } ); }