35 lines
843 B
JavaScript
35 lines
843 B
JavaScript
|
import { rootReducer } from './rootReducer.js';
|
||
|
import { INIT_STATE } from './types.js';
|
||
|
|
||
|
/**
|
||
|
* @param {Function} rootReducer
|
||
|
* @param {number} initialState
|
||
|
*/
|
||
|
|
||
|
const currentStep = Number(localStorage.getItem('trainingModalCurrentStep'));
|
||
|
|
||
|
const initialState = {
|
||
|
currentStep: currentStep >= 1 && currentStep <= 6 ? currentStep : 1,
|
||
|
isAllowRender: false,
|
||
|
};
|
||
|
|
||
|
const createStore = (rootReducer, initialState) => {
|
||
|
let state = rootReducer(initialState, { type: INIT_STATE });
|
||
|
const subscribers = [];
|
||
|
|
||
|
return {
|
||
|
dispatch(action) {
|
||
|
state = rootReducer(state, action);
|
||
|
subscribers.forEach((sub) => sub());
|
||
|
},
|
||
|
subscribe(callback) {
|
||
|
subscribers.push(callback);
|
||
|
},
|
||
|
getState() {
|
||
|
return state;
|
||
|
},
|
||
|
};
|
||
|
};
|
||
|
|
||
|
export const { dispatch, getState, subscribe } = createStore(rootReducer, initialState);
|