reducer.ts
1 import * as types from './types'; 2 3 export const INITIAL_STATE: types.RatesState = { 4 rates: {}, 5 ratesError: null 6 }; 7 8 function fetchCCRatesSucceeded( 9 state: types.RatesState, 10 action: types.FetchCCRatesSucceeded 11 ): types.RatesState { 12 return { 13 ...state, 14 rates: { 15 ...state.rates, 16 ...action.payload 17 } 18 }; 19 } 20 21 function fetchCCRatesFailed(state: types.RatesState): types.RatesState { 22 // TODO: Make library for error messages 23 return { 24 ...state, 25 ratesError: 'Sorry. We were unable to fetch equivalent rates.' 26 }; 27 } 28 29 export function ratesReducer( 30 state: types.RatesState = INITIAL_STATE, 31 action: types.RatesAction 32 ): types.RatesState { 33 switch (action.type) { 34 case types.RatesActions.CC_SUCCEEDED: 35 return fetchCCRatesSucceeded(state, action); 36 case types.RatesActions.CC_FAILED: 37 return fetchCCRatesFailed(state); 38 default: 39 return state; 40 } 41 }