Skip to content

Commit 4244556

Browse files
committed
Install and configure Redux Toolkit.
1 parent 2255bf1 commit 4244556

File tree

8 files changed

+555
-478
lines changed

8 files changed

+555
-478
lines changed

client/middleware.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { createListenerMiddleware } from '@reduxjs/toolkit';
2+
3+
const listenerMiddleware = createListenerMiddleware();
4+
5+
export default listenerMiddleware;

client/modules/App/App.jsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import PropTypes from 'prop-types';
22
import React from 'react';
33
import { connect } from 'react-redux';
4-
import getConfig from '../../utils/getConfig';
4+
import { showReduxDevTools } from '../../store';
55
import DevTools from './components/DevTools';
66
import { setPreviousPath } from '../IDE/actions/ide';
77
import { setLanguage } from '../IDE/actions/preferences';
@@ -51,9 +51,7 @@ class App extends React.Component {
5151
return (
5252
<div className="app">
5353
<CookieConsent hide={hide} />
54-
{this.state.isMounted &&
55-
!window.devToolsExtension &&
56-
getConfig('NODE_ENV') === 'development' && <DevTools />}
54+
{this.state.isMounted && showReduxDevTools() && <DevTools />}
5755
{this.props.children}
5856
</div>
5957
);

client/modules/IDE/selectors/collections.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createSelector } from 'reselect';
1+
import { createSelector } from '@reduxjs/toolkit';
22
import differenceInMilliseconds from 'date-fns/differenceInMilliseconds';
33
import find from 'lodash/find';
44
import orderBy from 'lodash/orderBy';

client/modules/IDE/selectors/projects.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createSelector } from 'reselect';
1+
import { createSelector } from '@reduxjs/toolkit';
22
import differenceInMilliseconds from 'date-fns/differenceInMilliseconds';
33
import orderBy from 'lodash/orderBy';
44
import { DIRECTION } from '../actions/sorting';

client/modules/IDE/selectors/users.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createSelector } from 'reselect';
1+
import { createSelector } from '@reduxjs/toolkit';
22
import getConfig from '../../../utils/getConfig';
33

44
const getAuthenticated = (state) => state.user.authenticated;

client/store.js

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
1-
import { createStore, applyMiddleware, compose } from 'redux';
2-
import thunk from 'redux-thunk';
1+
import { configureStore } from '@reduxjs/toolkit';
2+
import listenerMiddleware from './middleware';
33
import DevTools from './modules/App/components/DevTools';
44
import rootReducer from './reducers';
55
import { clearState, loadState } from './persistState';
66
import getConfig from './utils/getConfig';
77

8-
export default function configureStore(initialState) {
9-
const enhancers = [applyMiddleware(thunk)];
10-
11-
if (getConfig('CLIENT') && getConfig('NODE_ENV') === 'development') {
12-
// Enable DevTools only when rendering on client and during development.
13-
enhancers.push(
14-
window.devToolsExtension
15-
? window.devToolsExtension()
16-
: DevTools.instrument()
17-
);
18-
}
8+
// Enable DevTools only when rendering on client and during development.
9+
// Display the dock monitor only if no browser extension is found.
10+
export function showReduxDevTools() {
11+
return (
12+
getConfig('CLIENT') &&
13+
getConfig('NODE_ENV') === 'development' &&
14+
!window.__REDUX_DEVTOOLS_EXTENSION__
15+
);
16+
}
1917

18+
export default function setupStore(initialState) {
2019
const savedState = loadState();
2120
clearState();
2221

23-
const store = createStore(
24-
rootReducer,
25-
savedState != null ? savedState : initialState,
26-
compose(...enhancers)
27-
);
22+
const store = configureStore({
23+
reducer: rootReducer,
24+
middleware: (getDefaultMiddleware) =>
25+
getDefaultMiddleware({
26+
thunk: true,
27+
serializableCheck: true,
28+
// TODO: enable immutableCheck once the mutations are fixed.
29+
immutableCheck: false
30+
}).concat(listenerMiddleware.middleware),
31+
preloadedState: savedState || initialState,
32+
enhancers: showReduxDevTools() ? [DevTools.instrument()] : []
33+
});
2834

2935
if (module.hot) {
3036
// Enable Webpack hot module replacement for reducers

0 commit comments

Comments
 (0)