mirror of
https://github.com/kingomarnajjar/flex-template-web.git
synced 2026-07-26 06:47:17 +10:00
Format JS with Prettier 0.13.1
This commit is contained in:
parent
f2aeb7d312
commit
50e22d0d1e
65 changed files with 239 additions and 310 deletions
|
|
@ -36,19 +36,15 @@ const MatchWithSubRoutes = props => {
|
|||
<Match
|
||||
{...rest}
|
||||
render={matchProps => {
|
||||
return canShowComponent
|
||||
? <Component {...matchProps} />
|
||||
: (
|
||||
<Redirect
|
||||
to={
|
||||
{
|
||||
pathname: pathByRouteName('LogInPage', routesConfiguration, {}),
|
||||
state: { from: matchProps.location },
|
||||
}
|
||||
}
|
||||
/>
|
||||
);
|
||||
}}
|
||||
return canShowComponent
|
||||
? <Component {...matchProps} />
|
||||
: <Redirect
|
||||
to={{
|
||||
pathname: pathByRouteName('LogInPage', routesConfiguration, {}),
|
||||
state: { from: matchProps.location },
|
||||
}}
|
||||
/>;
|
||||
}}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
|
@ -62,7 +58,7 @@ MatchWithSubRoutes.propTypes = {
|
|||
auth: bool,
|
||||
exactly: bool,
|
||||
name: string.isRequired,
|
||||
component: oneOfType([ func, node ]).isRequired,
|
||||
component: oneOfType([func, node]).isRequired,
|
||||
};
|
||||
|
||||
const Routes = props => {
|
||||
|
|
|
|||
20
src/app.js
20
src/app.js
|
|
@ -12,15 +12,15 @@ import localeData from './translations/en.json';
|
|||
|
||||
export const ClientApp = props => {
|
||||
const { store } = props;
|
||||
addLocaleData([ ...en ]);
|
||||
addLocaleData([...en]);
|
||||
return (
|
||||
<IntlProvider locale="en" messages={localeData}>
|
||||
<BrowserRouter>
|
||||
{({ router }) => (
|
||||
<Provider store={store}>
|
||||
<Routes router={router} routes={routesConfiguration} />
|
||||
</Provider>
|
||||
)}
|
||||
<Provider store={store}>
|
||||
<Routes router={router} routes={routesConfiguration} />
|
||||
</Provider>
|
||||
)}
|
||||
</BrowserRouter>
|
||||
</IntlProvider>
|
||||
);
|
||||
|
|
@ -32,15 +32,15 @@ ClientApp.propTypes = { store: any.isRequired };
|
|||
|
||||
export const ServerApp = props => {
|
||||
const { url, context, store } = props;
|
||||
addLocaleData([ ...en ]);
|
||||
addLocaleData([...en]);
|
||||
return (
|
||||
<IntlProvider locale="en" messages={localeData}>
|
||||
<ServerRouter location={url} context={context}>
|
||||
{({ router }) => (
|
||||
<Provider store={store}>
|
||||
<Routes router={router} routes={routesConfiguration} />
|
||||
</Provider>
|
||||
)}
|
||||
<Provider store={store}>
|
||||
<Routes router={router} routes={routesConfiguration} />
|
||||
</Provider>
|
||||
)}
|
||||
</ServerRouter>
|
||||
</IntlProvider>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -5,14 +5,12 @@ import BookingInfo from './BookingInfo';
|
|||
describe('BookingInfo', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<BookingInfo
|
||||
pricePerDay="55\\u20AC"
|
||||
bookingPeriod="Jan 2nd - Jan 4th"
|
||||
bookingDuration="3 days"
|
||||
total="165\u20AC"
|
||||
/>
|
||||
),
|
||||
<BookingInfo
|
||||
pricePerDay="55\\u20AC"
|
||||
bookingPeriod="Jan 2nd - Jan 4th"
|
||||
bookingDuration="3 days"
|
||||
total="165\u20AC"
|
||||
/>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -50,8 +50,8 @@ class Discussion extends Component {
|
|||
autoFocus
|
||||
type="text"
|
||||
ref={input => {
|
||||
this.input = input;
|
||||
}}
|
||||
this.input = input;
|
||||
}}
|
||||
value={this.state.message}
|
||||
onChange={this.handleOnChange}
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -8,13 +8,11 @@ import FilterPanel from './FilterPanel';
|
|||
describe('FilterPanel', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<FilterPanel />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<FilterPanel />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -6,13 +6,11 @@ import HeroSection from './HeroSection';
|
|||
describe('HeroSection', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<HeroSection params={{ displayName: 'most-awesome-shop' }}>
|
||||
test
|
||||
</HeroSection>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<HeroSection params={{ displayName: 'most-awesome-shop' }}>
|
||||
test
|
||||
</HeroSection>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ const ListingCard = props => {
|
|||
{location}
|
||||
</div>
|
||||
<div className={css.reviews}>
|
||||
(<span>{review.rating}</span><span>/5</span>){' '}
|
||||
(<span>{review.rating}</span><span>/5</span>){' '}
|
||||
<span>{review.count}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -41,7 +41,7 @@ const ListingCard = props => {
|
|||
<div className={css.authorDetails}>
|
||||
<span className={css.authorName}>{author.name}</span>
|
||||
<div className={css.authorReview}>
|
||||
review: <span>{author.review.rating}</span><span>/5</span>
|
||||
review: <span>{author.review.rating}</span><span>/5</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -21,13 +21,11 @@ describe('ListingCard', () => {
|
|||
},
|
||||
};
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<ListingCard {...listing} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<ListingCard {...listing} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ const ListingCardSmall = props => {
|
|||
{title}
|
||||
</NamedLink>
|
||||
<div className={css.reviews}>
|
||||
(<span>{review.rating}</span><span>/5</span>){' '}
|
||||
(<span>{review.rating}</span><span>/5</span>){' '}
|
||||
<span>{review.count}</span>
|
||||
</div>
|
||||
<div className={css.price}>
|
||||
|
|
|
|||
|
|
@ -21,13 +21,11 @@ describe('ListingCardSmall', () => {
|
|||
},
|
||||
};
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<ListingCardSmall {...listing} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<ListingCardSmall {...listing} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -8,13 +8,11 @@ import MapPanel from './MapPanel';
|
|||
describe('MapPanel', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<MapPanel />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<MapPanel />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import css from './Menu.css';
|
|||
|
||||
const Menu = () => (
|
||||
<div className={css.container}>
|
||||
New York, Jan 2nd – Jan 4th <span className={css.openIndicator}>▼</span>
|
||||
New York, Jan 2nd – Jan 4th <span className={css.openIndicator}>▼</span>
|
||||
</div>
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -12,17 +12,15 @@ describe('NamedLink', () => {
|
|||
{ pattern: '/somepage/:id', name: 'SomePage', component: () => <div>blaa</div> },
|
||||
];
|
||||
const component = renderer.create(
|
||||
(
|
||||
<BrowserRouter>
|
||||
<RoutesProvider routes={routesConf}>
|
||||
<NamedLink name="SomePage" params={{ id }}>to SomePage</NamedLink>
|
||||
</RoutesProvider>
|
||||
</BrowserRouter>
|
||||
),
|
||||
<BrowserRouter>
|
||||
<RoutesProvider routes={routesConf}>
|
||||
<NamedLink name="SomePage" params={{ id }}>to SomePage</NamedLink>
|
||||
</RoutesProvider>
|
||||
</BrowserRouter>,
|
||||
);
|
||||
const json = component.toJSON();
|
||||
expect(json.type).toEqual('a');
|
||||
expect(json.props.href).toEqual(`/somepage/${id}`);
|
||||
expect(json.children).toEqual([ 'to SomePage' ]);
|
||||
expect(json.children).toEqual(['to SomePage']);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ OrderDetailsPanel.defaultProps = { className: null };
|
|||
|
||||
OrderDetailsPanel.propTypes = {
|
||||
className: string,
|
||||
orderId: oneOfType([ string, number ]).isRequired,
|
||||
orderId: oneOfType([string, number]).isRequired,
|
||||
title: string.isRequired,
|
||||
imageUrl: string.isRequired,
|
||||
info: object.isRequired,
|
||||
|
|
|
|||
|
|
@ -25,13 +25,11 @@ describe('OrderDetailsPanel', () => {
|
|||
confirmationCode: 'some-test-confirmation-code',
|
||||
};
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<OrderDetailsPanel {...props} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<OrderDetailsPanel {...props} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -8,13 +8,11 @@ import routesConfiguration from '../../routesConfiguration';
|
|||
describe('OrderDiscussionPanel', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<OrderDiscussionPanel />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<OrderDiscussionPanel />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import renderer from 'react-test-renderer';
|
|||
|
||||
describe('RoutesProvider', () => {
|
||||
it('should contain routes from context', () => {
|
||||
const routesConf = [ { name: 'SomePage' } ];
|
||||
const routesConf = [{ name: 'SomePage' }];
|
||||
const Child = (props, context) => {
|
||||
return <div>{context.routes[0].name}</div>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -8,13 +8,11 @@ import SearchResultsPanel from './SearchResultsPanel';
|
|||
describe('SearchResultsPanel', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<SearchResultsPanel />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<SearchResultsPanel />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -45,12 +45,12 @@ class AuthenticationPage extends Component {
|
|||
? <LoginForm onSubmit={this.handleLogIn} />
|
||||
: <SignUpForm onSubmit={this.handleSignUp} />;
|
||||
|
||||
const fromLoginMsg = from && from.pathname ? (
|
||||
<p>
|
||||
const fromLoginMsg = from && from.pathname
|
||||
? <p>
|
||||
You must log in to view the page at
|
||||
<code>{from.pathname}</code>
|
||||
</p>
|
||||
) : null;
|
||||
: null;
|
||||
|
||||
return (
|
||||
<PageLayout title={`Authentication page: ${this.props.tab} tab`}>
|
||||
|
|
@ -69,7 +69,7 @@ const { any, oneOf, shape } = PropTypes;
|
|||
|
||||
AuthenticationPage.propTypes = {
|
||||
location: shape({ state: shape({ from: any }) }),
|
||||
tab: oneOf([ 'login', 'signup' ]),
|
||||
tab: oneOf(['login', 'signup']),
|
||||
};
|
||||
|
||||
export default AuthenticationPage;
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import AuthenticationPage from './AuthenticationPage';
|
|||
describe('AuthenticationPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<AuthenticationPage location={{ state: { from: '/protected' } }} />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<AuthenticationPage location={{ state: { from: '/protected' } }} />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -19,4 +19,4 @@ const ChangeAccountPasswordForm = props => {
|
|||
|
||||
ChangeAccountPasswordForm.propTypes = { ...formPropTypes };
|
||||
|
||||
export default reduxForm({ form: 'changeAccountPassword' })(ChangeAccountPasswordForm)
|
||||
export default reduxForm({ form: 'changeAccountPassword' })(ChangeAccountPasswordForm);
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import ChangeAccountPasswordForm from './ChangeAccountPasswordForm';
|
|||
describe('ChangeAccountPasswordForm', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<ChangeAccountPasswordForm />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<ChangeAccountPasswordForm />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -16,4 +16,4 @@ const ChangePasswordForm = props => {
|
|||
|
||||
ChangePasswordForm.propTypes = { ...formPropTypes };
|
||||
|
||||
export default reduxForm({ form: 'changePassword' })(ChangePasswordForm)
|
||||
export default reduxForm({ form: 'changePassword' })(ChangePasswordForm);
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import ChangePasswordForm from './ChangePasswordForm';
|
|||
describe('ChangePasswordForm', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<ChangePasswordForm />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<ChangePasswordForm />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -8,13 +8,11 @@ import routesConfiguration from '../../routesConfiguration';
|
|||
describe('CheckoutPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<CheckoutPage params={{ listingId: 'some-listing-id' }} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<CheckoutPage params={{ listingId: 'some-listing-id' }} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import React from 'react';
|
||||
import { PageLayout } from '../../components';
|
||||
|
||||
export default () => <PageLayout title="Contact details" />
|
||||
export default () => <PageLayout title="Contact details" />;
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import ContactDetailsPage from './ContactDetailsPage';
|
|||
describe('ContactDetailsPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<ContactDetailsPage params={{ displayName: 'my-shop' }} />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<ContactDetailsPage params={{ displayName: 'my-shop' }} />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import EditProfilePage from './EditProfilePage';
|
|||
describe('EditProfilePage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<EditProfilePage params={{ displayName: 'my-shop' }} />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<EditProfilePage params={{ displayName: 'my-shop' }} />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -29,4 +29,4 @@ const HeroSearchForm = props => {
|
|||
|
||||
HeroSearchForm.propTypes = { ...formPropTypes, intl: intlShape.isRequired };
|
||||
|
||||
export default reduxForm({ form: 'herosearchform' })(injectIntl(HeroSearchForm))
|
||||
export default reduxForm({ form: 'herosearchform' })(injectIntl(HeroSearchForm));
|
||||
|
|
|
|||
|
|
@ -10,11 +10,9 @@ describe('HeroSearchForm', () => {
|
|||
it('matches snapshot', () => {
|
||||
const store = configureStore();
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<HeroSearchForm />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<HeroSearchForm />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -28,6 +28,6 @@ InboxPage.defaultProps = { filter: 'conversation' };
|
|||
|
||||
const { oneOf } = PropTypes;
|
||||
|
||||
InboxPage.propTypes = { filter: oneOf([ 'orders', 'sales', 'inbox' ]) };
|
||||
InboxPage.propTypes = { filter: oneOf(['orders', 'sales', 'inbox']) };
|
||||
|
||||
export default InboxPage;
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import InboxPage from './InboxPage';
|
|||
describe('InboxPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<InboxPage filter="inbox" />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<InboxPage filter="inbox" />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -13,13 +13,11 @@ export const LandingPageComponent = props => {
|
|||
const handleSubmit = createSubmitHandler(props.onLocationChanged);
|
||||
const componentOrRedirect = props.LocationFilter && props.LocationFilter.length > 0
|
||||
? <NamedRedirect name="SearchPage" query={{ location: props.LocationFilter }} />
|
||||
: (
|
||||
<PageLayout title="Landing page">
|
||||
: <PageLayout title="Landing page">
|
||||
<HeroSection>
|
||||
<HeroSearchForm className={css.form} onSubmit={handleSubmit} />
|
||||
</HeroSection>
|
||||
</PageLayout>
|
||||
);
|
||||
</PageLayout>;
|
||||
|
||||
return componentOrRedirect;
|
||||
};
|
||||
|
|
@ -43,4 +41,4 @@ const mapDispatchToProps = function mapDispatchToProps(dispatch) {
|
|||
return { onLocationChanged: v => dispatch(changeLocationFilter(v)) };
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(LandingPageComponent)
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(LandingPageComponent);
|
||||
|
|
|
|||
|
|
@ -8,13 +8,11 @@ import routesConfiguration from '../../routesConfiguration';
|
|||
describe('LandingPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<LandingPageComponent onLocationChanged={v => v} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<LandingPageComponent onLocationChanged={v => v} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@ const info = {
|
|||
{ id: 4, title: 'img4', imageUrl: 'http://placehold.it/750x470' },
|
||||
{ id: 5, title: 'img5', imageUrl: 'http://placehold.it/750x470' },
|
||||
],
|
||||
description: `
|
||||
description: (
|
||||
`
|
||||
<p>
|
||||
Organic Music Production in a Sustainable, Ethical and Professional Studio.
|
||||
</p>
|
||||
|
|
@ -24,17 +25,20 @@ const info = {
|
|||
Banyan Studios is a comfortable, conscious, inspiring and creative retreat for musicians trying to convey their message through state of the art Audio & Video.
|
||||
</p>
|
||||
<a href="https://vimeo.com/168106603" alt="video">https://vimeo.com/168106603</a>
|
||||
`,
|
||||
`
|
||||
),
|
||||
reviews: [
|
||||
{
|
||||
id: 1,
|
||||
reviewer: { avatar: 'http://placehold.it/44x44', name: 'Vesa L.', date: 'January 2017' },
|
||||
rating: 4,
|
||||
review: `
|
||||
review: (
|
||||
`
|
||||
Great studio in the New York for music professionals. Everything you need
|
||||
can be found from here and John was helpful with the right settings -
|
||||
we even got some tips for our songs! :)
|
||||
`,
|
||||
`
|
||||
),
|
||||
},
|
||||
],
|
||||
};
|
||||
|
|
@ -46,12 +50,12 @@ const ListingPage = () => (
|
|||
<img className={css.mainImage} alt={info.images[0].title} src={info.images[0].imageUrl} />
|
||||
<div className={css.thumbnailContainer}>
|
||||
{info.images.slice(1).map(image => (
|
||||
<div key={image.id} className={css.squareWrapper}>
|
||||
<div className={css.aspectWrapper}>
|
||||
<img className={css.thumbnail} alt={image.title} src={image.imageUrl} />
|
||||
</div>
|
||||
<div key={image.id} className={css.squareWrapper}>
|
||||
<div className={css.aspectWrapper}>
|
||||
<img className={css.thumbnail} alt={image.title} src={image.imageUrl} />
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
{/* eslint-disable react/no-danger */}
|
||||
|
|
@ -71,34 +75,34 @@ const ListingPage = () => (
|
|||
<h2>Studio reviews (1)</h2>
|
||||
<div className={css.reviews}>
|
||||
{info.reviews.map(review => (
|
||||
<div key={review.id} className={css.review}>
|
||||
<p>{review.review}</p>
|
||||
<div key={review.id} className={css.review}>
|
||||
<p>{review.review}</p>
|
||||
<div className={css.reviewDetails}>
|
||||
<div className={css.avatarWrapper}>
|
||||
<img
|
||||
className={css.avatar}
|
||||
src={review.reviewer.avatar}
|
||||
alt={review.reviewer.name}
|
||||
/>
|
||||
</div>
|
||||
<div className={css.reviewDetails}>
|
||||
<div className={css.avatarWrapper}>
|
||||
<img
|
||||
className={css.avatar}
|
||||
src={review.reviewer.avatar}
|
||||
alt={review.reviewer.name}
|
||||
/>
|
||||
</div>
|
||||
<div className={css.reviewDetails}>
|
||||
<span className={css.authorName}>{review.reviewer.name}</span><span
|
||||
className={css.date}
|
||||
>
|
||||
{review.reviewer.date}
|
||||
</span>
|
||||
</div>
|
||||
<div className={css.rating}>
|
||||
review: <span>{review.rating}</span><span>/5</span>
|
||||
</div>
|
||||
<span className={css.authorName}>{review.reviewer.name}</span><span
|
||||
className={css.date}
|
||||
>
|
||||
{review.reviewer.date}
|
||||
</span>
|
||||
</div>
|
||||
<div className={css.rating}>
|
||||
review: <span>{review.rating}</span><span>/5</span>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
<div className={css.map}>Map</div>
|
||||
<NamedLink className={css.buttonLink} name="OrderDetailsPage" params={{ id: 12345 }}>
|
||||
{`Book ${info.title}`}
|
||||
{`Book ${info.title}`}
|
||||
</NamedLink>
|
||||
</PageLayout>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -8,13 +8,11 @@ import ListingPage from './ListingPage';
|
|||
describe('ListingPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<ListingPage params={{ slug: 'banyan-studios', id: 1234 }} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<ListingPage params={{ slug: 'banyan-studios', id: 1234 }} />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -17,4 +17,4 @@ const LoginForm = props => {
|
|||
|
||||
LoginForm.propTypes = { ...formPropTypes };
|
||||
|
||||
export default reduxForm({ form: 'login' })(LoginForm)
|
||||
export default reduxForm({ form: 'login' })(LoginForm);
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import LoginForm from './LoginForm';
|
|||
describe('LoginForm', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<LoginForm />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<LoginForm />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -8,4 +8,4 @@ export default () => (
|
|||
<li><Link to="/l/1234">Listing 1234</Link></li>
|
||||
</ul>
|
||||
</PageLayout>
|
||||
)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import ManageListingsPage from './ManageListingsPage';
|
|||
describe('ManageListingsPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<ManageListingsPage />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<ManageListingsPage />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -6,4 +6,4 @@ export default () => (
|
|||
<PageLayout title="Page not found">
|
||||
<Link to="/">Index page</Link>
|
||||
</PageLayout>
|
||||
)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import NotFoundPage from './NotFoundPage';
|
|||
describe('NotFoundPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<NotFoundPage />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<NotFoundPage />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -58,8 +58,8 @@ const OrderPage = props => {
|
|||
const { string, shape, oneOfType, number, oneOf } = PropTypes;
|
||||
|
||||
OrderPage.propTypes = {
|
||||
params: shape({ id: oneOfType([ number, string ]).isRequired }).isRequired,
|
||||
tab: oneOf([ 'details', 'discussion' ]).isRequired,
|
||||
params: shape({ id: oneOfType([number, string]).isRequired }).isRequired,
|
||||
tab: oneOf(['details', 'discussion']).isRequired,
|
||||
};
|
||||
|
||||
export default OrderPage;
|
||||
|
|
|
|||
|
|
@ -8,13 +8,11 @@ import routesConfiguration from '../../routesConfiguration';
|
|||
describe('OrderPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<OrderPage params={{ id: 1234 }} tab="details" />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<OrderPage params={{ id: 1234 }} tab="details" />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import PasswordChangePage from './PasswordChangePage';
|
|||
describe('PasswordChangePage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<PasswordChangePage />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<PasswordChangePage />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -15,4 +15,4 @@ const PasswordForgottenForm = props => {
|
|||
|
||||
PasswordForgottenForm.propTypes = { ...formPropTypes };
|
||||
|
||||
export default reduxForm({ form: 'passwordForgotten' })(PasswordForgottenForm)
|
||||
export default reduxForm({ form: 'passwordForgotten' })(PasswordForgottenForm);
|
||||
|
|
|
|||
|
|
@ -8,11 +8,9 @@ describe('PasswordForgottenForm', () => {
|
|||
it('matches snapshot', () => {
|
||||
const store = configureStore();
|
||||
const component = renderer.create(
|
||||
(
|
||||
<Provider store={store}>
|
||||
<PasswordForgottenForm />
|
||||
</Provider>
|
||||
),
|
||||
<Provider store={store}>
|
||||
<PasswordForgottenForm />
|
||||
</Provider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import PasswordForgottenPage from './PasswordForgottenPage';
|
|||
describe('PasswordForgottenPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<PasswordForgottenPage />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<PasswordForgottenPage />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import React from 'react';
|
||||
import { PageLayout } from '../../components';
|
||||
|
||||
export default () => <PageLayout title="Payout preferences" />
|
||||
export default () => <PageLayout title="Payout preferences" />;
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import PayoutPreferencesPage from './PayoutPreferencesPage';
|
|||
describe('PayoutPreferencesPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<PayoutPreferencesPage />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<PayoutPreferencesPage />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import ProfilePage from './ProfilePage';
|
|||
describe('ProfilePage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<ProfilePage params={{ displayName: 'most-awesome-shop' }} />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<ProfilePage params={{ displayName: 'most-awesome-shop' }} />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ const SalesConversationPage = props => {
|
|||
<Link to={`/sale/${params.id}/details`}>Details tab</Link>
|
||||
<p>Mobile layout needs different views for discussion and details.</p>
|
||||
<p>
|
||||
Discussion view is the default if route doesn't specify mobile tab (e.g. <i>
|
||||
Discussion view is the default if route doesn't specify mobile tab (e.g. <i>
|
||||
/order/1234
|
||||
</i>)
|
||||
</p>
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import SalesConversationPage from './SalesConversationPage';
|
|||
describe('SalesConversationPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<SalesConversationPage params={{ id: 12345 }} />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<SalesConversationPage params={{ id: 12345 }} />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ export default function reducer(state = {}, action = {}) {
|
|||
switch (type) {
|
||||
case ADD_FILTER: {
|
||||
const stateFilters = state.filters || [];
|
||||
return { ...state, ...{ filters: unionWith(stateFilters, [ payload ], isEqual) } };
|
||||
return { ...state, ...{ filters: unionWith(stateFilters, [payload], isEqual) } };
|
||||
}
|
||||
default:
|
||||
return state;
|
||||
|
|
|
|||
|
|
@ -109,4 +109,4 @@ const mapDispatchToProps = function mapDispatchToProps(dispatch) {
|
|||
};
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(SearchPageComponent)
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(SearchPageComponent);
|
||||
|
|
|
|||
|
|
@ -9,13 +9,11 @@ import routesConfiguration from '../../routesConfiguration';
|
|||
describe('SearchPageComponent', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<SearchPageComponent />
|
||||
</RoutesProvider>
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<RoutesProvider routes={routesConfiguration}>
|
||||
<SearchPageComponent />
|
||||
</RoutesProvider>
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
@ -40,18 +38,18 @@ describe('SearchPageDucs', () => {
|
|||
const addFilter1 = addFilter('location', 'helsinki');
|
||||
const addFilter2 = addFilter('gears', 3);
|
||||
const reduced = reducer([], addFilter1);
|
||||
const reducedWithInitialContent = reducer({ filters: [ addFilter1.payload ] }, addFilter2);
|
||||
expect(reduced).toEqual({ filters: [ addFilter1.payload ] });
|
||||
expect(
|
||||
reducedWithInitialContent,
|
||||
).toEqual({ filters: [ addFilter1.payload, addFilter2.payload ] });
|
||||
const reducedWithInitialContent = reducer({ filters: [addFilter1.payload] }, addFilter2);
|
||||
expect(reduced).toEqual({ filters: [addFilter1.payload] });
|
||||
expect(reducedWithInitialContent).toEqual({
|
||||
filters: [addFilter1.payload, addFilter2.payload],
|
||||
});
|
||||
});
|
||||
|
||||
it('should handle duplicates ADD_FILTER', () => {
|
||||
const filter = { location: 'helsinki' };
|
||||
const addFilter = { type: ADD_FILTER, payload: filter };
|
||||
const reducedWithInitialContent = reducer({ filters: [ filter ] }, addFilter);
|
||||
expect(reducedWithInitialContent).toEqual({ filters: [ filter ] });
|
||||
const reducedWithInitialContent = reducer({ filters: [filter] }, addFilter);
|
||||
expect(reducedWithInitialContent).toEqual({ filters: [filter] });
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ export default () => (
|
|||
<PageLayout title="Security">
|
||||
<ChangeAccountPasswordForm onSubmit={changePassword} />
|
||||
</PageLayout>
|
||||
)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import SecurityPage from './SecurityPage';
|
|||
describe('SecurityPage', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<SecurityPage />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<SecurityPage />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -21,4 +21,4 @@ const SignUpForm = props => {
|
|||
|
||||
SignUpForm.propTypes = { ...formPropTypes };
|
||||
|
||||
export default reduxForm({ form: 'signup' })(SignUpForm)
|
||||
export default reduxForm({ form: 'signup' })(SignUpForm);
|
||||
|
|
|
|||
|
|
@ -6,11 +6,9 @@ import SignUpForm from './SignUpForm';
|
|||
describe('SignUpForm', () => {
|
||||
it('matches snapshot', () => {
|
||||
const component = renderer.create(
|
||||
(
|
||||
<TestProvider>
|
||||
<SignUpForm />
|
||||
</TestProvider>
|
||||
),
|
||||
<TestProvider>
|
||||
<SignUpForm />
|
||||
</TestProvider>,
|
||||
);
|
||||
const tree = component.toJSON();
|
||||
expect(tree).toMatchSnapshot();
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ Example.defaultProps = { description: null, props: {} };
|
|||
Example.propTypes = {
|
||||
componentName: string.isRequired,
|
||||
exampleName: string.isRequired,
|
||||
component: oneOfType([ func, node ]).isRequired,
|
||||
component: oneOfType([func, node]).isRequired,
|
||||
description: string,
|
||||
props: object,
|
||||
};
|
||||
|
|
@ -48,11 +48,9 @@ const Examples = props => {
|
|||
const toExamples = (exmpls, name) => (
|
||||
<li key={name}>
|
||||
<ul>
|
||||
{
|
||||
map(exmpls, (exmpl, exampleName) => (
|
||||
<Example key={exampleName} componentName={name} exampleName={exampleName} {...exmpl} />
|
||||
))
|
||||
}
|
||||
{map(exmpls, (exmpl, exampleName) => (
|
||||
<Example key={exampleName} componentName={name} exampleName={exampleName} {...exmpl} />
|
||||
))}
|
||||
</ul>
|
||||
</li>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -26,15 +26,13 @@ export default (state = initialState, action) => {
|
|||
return state;
|
||||
|
||||
case REMOVE_FLASH_NOTIFICATION:
|
||||
return state.map(
|
||||
findIndex(state, msg => msg.id === payload.id),
|
||||
msg => msg.set('isRead', true),
|
||||
);
|
||||
return state.map(findIndex(state, msg => msg.id === payload.id), msg =>
|
||||
msg.set('isRead', true));
|
||||
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Action Creators
|
||||
let nextMessageId = 1;
|
||||
|
|
|
|||
|
|
@ -35,15 +35,15 @@ describe('FlashNotification', () => {
|
|||
const addFlashNote1 = addFlashNotification('error', 'Run the tests');
|
||||
const addFlashNote2 = addFlashNotification('error', 'Run the tests again');
|
||||
const reduced = reducer([], addFlashNote1);
|
||||
const reducedWithInitialContent = reducer([ addFlashNote1.payload ], addFlashNote2);
|
||||
expect(reduced).toEqual([ addFlashNote1.payload ]);
|
||||
expect(reducedWithInitialContent).toEqual([ addFlashNote1.payload, addFlashNote2.payload ]);
|
||||
const reducedWithInitialContent = reducer([addFlashNote1.payload], addFlashNote2);
|
||||
expect(reduced).toEqual([addFlashNote1.payload]);
|
||||
expect(reducedWithInitialContent).toEqual([addFlashNote1.payload, addFlashNote2.payload]);
|
||||
});
|
||||
|
||||
it('should handle duplicates ADD_FILTER', () => {
|
||||
const addFlashNote = addFlashNotification('error', 'Run the tests');
|
||||
const reducedWithInitialContent = reducer([ addFlashNote.payload ], addFlashNote);
|
||||
expect(reducedWithInitialContent).toEqual([ addFlashNote.payload ]);
|
||||
const reducedWithInitialContent = reducer([addFlashNote.payload], addFlashNote);
|
||||
expect(reducedWithInitialContent).toEqual([addFlashNote.payload]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ const routesConfiguration = [
|
|||
];
|
||||
|
||||
const flattenRoutes = routesArray =>
|
||||
routesArray.reduce((a, b) => a.concat(b.routes ? [ b ].concat(flattenRoutes(b.routes)) : b), []);
|
||||
routesArray.reduce((a, b) => a.concat(b.routes ? [b].concat(flattenRoutes(b.routes)) : b), []);
|
||||
|
||||
const findRouteByName = (nameToFind, routes) => {
|
||||
const flattenedRoutes = flattenRoutes(routes);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,8 @@ import createReducer from './reducers';
|
|||
* (like redux-saga or redux-thunk middleware)
|
||||
*/
|
||||
export default function configureStore(initialState) {
|
||||
const useReduxDevTools = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' &&
|
||||
const useReduxDevTools = process.env.NODE_ENV !== 'production' &&
|
||||
typeof window !== 'undefined' &&
|
||||
window.__REDUX_DEVTOOLS_EXTENSION__;
|
||||
|
||||
if (useReduxDevTools) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue