feat(prettier): Use prettier for client code

This commit is contained in:
Bouncey 2018-09-07 11:06:00 +01:00 committed by Stuart Taylor
parent 748c1da517
commit a9c948679e
21 changed files with 3105 additions and 220 deletions

View File

@ -11,7 +11,7 @@ module.exports = {
'gatsby-plugin-react-helmet',
{
resolve: 'gatsby-plugin-create-client-paths',
options: { prefixes: ['/certification/*', '/unsubscribed/*'] }
options: { prefixes: ['/certification/*', '/unsubscribed/*', '/user/*'] }
},
{
resolve: 'gatsby-plugin-manifest',
@ -27,4 +27,4 @@ module.exports = {
},
'gatsby-plugin-sitemap'
]
}
};

1140
client/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -42,12 +42,18 @@
"scripts": {
"build": "node ../config/ensure-env.js && gatsby build",
"develop": "gatsby develop",
"format": "prettier --write '**/*.js'",
"format:gatsby": "prettier-eslint --write --trailing-comma none --single-quote './gatsby-*.js'",
"format:src": "prettier-eslint --write --trailing-comma none --single-quote './src/**/*.js'",
"format:utils": "prettier-eslint --write --trailing-comma none --single-quote './utils/**/*.js'",
"format": "npm run format:gatsby && npm run format:src && npm run format:utils",
"test": "echo \"Error: no test specified\" && exit 1"
},
"devDependencies": {
"babel-plugin-transform-imports": "^1.5.0",
"prettier": "^1.14.2"
"eslint": "^5.5.0",
"eslint-config-freecodecamp": "^1.1.1",
"prettier": "^1.14.2",
"prettier-eslint-cli": "^4.7.1"
},
"repository": {
"type": "git",

View File

@ -1,10 +1,10 @@
import React from 'react'
import { Grid, Panel, Button } from '@freecodecamp/react-bootstrap'
import React from 'react';
import { Grid, Panel, Button } from '@freecodecamp/react-bootstrap';
import env from '../../config/env.json'
import Layout from '../components/Layout'
import FullWidthRow from '../components/helpers/FullWidthRow'
import { Spacer } from '../components/helpers'
import env from '../../config/env.json';
import Layout from '../components/Layout';
import FullWidthRow from '../components/helpers/FullWidthRow';
import { Spacer } from '../components/helpers';
const { apiLocation } = env;
@ -15,7 +15,7 @@ function ShowUnsubscribed({ unsubscribeId }) {
<FullWidthRow>
<Spacer />
<Spacer />
<Panel bsStyle="primary" className="text-center">
<Panel bsStyle='primary' className='text-center'>
<Spacer />
<h2>You have successfully been unsubscribed</h2>
<p>Whatever you go on to, keep coding!</p>
@ -24,20 +24,20 @@ function ShowUnsubscribed({ unsubscribeId }) {
{unsubscribeId ? (
<FullWidthRow>
<Button
bsStyle="primary"
bsSize="lg"
block={true}
bsSize='lg'
bsStyle='primary'
href={`${apiLocation}/internal/resubscribe/${unsubscribeId}`}
>
>
You can click here to resubscribe
</Button>
</FullWidthRow>
) : null}
</Grid>
</Layout>
)
);
}
ShowUnsubscribed.displayName = 'ShowUnsubscribed'
ShowUnsubscribed.displayName = 'ShowUnsubscribed';
export default ShowUnsubscribed
export default ShowUnsubscribed;

View File

@ -0,0 +1,37 @@
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { createSelector } from 'reselect';
import { isSignedInSelector, userFetchStateSelector } from '../redux';
import Layout from '../components/Layout';
import { Spacer } from '../components/helpers';
const propTypes = {
isSignedIn: PropTypes.bool,
userFetchState: PropTypes.shape({
pending: PropTypes.bool,
comnplete: PropTypes.bool,
errored: PropTypes.bool
}),
username: PropTypes.string
};
const mapStateToProps = createSelector(
isSignedInSelector,
userFetchStateSelector,
(isSignedIn, userFetchState) => ({ isSignedIn, userFetchState })
);
function ShowUser() {
return (
<Layout>
<Spacer />
<h1>ShowUser</h1>
</Layout>
);
}
ShowUser.displayName = 'ShowUser';
ShowUser.propTypes = propTypes;
export default connect(mapStateToProps)(ShowUser);

View File

@ -1,9 +1,7 @@
import React from 'react';
function ButtonSpacer() {
return (
<div className='button-spacer' />
);
return <div className='button-spacer' />;
}
ButtonSpacer.displayName = 'ButtonSpacer';

View File

@ -5,8 +5,8 @@ import { Row, Col } from '@freecodecamp/react-bootstrap';
function FullWidthRow({ children }) {
return (
<Row>
<Col sm={ 8 } smOffset={ 2 } xs={ 12 }>
{ children }
<Col sm={8} smOffset={2} xs={12}>
{children}
</Col>
</Row>
);

View File

@ -2,9 +2,7 @@ import React from 'react';
import Spinner from 'react-spinkit';
function Loader() {
return (
<Spinner name='ball-clip-rotate-multiple'/>
);
return <Spinner name='ball-clip-rotate-multiple' />;
}
Loader.displayName = 'Loader';

View File

@ -5,7 +5,7 @@ import styles from './skeletonStyles';
function SkeletonSprite() {
return (
<div className='sprite-container'>
<style dangerouslySetInnerHTML={ { __html: styles } } />
<style dangerouslySetInnerHTML={{ __html: styles }} />
<svg className='sprite-svg'>
<rect
className='sprite'

View File

@ -5,8 +5,8 @@ import { Row, Col } from '@freecodecamp/react-bootstrap';
function SlimWidthRow({ children, ...restProps }) {
return (
<Row {...restProps}>
<Col md={ 6 } mdOffset={ 3 } sm={ 12 }>
{ children }
<Col md={6} mdOffset={3} sm={12}>
{children}
</Col>
</Row>
);

View File

@ -6,7 +6,6 @@ import ShowCertification from '../client-only-routes/ShowCertification';
import './certification.css';
class Certification extends Component {
render() {
return (

View File

@ -1,8 +1,8 @@
import React from 'react'
import { Grid } from '@freecodecamp/react-bootstrap'
import React from 'react';
import { Grid } from '@freecodecamp/react-bootstrap';
import Layout from '../components/Layout'
import FullWidthRow from '../components/helpers/FullWidthRow'
import Layout from '../components/Layout';
import FullWidthRow from '../components/helpers/FullWidthRow';
import { Spacer } from '../components/helpers';
function SoftwareResourcesForNonProfits() {
@ -12,7 +12,7 @@ function SoftwareResourcesForNonProfits() {
<Spacer />
<Grid>
<FullWidthRow>
<h2 className="text-center">Software Resources for Nonprofits</h2>
<h2 className='text-center'>Software Resources for Nonprofits</h2>
<hr />
<p>
Please note that freeCodeCamp is not partnered with, nor do we
@ -24,37 +24,37 @@ function SoftwareResourcesForNonProfits() {
<ul>
<li>
<a
href="http://givecamp.org/"
target="_blank"
rel="noopener noreferrer"
>
href='http://givecamp.org/'
rel='noopener noreferrer'
target='_blank'
>
Give Camp
</a>
</li>
<li>
<a
href="http://www.volunteermatch.com"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.volunteermatch.com'
rel='noopener noreferrer'
target='_blank'
>
Volunteer Match.com
</a>
</li>
<li>
<a
href="http://www.catchafire.org"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.catchafire.org'
rel='noopener noreferrer'
target='_blank'
>
Catchafire
</a>
</li>
<li>
<a
href="http://anyonecanhaveawebsite.com"
target="_blank"
rel="noopener noreferrer"
>
href='http://anyonecanhaveawebsite.com'
rel='noopener noreferrer'
target='_blank'
>
Anyone Can Have A Website
</a>
</li>
@ -63,47 +63,47 @@ function SoftwareResourcesForNonProfits() {
<ul>
<li>
<a
href="https://www.youtube.com/watch?v=4AXDKWuY9QM"
target="_blank"
rel="noopener noreferrer"
>
href='https://www.youtube.com/watch?v=4AXDKWuY9QM'
rel='noopener noreferrer'
target='_blank'
>
How to build and deploy a website without writing any code for
free
</a>
</li>
<li>
<a
href="http://www.wix.com/"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.wix.com/'
rel='noopener noreferrer'
target='_blank'
>
Wix
</a>
</li>
<li>
<a
href="https://www.squarespace.com/"
target="_blank"
rel="noopener noreferrer"
>
href='https://www.squarespace.com/'
rel='noopener noreferrer'
target='_blank'
>
Square Space
</a>
</li>
<li>
<a
href="https://wordpress.com/"
target="_blank"
rel="noopener noreferrer"
>
href='https://wordpress.com/'
rel='noopener noreferrer'
target='_blank'
>
WordPress
</a>
</li>
<li>
<a
href="https://xprs.imcreator.com"
target="_blank"
rel="noopener noreferrer"
>
href='https://xprs.imcreator.com'
rel='noopener noreferrer'
target='_blank'
>
Imcreator.com
</a>
</li>
@ -112,82 +112,82 @@ function SoftwareResourcesForNonProfits() {
<ul>
<li>
<a
href="http://causesignal.com"
target="_blank"
rel="noopener noreferrer"
>
href='http://causesignal.com'
rel='noopener noreferrer'
target='_blank'
>
Cause Signal
</a>
</li>
<li>
<a
href="https://www.thedatabank.com/"
target="_blank"
rel="noopener noreferrer"
>
href='https://www.thedatabank.com/'
rel='noopener noreferrer'
target='_blank'
>
The Data Bank
</a>
</li>
<li>
<a
href="http://www.donorsnap.com/"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.donorsnap.com/'
rel='noopener noreferrer'
target='_blank'
>
Donor Snap
</a>
</li>
<li>
<a
href="http://www.donorperfect.com/"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.donorperfect.com/'
rel='noopener noreferrer'
target='_blank'
>
Donor Perfect
</a>
</li>
<li>
<a
href="https://www.blackbaud.com/fundraising-crm/etapestry-donor-management"
target="_blank"
rel="noopener noreferrer"
>
href='https://www.blackbaud.com/fundraising-crm/etapestry-donor-management'
rel='noopener noreferrer'
target='_blank'
>
E Tapestry
</a>
</li>
<li>
<a
href="http://www.z2systems.com"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.z2systems.com'
rel='noopener noreferrer'
target='_blank'
>
Z2 Systems
</a>
</li>
<li>
<a
href="http://www.regpacks.com/volunteer-management"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.regpacks.com/volunteer-management'
rel='noopener noreferrer'
target='_blank'
>
Reg Packs
</a>
</li>
<li>
<a
href="http://sumac.com"
target="_blank"
rel="noopener noreferrer"
>
href='http://sumac.com'
rel='noopener noreferrer'
target='_blank'
>
Sumac
</a>
</li>
<li>
<a
href="http://www.volgistics.com"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.volgistics.com'
rel='noopener noreferrer'
target='_blank'
>
Volgistics
</a>
</li>
@ -196,28 +196,28 @@ function SoftwareResourcesForNonProfits() {
<ul>
<li>
<a
href="https://www.ordoro.com"
target="_blank"
rel="noopener noreferrer"
>
href='https://www.ordoro.com'
rel='noopener noreferrer'
target='_blank'
>
Ordoro
</a>
</li>
<li>
<a
href="http://www.unleashedsoftware.com"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.unleashedsoftware.com'
rel='noopener noreferrer'
target='_blank'
>
Unleashed Software
</a>
</li>
<li>
<a
href="https://www.ezofficeinventory.com/industries/non-profits"
target="_blank"
rel="noopener noreferrer"
>
href='https://www.ezofficeinventory.com/industries/non-profits'
rel='noopener noreferrer'
target='_blank'
>
EZ Office Inventory
</a>
</li>
@ -226,37 +226,37 @@ function SoftwareResourcesForNonProfits() {
<ul>
<li>
<a
href="http://www.dokeos.com"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.dokeos.com'
rel='noopener noreferrer'
target='_blank'
>
Dokeos
</a>
</li>
<li>
<a
href="http://www.efrontlearning.net/"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.efrontlearning.net/'
rel='noopener noreferrer'
target='_blank'
>
E Front Learning
</a>
</li>
<li>
<a
href="https://moodle.org/"
target="_blank"
rel="noopener noreferrer"
>
href='https://moodle.org/'
rel='noopener noreferrer'
target='_blank'
>
Moodle
</a>
</li>
<li>
<a
href="https://sakaiproject.org/"
target="_blank"
rel="noopener noreferrer"
>
href='https://sakaiproject.org/'
rel='noopener noreferrer'
target='_blank'
>
Sakai Project
</a>
</li>
@ -265,19 +265,19 @@ function SoftwareResourcesForNonProfits() {
<ul>
<li>
<a
href="https://civicrm.org/"
target="_blank"
rel="noopener noreferrer"
>
href='https://civicrm.org/'
rel='noopener noreferrer'
target='_blank'
>
CiviCRM
</a>
</li>
<li>
<a
href="http://tcmgr.com/"
target="_blank"
rel="noopener noreferrer"
>
href='http://tcmgr.com/'
rel='noopener noreferrer'
target='_blank'
>
Total Community Manager
</a>
</li>
@ -286,19 +286,19 @@ function SoftwareResourcesForNonProfits() {
<ul>
<li>
<a
href="http://www.google.com/forms"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.google.com/forms'
rel='noopener noreferrer'
target='_blank'
>
Google Forms
</a>
</li>
<li>
<a
href="http://www.typeform.com"
target="_blank"
rel="noopener noreferrer"
>
href='http://www.typeform.com'
rel='noopener noreferrer'
target='_blank'
>
Typeform
</a>
</li>
@ -306,9 +306,9 @@ function SoftwareResourcesForNonProfits() {
</FullWidthRow>
</Grid>
</Layout>
)
);
}
SoftwareResourcesForNonProfits.displayName = 'SoftwareResourcesForNonProfits'
SoftwareResourcesForNonProfits.displayName = 'SoftwareResourcesForNonProfits';
export default SoftwareResourcesForNonProfits
export default SoftwareResourcesForNonProfits;

View File

@ -1,19 +1,19 @@
import React from 'react'
import { Router } from '@reach/router'
import React from 'react';
import { Router } from '@reach/router';
import RedirectHome from '../components/RedirectHome'
import ShowUnsubscribed from '../client-only-routes/ShowUnsubscribed'
import RedirectHome from '../components/RedirectHome';
import ShowUnsubscribed from '../client-only-routes/ShowUnsubscribed';
function Unsubscribed() {
return (
<Router>
<ShowUnsubscribed path="/unsubscribed/:unsubscribeId" />
<ShowUnsubscribed path='/unsubscribed/:unsubscribeId' />
<ShowUnsubscribed path='/unsubscribed' />
<RedirectHome default={true} />
</Router>
)
);
}
Unsubscribed.displayName = 'Unsubscribed'
Unsubscribed.displayName = 'Unsubscribed';
export default Unsubscribed
export default Unsubscribed;

18
client/src/pages/user.js Normal file
View File

@ -0,0 +1,18 @@
import React from 'react';
import { Router } from '@reach/router';
import RedirectHome from '../components/RedirectHome';
import ShowUser from '../client-only-routes/ShowUser';
function User() {
return (
<Router>
<ShowUser path='/user/:username/report-user' />
<RedirectHome default={true} />
</Router>
);
}
User.displayName = 'User';
export default User;

View File

@ -7,10 +7,7 @@ import rootSaga from './rootSaga';
const sagaMiddleware = createSagaMiddleware();
export const createStore = () => {
const store = reduxCreateStore(
rootReducer,
applyMiddleware(sagaMiddleware)
);
const store = reduxCreateStore(rootReducer, applyMiddleware(sagaMiddleware));
sagaMiddleware.run(rootSaga);
return store;
};

View File

@ -7,10 +7,7 @@ function* fetchSessionUser() {
console.log('fetchSessionUser');
try {
const {
data: {
user = {},
result = ''
}
data: { user = {}, result = '' }
} = yield call(getSessionUser);
const appUser = user[result];
yield put(fetchUserComplete({ user: appUser, username: result }));

View File

@ -3,7 +3,5 @@ import { all } from 'redux-saga/effects';
import { sagas as appSagas } from './';
export default function* rootSaga() {
yield all([
...appSagas
]);
yield all([...appSagas]);
}

View File

@ -17,7 +17,5 @@ function* updateMyEmailSaga({ payload: newEmail }) {
}
export function createUpdateMyEmailSaga(types) {
return [
takeEvery(types.updateMyEmail, updateMyEmailSaga)
];
return [takeEvery(types.updateMyEmail, updateMyEmailSaga)];
}

View File

@ -1,7 +1,7 @@
import words from './words.json';
function randomItem(arr) {
return arr[ Math.floor(Math.random() * arr.length) ];
return arr[Math.floor(Math.random() * arr.length)];
}
export function randomQuote() {

1786
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -5,6 +5,7 @@
"develop": "node ./config/ensure-env.js && node develop-client-server.js"
},
"devDependencies": {
"eslint-config-freecodecamp": "^1.1.1",
"tree-kill": "^1.2.0"
},
"dependencies": {