ligo/tools/webide/packages/client/src/configure-store.ts

32 lines
813 B
TypeScript
Raw Normal View History

import { applyMiddleware, createStore, Middleware } from 'redux';
import ReduxThunk from 'redux-thunk';
import rootReducer, { AppState } from './redux/app';
declare var defaultServerState: AppState | undefined;
export default function configureStore() {
const store = createStore(
rootReducer,
{
...(typeof defaultServerState === 'undefined' ? {} : defaultServerState)
},
applyMiddleware(ReduxThunk, cleanRouteOnAction)
);
return store;
}
const cleanRouteOnAction: Middleware = store => next => action => {
const { share } = store.getState();
next(action);
const state = store.getState();
if (
share.link !== undefined &&
state.share.link === undefined &&
window.location.pathname !== '/'
) {
window.history.replaceState({}, document.title, '/');
}
};