import { reducerWithInitialState } from 'typescript-fsa-reducers' import { combineReducers } from 'redux' import { Status } from '../../interfaces/status' import { IGravatarStatusByEmail, IGravatarByEmail, ICompanyLogoStatusByDomain, ICompanyLogoByDomain, IAvatarState, } from './interfaces' import * as actions from './actions' const gravatarStatusByEmail = reducerWithInitialState({}) .case(actions.fetchGravatarPending, (state, { email }) => ({ ...state, [email]: Status.Pending })) .case(actions.fetchGravatarSuccess, (state, { email }) => ({ ...state, [email]: Status.Success })) .case(actions.fetchGravatarFailure, (state, { email }) => ({ ...state, [email]: Status.Failure })) const gravatarByEmail = reducerWithInitialState({}) .case(actions.fetchGravatarSuccess, (state, { email, avatarUrl }) => ({ ...state, [email]: avatarUrl })) const gravatarDataUrlByEmail = reducerWithInitialState({}) .case(actions.fetchGravatarSuccess, (state, { email, avatarDataUrl }) => ({ ...state, [email]: avatarDataUrl })) const companyLogoStatusByDomain = reducerWithInitialState({}) .case(actions.fetchCompanyLogoPending, (state, { domain }) => ({ ...state, [domain]: Status.Pending })) .case(actions.fetchCompanyLogoSuccess, (state, { domain }) => ({ ...state, [domain]: Status.Success })) .case(actions.fetchCompanyLogoFailure, (state, { domain }) => ({ ...state, [domain]: Status.Failure })) const companyLogoByDomain = reducerWithInitialState({}) .case(actions.fetchCompanyLogoSuccess, (state, { domain, logoUrl }) => ({ ...state, [domain]: logoUrl })) const companyLogoDataUrlByDomain = reducerWithInitialState({}) .case(actions.fetchCompanyLogoSuccess, (state, { domain, logoDataUrl }) => ({ ...state, [domain]: logoDataUrl })) export default combineReducers({ gravatarStatusByEmail, gravatarByEmail, gravatarDataUrlByEmail, companyLogoStatusByDomain, companyLogoByDomain, companyLogoDataUrlByDomain, })