diff --git a/.eslintrc.json b/.eslintrc.json index 293657679..2186efd8b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -20,6 +20,8 @@ "no-template-curly-in-string": [1], "no-unsafe-negation": [1], "array-callback-return": [1], + "arrow-parens": ["warn", "always"], + "template-curly-spacing": "warn", "eqeqeq": [2, "smart"], "no-eval": [2], "no-global-assign": [2], @@ -36,6 +38,11 @@ "no-unneeded-ternary": [1], "object-curly-spacing": [1], "space-infix-ops": ["error"], + "space-in-parens": ["error", "never"], + "space-unary-ops": ["error", { + "words": true, + "nonwords": false + }], "no-const-assign": [2], "no-duplicate-imports": [2], "prefer-template": [1], diff --git a/client/coral-admin/src/actions/assets.js b/client/coral-admin/src/actions/assets.js index a4a3513a8..f5c2f848a 100644 --- a/client/coral-admin/src/actions/assets.js +++ b/client/coral-admin/src/actions/assets.js @@ -24,7 +24,7 @@ export const fetchAssets = (skip = '', limit = '', search = '', sort = '', filte assets: result, count })) - .catch(error => dispatch({type: FETCH_ASSETS_FAILURE, error})); + .catch((error) => dispatch({type: FETCH_ASSETS_FAILURE, error})); }; // Update an asset state @@ -34,9 +34,9 @@ export const updateAssetState = (id, closedAt) => (dispatch) => { return coralApi(`/assets/${id}/status`, {method: 'PUT', body: {closedAt}}) .then(() => dispatch({type: UPDATE_ASSET_STATE_SUCCESS})) - .catch(error => dispatch({type: UPDATE_ASSET_STATE_FAILURE, error})); + .catch((error) => dispatch({type: UPDATE_ASSET_STATE_FAILURE, error})); }; -export const updateAssets = assets => dispatch => { +export const updateAssets = (assets) => (dispatch) => { dispatch({type: UPDATE_ASSETS, assets}); }; diff --git a/client/coral-admin/src/actions/auth.js b/client/coral-admin/src/actions/auth.js index e50273fa6..e233f3112 100644 --- a/client/coral-admin/src/actions/auth.js +++ b/client/coral-admin/src/actions/auth.js @@ -7,7 +7,7 @@ import {handleAuthToken} from 'coral-framework/actions/auth'; // SIGN IN //============================================================================== -export const handleLogin = (email, password, recaptchaResponse) => dispatch => { +export const handleLogin = (email, password, recaptchaResponse) => (dispatch) => { dispatch({type: actions.LOGIN_REQUEST}); const params = {method: 'POST', body: {email, password}}; if (recaptchaResponse) { @@ -20,10 +20,10 @@ export const handleLogin = (email, password, recaptchaResponse) => dispatch => { return dispatch(checkLoginFailure('not logged in')); } dispatch(handleAuthToken(token)); - const isAdmin = !!user.roles.filter(i => i === 'ADMIN').length; + const isAdmin = !!user.roles.filter((i) => i === 'ADMIN').length; dispatch(checkLoginSuccess(user, isAdmin)); }) - .catch(error => { + .catch((error) => { if (error.translation_key === 'LOGIN_MAXIMUM_EXCEEDED') { dispatch({ type: actions.LOGIN_MAXIMUM_EXCEEDED, @@ -51,11 +51,11 @@ const forgotPassowordFailure = () => ({ type: actions.FETCH_FORGOT_PASSWORD_FAILURE }); -export const requestPasswordReset = email => dispatch => { +export const requestPasswordReset = (email) => (dispatch) => { dispatch(forgotPassowordRequest(email)); return coralApi('/account/password/reset', {method: 'POST', body: {email}}) .then(() => dispatch(forgotPassowordSuccess())) - .catch(error => dispatch(forgotPassowordFailure(error))); + .catch((error) => dispatch(forgotPassowordFailure(error))); }; //============================================================================== @@ -72,12 +72,12 @@ const checkLoginSuccess = (user, isAdmin) => ({ isAdmin }); -const checkLoginFailure = error => ({ +const checkLoginFailure = (error) => ({ type: actions.CHECK_LOGIN_FAILURE, error }); -export const checkLogin = () => dispatch => { +export const checkLogin = () => (dispatch) => { dispatch(checkLoginRequest()); return coralApi('/auth') .then(({user}) => { @@ -86,10 +86,10 @@ export const checkLogin = () => dispatch => { return dispatch(checkLoginFailure('not logged in')); } - const isAdmin = !!user.roles.filter(i => i === 'ADMIN').length; + const isAdmin = !!user.roles.filter((i) => i === 'ADMIN').length; dispatch(checkLoginSuccess(user, isAdmin)); }) - .catch(error => { + .catch((error) => { console.error(error); dispatch(checkLoginFailure(`${error.translation_key}`)); }); diff --git a/client/coral-admin/src/actions/community.js b/client/coral-admin/src/actions/community.js index 0f53ea3da..9a8743762 100644 --- a/client/coral-admin/src/actions/community.js +++ b/client/coral-admin/src/actions/community.js @@ -16,7 +16,7 @@ import { import coralApi from '../../../coral-framework/helpers/response'; -export const fetchAccounts = (query = {}) => dispatch => { +export const fetchAccounts = (query = {}) => (dispatch) => { dispatch(requestFetchAccounts()); coralApi(`/users?${qs.stringify(query)}`) @@ -30,14 +30,14 @@ export const fetchAccounts = (query = {}) => dispatch => { totalPages }); }) - .catch(error => dispatch({type: FETCH_COMMENTERS_FAILURE, error})); + .catch((error) => dispatch({type: FETCH_COMMENTERS_FAILURE, error})); }; const requestFetchAccounts = () => ({ type: FETCH_COMMENTERS_REQUEST }); -export const updateSorting = sort => ({ +export const updateSorting = (sort) => ({ type: SORT_UPDATE, sort }); diff --git a/client/coral-admin/src/actions/config.js b/client/coral-admin/src/actions/config.js index dca0f7117..4f3528be0 100644 --- a/client/coral-admin/src/actions/config.js +++ b/client/coral-admin/src/actions/config.js @@ -1,6 +1,6 @@ export const CONFIG_UPDATED = 'CONFIG_UPDATED'; -export const fetchConfig = () => dispatch => { +export const fetchConfig = () => (dispatch) => { let json = document.getElementById('data'); let data = JSON.parse(json.textContent); dispatch({type: CONFIG_UPDATED, data}); diff --git a/client/coral-admin/src/actions/install.js b/client/coral-admin/src/actions/install.js index ceecf16c9..21ff58de1 100644 --- a/client/coral-admin/src/actions/install.js +++ b/client/coral-admin/src/actions/install.js @@ -5,14 +5,14 @@ import errorMsj from 'coral-framework/helpers/error'; export const nextStep = () => ({type: actions.NEXT_STEP}); export const previousStep = () => ({type: actions.PREVIOUS_STEP}); -export const goToStep = step => ({type: actions.GO_TO_STEP, step}); +export const goToStep = (step) => ({type: actions.GO_TO_STEP, step}); const installRequest = () => ({type: actions.INSTALL_REQUEST}); const installSuccess = () => ({type: actions.INSTALL_SUCCESS}); -const installFailure = error => ({type: actions.INSTALL_FAILURE, error}); +const installFailure = (error) => ({type: actions.INSTALL_FAILURE, error}); const addError = (name, error) => ({type: actions.ADD_ERROR, name, error}); -const hasError = error => ({type: actions.HAS_ERROR, error}); +const hasError = (error) => ({type: actions.HAS_ERROR, error}); const clearErrors = () => ({type: actions.CLEAR_ERRORS}); const validation = (formData, dispatch, next) => { @@ -21,11 +21,11 @@ const validation = (formData, dispatch, next) => { } const validKeys = Object.keys(formData) - .filter(name => name !== 'domains'); + .filter((name) => name !== 'domains'); // Required Validation const empty = validKeys - .filter(name => { + .filter((name) => { const cond = !formData[name].length; if (cond) { @@ -45,7 +45,7 @@ const validation = (formData, dispatch, next) => { // RegExp Validation const validation = validKeys - .filter(name => { + .filter((name) => { const cond = !validate[name](formData[name]); if (cond) { @@ -88,7 +88,7 @@ export const finishInstall = () => (dispatch, getState) => { dispatch(installSuccess()); dispatch(nextStep()); }) - .catch(error => { + .catch((error) => { console.error(error); dispatch(installFailure(`${error.translation_key}`)); }); @@ -99,10 +99,10 @@ export const updateUserFormData = (name, value) => ({type: actions.UPDATE_FORMDA export const updatePermittedDomains = (value) => ({type: actions.UPDATE_PERMITTED_DOMAINS_SETTINGS, value}); const checkInstallRequest = () => ({type: actions.CHECK_INSTALL_REQUEST}); -const checkInstallSuccess = installed => ({type: actions.CHECK_INSTALL_SUCCESS, installed}); -const checkInstallFailure = error => ({type: actions.CHECK_INSTALL_FAILURE, error}); +const checkInstallSuccess = (installed) => ({type: actions.CHECK_INSTALL_SUCCESS, installed}); +const checkInstallFailure = (error) => ({type: actions.CHECK_INSTALL_FAILURE, error}); -export const checkInstall = next => dispatch => { +export const checkInstall = (next) => (dispatch) => { dispatch(checkInstallRequest()); coralApi('/setup') .then(({installed}) => { @@ -111,7 +111,7 @@ export const checkInstall = next => dispatch => { next(); } }) - .catch(error => { + .catch((error) => { console.error(error); dispatch(checkInstallFailure(`${error.translation_key}`)); }); diff --git a/client/coral-admin/src/actions/moderation.js b/client/coral-admin/src/actions/moderation.js index c93dc0c76..9c9d5a571 100644 --- a/client/coral-admin/src/actions/moderation.js +++ b/client/coral-admin/src/actions/moderation.js @@ -1,6 +1,6 @@ import * as actions from 'constants/moderation'; -export const toggleModal = open => ({type: actions.TOGGLE_MODAL, open}); +export const toggleModal = (open) => ({type: actions.TOGGLE_MODAL, open}); export const singleView = () => ({type: actions.SINGLE_VIEW}); // Ban User Dialog diff --git a/client/coral-admin/src/actions/settings.js b/client/coral-admin/src/actions/settings.js index d6eb183ad..b0530e77e 100644 --- a/client/coral-admin/src/actions/settings.js +++ b/client/coral-admin/src/actions/settings.js @@ -13,19 +13,19 @@ export const SAVE_SETTINGS_FAILED = 'SAVE_SETTINGS_FAILED'; export const WORDLIST_UPDATED = 'WORDLIST_UPDATED'; export const DOMAINLIST_UPDATED = 'DOMAINLIST_UPDATED'; -export const fetchSettings = () => dispatch => { +export const fetchSettings = () => (dispatch) => { dispatch({type: SETTINGS_LOADING}); coralApi('/settings') - .then(settings => { + .then((settings) => { dispatch({type: SETTINGS_RECEIVED, settings}); }) - .catch(error => { + .catch((error) => { dispatch({type: SETTINGS_FETCH_ERROR, error}); }); }; // for updating top-level settings -export const updateSettings = settings => { +export const updateSettings = (settings) => { return {type: SETTINGS_UPDATED, settings}; }; @@ -48,7 +48,7 @@ export const saveSettingsToServer = () => (dispatch, getState) => { .then(() => { dispatch({type: SAVE_SETTINGS_SUCCESS, settings}); }) - .catch(error => { + .catch((error) => { dispatch({type: SAVE_SETTINGS_FAILED, error}); }); }; diff --git a/client/coral-admin/src/actions/users.js b/client/coral-admin/src/actions/users.js index 954d89820..2642db90d 100644 --- a/client/coral-admin/src/actions/users.js +++ b/client/coral-admin/src/actions/users.js @@ -9,8 +9,8 @@ export const userStatusUpdate = (status, userId, commentId) => { return (dispatch) => { dispatch({type: userTypes.UPDATE_STATUS_REQUEST}); return coralApi(`/users/${userId}/status`, {method: 'POST', body: {status: status, comment_id: commentId}}) - .then(res => dispatch({type: userTypes.UPDATE_STATUS_SUCCESS, res})) - .catch(error => dispatch({type: userTypes.UPDATE_STATUS_FAILURE, error})); + .then((res) => dispatch({type: userTypes.UPDATE_STATUS_SUCCESS, res})) + .catch((error) => dispatch({type: userTypes.UPDATE_STATUS_FAILURE, error})); }; }; @@ -18,7 +18,7 @@ export const userStatusUpdate = (status, userId, commentId) => { export const sendNotificationEmail = (userId, subject, body) => { return (dispatch) => { return coralApi(`/users/${userId}/email`, {method: 'POST', body: {subject, body}}) - .catch(error => dispatch({type: userTypes.USER_EMAIL_FAILURE, error})); + .catch((error) => dispatch({type: userTypes.USER_EMAIL_FAILURE, error})); }; }; @@ -26,6 +26,6 @@ export const sendNotificationEmail = (userId, subject, body) => { export const enableUsernameEdit = (userId) => { return (dispatch) => { return coralApi(`/users/${userId}/username-enable`, {method: 'POST'}) - .catch(error => dispatch({type: userTypes.USERNAME_ENABLE_FAILURE, error})); + .catch((error) => dispatch({type: userTypes.USERNAME_ENABLE_FAILURE, error})); }; }; diff --git a/client/coral-admin/src/components/AdminLogin.js b/client/coral-admin/src/components/AdminLogin.js index e7e41eb48..2b8625f4f 100644 --- a/client/coral-admin/src/components/AdminLogin.js +++ b/client/coral-admin/src/components/AdminLogin.js @@ -14,7 +14,7 @@ class AdminLogin extends React.Component { this.state = {email: '', password: '', requestPassword: false}; } - handleSignIn = e => { + handleSignIn = (e) => { e.preventDefault(); this.props.handleLogin(this.state.email, this.state.password); } @@ -28,7 +28,7 @@ class AdminLogin extends React.Component { this.props.handleLogin(this.state.email, this.state.password, recaptchaResponse); } - handleRequestPassword = e => { + handleRequestPassword = (e) => { e.preventDefault(); this.props.requestPasswordReset(this.state.email); } @@ -41,11 +41,11 @@ class AdminLogin extends React.Component { this.setState({email: e.target.value})} /> + onChange={(e) => this.setState({email: e.target.value})} /> this.setState({password: e.target.value})} + onChange={(e) => this.setState({password: e.target.value})} type='password' />

- Forgot your password? { + Forgot your password? { e.preventDefault(); this.setState({requestPassword: true}); }}>Request a new one. @@ -82,7 +82,7 @@ class AdminLogin extends React.Component { this.setState({email: e.target.value})} /> + onChange={(e) => this.setState({email: e.target.value})} /> diff --git a/client/coral-admin/src/containers/LayoutContainer.js b/client/coral-admin/src/containers/LayoutContainer.js index 04a83e39b..31110d3bd 100644 --- a/client/coral-admin/src/containers/LayoutContainer.js +++ b/client/coral-admin/src/containers/LayoutContainer.js @@ -2,9 +2,9 @@ import React, {Component} from 'react'; import {connect} from 'react-redux'; import Layout from '../components/ui/Layout'; import {fetchConfig} from '../actions/config'; +import AdminLogin from '../components/AdminLogin'; import {logout} from 'coral-framework/actions/auth'; import {FullLoading} from '../components/FullLoading'; -import AdminLogin from '../components/AdminLogin'; import {toggleModal as toggleShortcutModal} from '../actions/moderation'; import {checkLogin, handleLogin, requestPasswordReset} from '../actions/auth'; @@ -58,20 +58,20 @@ class LayoutContainer extends Component { } } -const mapStateToProps = state => ({ +const mapStateToProps = (state) => ({ auth: state.auth.toJS(), TALK_RECAPTCHA_PUBLIC: state.config .get('data') .get('TALK_RECAPTCHA_PUBLIC', null) }); -const mapDispatchToProps = dispatch => ({ +const mapDispatchToProps = (dispatch) => ({ checkLogin: () => dispatch(checkLogin()), fetchConfig: () => dispatch(fetchConfig()), handleLogin: (username, password, recaptchaResponse) => dispatch(handleLogin(username, password, recaptchaResponse)), - requestPasswordReset: email => dispatch(requestPasswordReset(email)), - toggleShortcutModal: toggle => dispatch(toggleShortcutModal(toggle)), + requestPasswordReset: (email) => dispatch(requestPasswordReset(email)), + toggleShortcutModal: (toggle) => dispatch(toggleShortcutModal(toggle)), handleLogout: () => dispatch(logout()) }); diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js index 9606be543..3d1c1dd7a 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js @@ -61,14 +61,14 @@ class ModerationContainer extends Component { select = (next) => () => { if (next) { - this.setState(prevState => + this.setState((prevState) => ({ ...prevState, selectedIndex: prevState.selectedIndex < this.getComments().length - 1 ? prevState.selectedIndex + 1 : prevState.selectedIndex })); } else { - this.setState(prevState => + this.setState((prevState) => ({ ...prevState, selectedIndex: prevState.selectedIndex > 0 ? @@ -126,7 +126,7 @@ class ModerationContainer extends Component { } if (providedAssetId) { - asset = assets.find(asset => asset.id === this.props.params.id); + asset = assets.find((asset) => asset.id === this.props.params.id); if (!asset) { return ; @@ -202,17 +202,17 @@ class ModerationContainer extends Component { } } -const mapStateToProps = state => ({ +const mapStateToProps = (state) => ({ moderation: state.moderation.toJS(), settings: state.settings.toJS(), assets: state.assets.get('assets') }); -const mapDispatchToProps = dispatch => ({ - toggleModal: toggle => dispatch(toggleModal(toggle)), +const mapDispatchToProps = (dispatch) => ({ + toggleModal: (toggle) => dispatch(toggleModal(toggle)), onClose: () => dispatch(toggleModal(false)), singleView: () => dispatch(singleView()), - updateAssets: assets => dispatch(updateAssets(assets)), + updateAssets: (assets) => dispatch(updateAssets(assets)), fetchSettings: () => dispatch(fetchSettings()), showBanUserDialog: (user, commentId, commentStatus, showRejectedNote) => dispatch(showBanUserDialog(user, commentId, commentStatus, showRejectedNote)), hideBanUserDialog: () => dispatch(hideBanUserDialog(false)), diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationLayout.js b/client/coral-admin/src/containers/ModerationQueue/ModerationLayout.js index 0db97cda0..02a798900 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationLayout.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationLayout.js @@ -1,6 +1,6 @@ import React from 'react'; -const ModerationLayout = props => ( +const ModerationLayout = (props) => (

{props.children}
diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js index 55a00096d..0f31210c0 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js @@ -27,11 +27,11 @@ const Comment = ({ ...props }) => { const links = linkify.getMatches(comment.body); - const linkText = links ? links.map(link => link.raw) : []; + const linkText = links ? links.map((link) => link.raw) : []; const flagActionSummaries = getActionSummary('FlagActionSummary', comment); const flagActions = comment.actions && - comment.actions.filter(a => a.__typename === 'FlagAction'); + comment.actions.filter((a) => a.__typename === 'FlagAction'); let commentType = ''; if (comment.status === 'PREMOD') { commentType = 'premod'; @@ -43,7 +43,7 @@ const Comment = ({ // this should be the behavior on the front end as well. // currently the highlighter plugin does not support this out of the box. const searchWords = [...suspectWords, ...bannedWords] - .filter(w => { + .filter((w) => { return new RegExp(`(^|\\s)${w}(\\s|$)`).test(comment.body); }) .concat(linkText); diff --git a/client/coral-admin/src/containers/ModerationQueue/components/CommentType.js b/client/coral-admin/src/containers/ModerationQueue/components/CommentType.js index 5ad4138ca..346b5f1e6 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/CommentType.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/CommentType.js @@ -2,7 +2,7 @@ import React, {PropTypes} from 'react'; import styles from './CommentType.css'; import {Icon} from 'coral-ui'; -const CommentType = props => { +const CommentType = (props) => { const typeData = getTypeData(props.type); return ( @@ -12,7 +12,7 @@ const CommentType = props => { ); }; -const getTypeData = type => { +const getTypeData = (type) => { switch (type) { case 'premod': return {icon: 'query_builder', text: 'Pre-Mod', className: 'premod'}; diff --git a/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js b/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js index 62b4e554d..f2f52e75e 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js @@ -55,7 +55,7 @@ class FlagBox extends Component {