Skip to content

Commit

Permalink
Merge branch 'dev' into redux-toolkit-switch
Browse files Browse the repository at this point in the history
# Conflicts:
#	app/containers/App/selectors.js
#	package.json
  • Loading branch information
julienben committed Dec 2, 2019
2 parents 24a8fcc + cb0da03 commit c252e9d
Show file tree
Hide file tree
Showing 27 changed files with 5,572 additions and 3,987 deletions.
10 changes: 10 additions & 0 deletions .all-contributorsrc
Expand Up @@ -168,6 +168,16 @@
"contributions": [
"code"
]
},
{
"login": "Can-Sahin",
"name": "Can Sahin",
"avatar_url": "https://avatars2.githubusercontent.com/u/33245689?v=4",
"profile": "https://github.com/Can-Sahin",
"contributions": [
"code",
"doc",
]
}
],
"contributorsPerLine": 8
Expand Down
2 changes: 1 addition & 1 deletion app/app.js
Expand Up @@ -8,9 +8,9 @@
import 'react-app-polyfill/ie11';
import 'react-app-polyfill/stable';

import PropTypes from 'prop-types';
import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import { Provider } from 'react-redux';
import { ConnectedRouter } from 'connected-react-router';
import FontFaceObserver from 'fontfaceobserver';
Expand Down
5 changes: 4 additions & 1 deletion app/components/List/tests/index.test.js
Expand Up @@ -11,7 +11,10 @@ describe('<List />', () => {
});

it('should pass all items props to rendered component', () => {
const items = [{ id: 1, name: 'Hello' }, { id: 2, name: 'World' }];
const items = [
{ id: 1, name: 'Hello' },
{ id: 2, name: 'World' },
];

const component = ({ item }) => <li>{item.name}</li>; // eslint-disable-line react/prop-types

Expand Down
2 changes: 1 addition & 1 deletion app/containers/App/index.js
Expand Up @@ -48,7 +48,7 @@ function App() {
<Switch>
<Route exact path="/" component={HomePage} />
<Route path="/features" component={FeaturePage} />
<Route path="" component={NotFoundPage} />
<Route component={NotFoundPage} />
</Switch>

<Footer />
Expand Down
5 changes: 1 addition & 4 deletions app/containers/App/selectors.js
Expand Up @@ -7,9 +7,6 @@ import { createSelector } from '@reduxjs/toolkit';
const selectRouter = state => state.router;

const makeSelectLocation = () =>
createSelector(
selectRouter,
routerState => routerState.location,
);
createSelector(selectRouter, routerState => routerState.location);

export { makeSelectLocation };
1 change: 0 additions & 1 deletion app/containers/App/tests/__snapshots__/index.test.js.snap
Expand Up @@ -27,7 +27,6 @@ exports[`<App /> should render and match the snapshot 1`] = `
/>
<Route
component={[Function]}
path=""
/>
</Switch>
<Footer />
Expand Down
5 changes: 1 addition & 4 deletions app/containers/HomePage/selectors.js
Expand Up @@ -8,9 +8,6 @@ import { initialState } from './slice';
const selectHome = state => state.home || initialState;

const makeSelectUsername = () =>
createSelector(
selectHome,
homeState => homeState.username,
);
createSelector(selectHome, homeState => homeState.username);

export { selectHome, makeSelectUsername };
15 changes: 4 additions & 11 deletions app/containers/LanguageProvider/index.js
Expand Up @@ -14,21 +14,14 @@ import { IntlProvider } from 'react-intl';

import { makeSelectLocale } from './selectors';

const stateSelector = createSelector(
makeSelectLocale(),
locale => ({
locale,
}),
);
const stateSelector = createSelector(makeSelectLocale(), locale => ({
locale,
}));

export default function LanguageProvider(props) {
const { locale } = useSelector(stateSelector);
return (
<IntlProvider
locale={locale}
key={locale}
messages={props.messages[locale]}
>
<IntlProvider locale={locale} messages={props.messages[locale]}>
{React.Children.only(props.children)}
</IntlProvider>
);
Expand Down
5 changes: 1 addition & 4 deletions app/containers/LanguageProvider/selectors.js
Expand Up @@ -12,9 +12,6 @@ const selectLanguage = state => state.language || initialState;
*/

const makeSelectLocale = () =>
createSelector(
selectLanguage,
languageState => languageState.locale,
);
createSelector(selectLanguage, languageState => languageState.locale);

export { selectLanguage, makeSelectLocale };
9 changes: 3 additions & 6 deletions app/containers/LocaleToggle/index.js
Expand Up @@ -15,12 +15,9 @@ import { appLocales } from '../../locales';
import { changeLocale } from '../LanguageProvider/slice';
import { makeSelectLocale } from '../LanguageProvider/selectors';

const stateSelector = createSelector(
makeSelectLocale(),
locale => ({
locale,
}),
);
const stateSelector = createSelector(makeSelectLocale(), locale => ({
locale,
}));

export default function LocaleToggle() {
const { locale } = useSelector(stateSelector);
Expand Down
4 changes: 2 additions & 2 deletions app/containers/NotFoundPage/messages.js
@@ -1,7 +1,7 @@
/*
* NotFoundPage Messages
*
* This contains all the text for the NotFoundPage component.
* This contains all the text for the NotFoundPage container.
*
*/

Expand All @@ -12,6 +12,6 @@ export const scope = 'boilerplate.containers.NotFoundPage';
export default defineMessages({
header: {
id: `${scope}.header`,
defaultMessage: 'Page not found.',
defaultMessage: 'This is the NotFoundPage container!',
},
});
1 change: 1 addition & 0 deletions app/global-styles.js
Expand Up @@ -29,6 +29,7 @@ const GlobalStyle = createGlobalStyle`
}
input, select {
font-family: inherit;
font-size: inherit;
}
`;
Expand Down
2 changes: 1 addition & 1 deletion app/i18n.js
Expand Up @@ -8,7 +8,7 @@
* You CANNOT use import/export in this file.
*/

const addLocaleData = require('react-intl').addLocaleData; //eslint-disable-line
const { addLocaleData } = require('react-intl');
const enLocaleData = require('react-intl/locale-data/en');
const deLocaleData = require('react-intl/locale-data/de');
const { DEFAULT_LOCALE } = require('./locales');
Expand Down
1 change: 1 addition & 0 deletions internals/scripts/clean.js
Expand Up @@ -42,6 +42,7 @@ shell.mv('internals/templates/utils', 'app');
shell.cp('internals/templates/app.js', 'app/app.js');
shell.cp('internals/templates/global-styles.js', 'app/global-styles.js');
shell.cp('internals/templates/i18n.js', 'app/i18n.js');
shell.cp('internals/templates/locales.js', 'app/locales.js');
shell.cp('internals/templates/index.html', 'app/index.html');
shell.cp('internals/templates/reducers.js', 'app/reducers.js');
shell.cp('internals/templates/configureStore.js', 'app/configureStore.js');
Expand Down
33 changes: 19 additions & 14 deletions internals/templates/app.js
Expand Up @@ -8,9 +8,9 @@
import 'react-app-polyfill/ie11';
import 'react-app-polyfill/stable';

// Import all the third party stuff
import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import { Provider } from 'react-redux';
import { ConnectedRouter } from 'connected-react-router';
import history from 'utils/history';
Expand Down Expand Up @@ -39,23 +39,28 @@ const initialState = {};
const store = configureStore(initialState, history);
const MOUNT_NODE = document.getElementById('app');

const ConnectedApp = props => (
<Provider store={store}>
<LanguageProvider messages={props.messages}>
<ConnectedRouter history={history}>
<HelmetProvider>
<App />
</HelmetProvider>
</ConnectedRouter>
</LanguageProvider>
</Provider>
);

ConnectedApp.propTypes = {
messages: PropTypes.object,
};

const render = messages => {
ReactDOM.render(
<Provider store={store}>
<LanguageProvider messages={messages}>
<ConnectedRouter history={history}>
<HelmetProvider>
<App />
</HelmetProvider>
</ConnectedRouter>
</LanguageProvider>
</Provider>,
MOUNT_NODE,
);
ReactDOM.render(<ConnectedApp messages={messages} />, MOUNT_NODE);
};

if (module.hot) {
// Hot reloadable React components and translation json files
// Hot reloadable translation json files
// modules.hot.accept does not accept dynamic dependencies,
// have to be constants at compile-time
module.hot.accept(['./i18n'], () => {
Expand Down
7 changes: 5 additions & 2 deletions internals/templates/containers/App/index.js
@@ -1,6 +1,6 @@
/**
*
* App.js
* App
*
* This component is the skeleton around the actual pages, and should only
* contain code that should be seen on all pages. (e.g. navigation bar)
Expand All @@ -10,12 +10,13 @@
import React from 'react';
import { Switch, Route } from 'react-router-dom';

import { hot } from 'react-hot-loader/root';
import HomePage from 'containers/HomePage/Loadable';
import NotFoundPage from 'containers/NotFoundPage/Loadable';

import GlobalStyle from '../../global-styles';

export default function App() {
function App() {
return (
<div>
<Switch>
Expand All @@ -26,3 +27,5 @@ export default function App() {
</div>
);
}

export default hot(App);
5 changes: 1 addition & 4 deletions internals/templates/containers/App/selectors.js
Expand Up @@ -7,9 +7,6 @@ import { createSelector } from '@reduxjs/toolkit';
const selectRouter = state => state.router;

const makeSelectLocation = () =>
createSelector(
selectRouter,
routerState => routerState.location,
);
createSelector(selectRouter, routerState => routerState.location);

export { makeSelectLocation };
15 changes: 4 additions & 11 deletions internals/templates/containers/LanguageProvider/index.js
Expand Up @@ -14,21 +14,14 @@ import { IntlProvider } from 'react-intl';

import { makeSelectLocale } from './selectors';

const stateSelector = createSelector(
makeSelectLocale(),
locale => ({
locale,
}),
);
const stateSelector = createSelector(makeSelectLocale(), locale => ({
locale,
}));

export default function LanguageProvider(props) {
const { locale } = useSelector(stateSelector);
return (
<IntlProvider
locale={locale}
key={locale}
messages={props.messages[locale]}
>
<IntlProvider locale={locale} messages={props.messages[locale]}>
{React.Children.only(props.children)}
</IntlProvider>
);
Expand Down
5 changes: 1 addition & 4 deletions internals/templates/containers/LanguageProvider/selectors.js
Expand Up @@ -12,9 +12,6 @@ const selectLanguage = state => state.language || initialState;
*/

const makeSelectLocale = () =>
createSelector(
selectLanguage,
languageState => languageState.locale,
);
createSelector(selectLanguage, languageState => languageState.locale);

export { selectLanguage, makeSelectLocale };

This file was deleted.

19 changes: 11 additions & 8 deletions internals/templates/containers/NotFoundPage/tests/index.test.js
@@ -1,18 +1,21 @@
/**
* Testing the NotFoundPage
*/

import React from 'react';
import { render } from '@testing-library/react';
import { IntlProvider } from 'react-intl';

import NotFoundPage from '../index';
import NotFound from '../index';
import messages from '../messages';

describe('<NotFoundPage />', () => {
it('should render and match the snapshot', () => {
const {
container: { firstChild },
} = render(
describe('<NotFound />', () => {
it('should render the Page Not Found text', () => {
const { queryByText } = render(
<IntlProvider locale="en">
<NotFoundPage />
<NotFound />
</IntlProvider>,
);
expect(firstChild).toMatchSnapshot();
expect(queryByText(messages.header.defaultMessage)).toBeInTheDocument();
});
});
1 change: 0 additions & 1 deletion internals/templates/global-styles.js
Expand Up @@ -12,7 +12,6 @@ const GlobalStyle = createGlobalStyle`
}
#app {
background-color: #fafafa;
min-height: 100%;
min-width: 100%;
}
Expand Down
3 changes: 2 additions & 1 deletion internals/templates/i18n.js
Expand Up @@ -7,7 +7,8 @@
* script `extract-intl`, and must use CommonJS module syntax
* You CANNOT use import/export in this file.
*/
const addLocaleData = require('react-intl').addLocaleData; //eslint-disable-line

const { addLocaleData } = require('react-intl');
const enLocaleData = require('react-intl/locale-data/en');
const { DEFAULT_LOCALE } = require('./locales');

Expand Down
7 changes: 6 additions & 1 deletion internals/templates/locales.js
@@ -1 +1,6 @@
export const DEFAULT_LOCALE = 'en';
exports.DEFAULT_LOCALE = 'en';

// prettier-ignore
exports.appLocales = [
'en',
];
4 changes: 3 additions & 1 deletion internals/webpack/webpack.dev.babel.js
Expand Up @@ -6,6 +6,7 @@ const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CircularDependencyPlugin = require('circular-dependency-plugin');
const ErrorOverlayPlugin = require('error-overlay-webpack-plugin');

module.exports = require('./webpack.base.babel')({
mode: 'development',
Expand All @@ -31,6 +32,7 @@ module.exports = require('./webpack.base.babel')({

// Add development plugins
plugins: [
new ErrorOverlayPlugin(),
new webpack.HotModuleReplacementPlugin(), // Tell webpack we want hot reloading
new HtmlWebpackPlugin({
inject: true, // Inject all files that are generated by webpack, e.g. bundle.js
Expand All @@ -44,7 +46,7 @@ module.exports = require('./webpack.base.babel')({

// Emit a source map for easier debugging
// See https://webpack.js.org/configuration/devtool/#devtool
devtool: 'eval-source-map',
devtool: 'cheap-module-source-map',

performance: {
hints: false,
Expand Down

0 comments on commit c252e9d

Please sign in to comment.