Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | /*
* Copyright 2018 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { applyMiddleware, combineReducers, createStore, Store } from 'redux';
// it's possible to disable the extension in production
// by importing from redux-devtools-extension/developmentOnly
import { composeWithDevTools } from 'redux-devtools-extension';
import { createLogger } from 'redux-logger';
import thunk from 'redux-thunk';
import RestServiceClient from './rest';
import { AppState } from './types';
import tenantReducer from './tenant';
import skillReducer from './skill/reducers';
import spotReducer from './spot/reducers';
import contractReducer from './contract/reducers';
import employeeReducer from './employee/reducers';
import shiftTemplateReducer from './rotation/reducers';
import alertReducer from './alert/reducers';
import axios from 'axios';
import { rosterStateReducer, shiftRosterViewReducer, availabilityRosterReducer,
solverReducer } from './roster/reducers';
export interface StoreConfig {
readonly restBaseURL: string;
}
export function configureStore(
{ restBaseURL }: StoreConfig,
preloadedState?: AppState,
): Store<AppState> {
const restServiceClient = new RestServiceClient(restBaseURL, axios);
const middlewares = [thunk.withExtraArgument(restServiceClient), createLogger()];
const middlewareEnhancer = applyMiddleware(...middlewares);
const enhancers = [middlewareEnhancer];
const composedEnhancers = composeWithDevTools(...enhancers);
// map reducers to state slices
const rootReducer = combineReducers<AppState>({
tenantData: tenantReducer,
skillList: skillReducer,
spotList: spotReducer,
contractList: contractReducer,
employeeList: employeeReducer,
shiftTemplateList: shiftTemplateReducer,
rosterState: rosterStateReducer,
shiftRoster: shiftRosterViewReducer,
availabilityRoster: availabilityRosterReducer,
solverState: solverReducer,
alerts: alertReducer
});
/* if (process.env.NODE_ENV !== 'production' && module.hot) {
module.hot.accept('./reducers', () => store.replaceReducer(rootReducer));
} */
const store = createStore(
rootReducer,
preloadedState,
composedEnhancers,
);
restServiceClient.setDispatch(store.dispatch);
return store;
}
|