import { combineReducers, Reducer } from 'redux'; import { persistReducer } from 'redux-persist'; import web3, { Web3State, INITIAL_STATE as web3InitialState } from 'modules/web3'; import proposal, { ProposalState, INITIAL_STATE as proposalInitialState, } from 'modules/proposals'; import create, { CreateState, INITIAL_STATE as createInitialState } from 'modules/create'; import authReducer, { AuthState, INITIAL_STATE as authInitialState, authPersistConfig, } from 'modules/auth'; import users, { UsersState, INITIAL_STATE as usersInitialState } from 'modules/users'; export interface AppState { proposal: ProposalState; web3: Web3State; create: CreateState; users: UsersState; auth: AuthState; } export const combineInitialState: AppState = { proposal: proposalInitialState, web3: web3InitialState, create: createInitialState, users: usersInitialState, auth: authInitialState, }; export default combineReducers({ proposal, web3, create, users, // Don't allow for redux-persist's _persist key to be touched in our code auth: (persistReducer(authPersistConfig, authReducer) as any) as Reducer, });