import { SEARCH_ADDRESS } from './constants' import { AbstractFormField } from '../form-field' import { SearchAddressAction, SearchAddressSuccessAction, SearchAddressErrorAction, AddressAction, } from './actions' export interface AddressState { [field: string]: AbstractFormField } export const addressReducer = (state: AddressState = {}, action: AddressAction): AddressState => { switch (action.type) { default: return state } } // TODO - see if these can be generalized for all fields const setAddressLoading = (state: AddressState, action: SearchAddressAction) => ({ ...state, [action.args.formName]: { ...state[action.args.formName], [action.args.name]: { ...(state[action.args.formName] as any)[action.args.name], loading: true, }, }, }) const setAddressOptions = (state: AddressState, action: SearchAddressSuccessAction) => ({ ...state, [action.args.formName]: { ...state[action.args.formName], [action.args.name]: { ...(state[action.args.formName] as any)[action.args.name], loading: true, }, }, }) const setAddressErrors = (state: AddressState, action: SearchAddressErrorAction) => ({ ...state, [action.args.formName]: { ...state[action.args.formName], [action.args.name]: { ...(state[action.args.formName] as any)[action.args.name], loading: true, }, }, })