/* @flow */ import type { ChooseCompanyLiabilityAction, CompanyLiability, CompanyHasMultipleAssociatesAction, DirectorStatus, CompanyIsMicroenterpriseAction, ResetCompanyStatusAction, DirectorIsInAMinorityAction, DefineDirectorStatusAction } from 'Types/companyTypes' import type { RouterHistory } from 'react-router' import { nextQuestionUrlSelector } from 'Selectors/companyStatusSelectors' const thenGoToNextQuestion = actionCreator => (...args: any) => ( dispatch: any => void, getState: () => any, history: RouterHistory ) => { dispatch(actionCreator(...args)) history.push(nextQuestionUrlSelector(getState())) } export const chooseCompanyLiability = thenGoToNextQuestion( (setup: ?CompanyLiability): ChooseCompanyLiabilityAction => ({ type: 'CHOOSE_COMPANY_LEGAL_SETUP', setup }) ) export const defineDirectorStatus = thenGoToNextQuestion( (status: ?DirectorStatus): DefineDirectorStatusAction => ({ type: 'DEFINE_DIRECTOR_STATUS', status }) ) export const companyHasMultipleAssociates = thenGoToNextQuestion( (multipleAssociates: ?boolean): CompanyHasMultipleAssociatesAction => ({ type: 'COMPANY_HAS_MULTIPLE_ASSOCIATES', multipleAssociates }) ) export const companyIsMicroenterprise = thenGoToNextQuestion( (microEnterprise: ?boolean): CompanyIsMicroenterpriseAction => ({ type: 'COMPANY_IS_MICROENTERPRISE', microEnterprise }) ) export const directorIsInAMinority = thenGoToNextQuestion( (minorityDirector: ?boolean): DirectorIsInAMinorityAction => ({ type: 'SPECIFY_DIRECTORS_SHARE', minorityDirector }) ) export const goToCompanyStatusChoice = () => ( dispatch: ResetCompanyStatusAction => void, _: any, history: RouterHistory ) => { dispatch( ({ type: 'RESET_COMPANY_STATUS_CHOICE' }: ResetCompanyStatusAction) ) history.push('/company') }