Add eslint rule to require parentheses in arrow functions

[MAILPOET-2162]
This commit is contained in:
Ján Mikláš
2019-07-31 10:58:56 +02:00
committed by Jack Kitterhing
parent a1bf7ec23f
commit a78562c774
78 changed files with 158 additions and 155 deletions

View File

@ -22,6 +22,7 @@
"react-hooks/rules-of-hooks": "error", "react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn", "react-hooks/exhaustive-deps": "warn",
// Exceptions // Exceptions
"arrow-parens": ["error", "always"],
"comma-dangle": ["error", "always-multiline"], "comma-dangle": ["error", "always-multiline"],
"no-script-url": 0, "no-script-url": 0,
"import/extensions": 0, // we wouldn't be able to import jQuery without this line "import/extensions": 0, // we wouldn't be able to import jQuery without this line

View File

@ -23,7 +23,7 @@ class FeatureAnnouncement extends React.Component {
const updateMailPoetNotice = ReactStringReplace( const updateMailPoetNotice = ReactStringReplace(
MailPoet.I18n.t('updateMailPoetNotice'), MailPoet.I18n.t('updateMailPoetNotice'),
/\[link\](.*?)\[\/link\]/, /\[link\](.*?)\[\/link\]/,
match => `<a href="update-core.php">${match}</a>` (match) => `<a href="update-core.php">${match}</a>`
).join(''); ).join('');
jQuery('#beamerOverlay').append( jQuery('#beamerOverlay').append(
`<p id="mailpoet_update_notice" class="mailpoet_in_beamer_update_notice">${updateMailPoetNotice}</p>` `<p id="mailpoet_update_notice" class="mailpoet_in_beamer_update_notice">${updateMailPoetNotice}</p>`

View File

@ -1,10 +1,10 @@
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
const KeyValueTable = props => ( const KeyValueTable = (props) => (
<table className="widefat fixed" style={{ maxWidth: props.max_width }}> <table className="widefat fixed" style={{ maxWidth: props.max_width }}>
<tbody> <tbody>
{props.rows.map(row => ( {props.rows.map((row) => (
<tr key={`row_${row.key}`}> <tr key={`row_${row.key}`}>
<td className="row-title">{ row.key }</td> <td className="row-title">{ row.key }</td>
<td>{ row.value }</td> <td>{ row.value }</td>

View File

@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
const PrintBoolean = props => ( const PrintBoolean = (props) => (
<span> <span>
{(props.children === true && props.truthy) {(props.children === true && props.truthy)
|| (props.children === false && props.falsy) || (props.children === false && props.falsy)

View File

@ -8,7 +8,7 @@ const SteppedProgressBar = (props) => {
return ( return (
<div className="mailpoet_stepped_progress_bar"> <div className="mailpoet_stepped_progress_bar">
{ {
[...Array(props.steps_count).keys()].map(step => ( [...Array(props.steps_count).keys()].map((step) => (
<div <div
className={` className={`
mailpoet_stepped_progress_bar_step ${(step < props.step ? 'active' : '')} ${(step === (props.step - 1) ? 'current' : '')} mailpoet_stepped_progress_bar_step ${(step < props.step ? 'active' : '')} ${(step === (props.step - 1) ? 'current' : '')}

View File

@ -21,7 +21,7 @@ export const fromDom = async (element) => {
* @param {String} url * @param {String} url
* @return {Promise<String>} DataURL of the generated image. * @return {Promise<String>} DataURL of the generated image.
*/ */
export const fromUrl = url => new Promise((resolve, reject) => { export const fromUrl = (url) => new Promise((resolve, reject) => {
const iframe = document.createElement('iframe'); const iframe = document.createElement('iframe');
const protocol = document.location.href.startsWith('https://') ? 'https:' : 'http:'; const protocol = document.location.href.startsWith('https://') ? 'https:' : 'http:';
iframe.src = protocol + url.replace(/^https?:/, ''); iframe.src = protocol + url.replace(/^https?:/, '');
@ -59,7 +59,7 @@ export const fromUrl = url => new Promise((resolve, reject) => {
* @param {Object} data * @param {Object} data
* @return {Promise<String>} DataURL of the generated image. * @return {Promise<String>} DataURL of the generated image.
*/ */
export const fromNewsletter = data => new Promise((resolve, reject) => { export const fromNewsletter = (data) => new Promise((resolve, reject) => {
const json = data; const json = data;
if (!_.isUndefined(json.body)) { if (!_.isUndefined(json.body)) {
json.body = JSON.stringify(json.body); json.body = JSON.stringify(json.body);
@ -69,7 +69,7 @@ export const fromNewsletter = data => new Promise((resolve, reject) => {
endpoint: 'newsletters', endpoint: 'newsletters',
action: 'showPreview', action: 'showPreview',
data: json, data: json,
}).done(response => fromUrl(response.meta.preview_url) }).done((response) => fromUrl(response.meta.preview_url)
.then(resolve) .then(resolve)
.catch(reject)).fail(response => reject(response.errors)); .catch(reject)).fail((response) => reject(response.errors));
}); });

View File

@ -16,7 +16,7 @@ const ExperimentalFeatures = () => {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -42,7 +42,7 @@ const ExperimentalFeatures = () => {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -22,7 +22,7 @@ class FormFieldCheckbox extends React.Component {
// it will be false in case value is "0" or empty // it will be false in case value is "0" or empty
const isChecked = !!(Number(this.props.item[this.props.field.name])); const isChecked = !!(Number(this.props.item[this.props.field.name]));
const options = Object.keys(this.props.field.values).map( const options = Object.keys(this.props.field.values).map(
value => ( (value) => (
<p key={`checkbox-${value}`}> <p key={`checkbox-${value}`}>
<label htmlFor={this.props.field.name}> <label htmlFor={this.props.field.name}>
<input <input

View File

@ -9,7 +9,7 @@ class FormFieldRadio extends React.Component { // eslint-disable-line react/pref
const selectedValue = this.props.item[this.props.field.name]; const selectedValue = this.props.item[this.props.field.name];
const options = Object.keys(this.props.field.values).map( const options = Object.keys(this.props.field.values).map(
value => ( (value) => (
<p key={`radio-${value}`}> <p key={`radio-${value}`}>
<label htmlFor={this.props.field.name}> <label htmlFor={this.props.field.name}>
<input <input

View File

@ -33,9 +33,9 @@ class FormFieldSelect extends React.Component {
keys = _.map( keys = _.map(
_.sortBy( _.sortBy(
_.pairs(this.props.field.values), _.pairs(this.props.field.values),
item => sortBy(item[0], item[1]) (item) => sortBy(item[0], item[1])
), ),
item => item[0] (item) => item[0]
); );
} else { } else {
keys = Object.keys(this.props.field.values); keys = Object.keys(this.props.field.values);
@ -47,7 +47,7 @@ class FormFieldSelect extends React.Component {
return filter(this.props.item, value); return filter(this.props.item, value);
}) })
.map( .map(
value => ( (value) => (
<option <option
key={`option-${value}`} key={`option-${value}`}
value={value} value={value}

View File

@ -52,7 +52,7 @@ class Selection extends React.Component {
if (this.props.item !== undefined && this.props.field.name !== undefined) { if (this.props.item !== undefined && this.props.field.name !== undefined) {
if (this.allowMultipleValues()) { if (this.allowMultipleValues()) {
if (_.isArray(this.props.item[this.props.field.name])) { if (_.isArray(this.props.item[this.props.field.name])) {
return this.props.item[this.props.field.name].map(item => item.id); return this.props.item[this.props.field.name].map((item) => item.id);
} }
} else { } else {
return this.props.item[this.props.field.name]; return this.props.item[this.props.field.name];

View File

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
const FormFieldTextarea = props => ( const FormFieldTextarea = (props) => (
<textarea <textarea
type="text" type="text"
className="regular-text" className="regular-text"

View File

@ -175,7 +175,7 @@ class Form extends React.Component {
render() { render() {
let errors; let errors;
if (this.getErrors() !== undefined) { if (this.getErrors() !== undefined) {
errors = this.getErrors().map(error => ( errors = this.getErrors().map((error) => (
<div className="mailpoet_notice notice inline error is-dismissible" key={`error-${error.message}`}> <div className="mailpoet_notice notice inline error is-dismissible" key={`error-${error.message}`}>
<p>{ error.message }</p> <p>{ error.message }</p>
</div> </div>

View File

@ -111,7 +111,7 @@ const itemActions = [
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -134,7 +134,7 @@ class FormList extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -149,8 +149,8 @@ class FormList extends React.Component {
); );
let segments = window.mailpoet_segments let segments = window.mailpoet_segments
.filter(segment => (jQuery.inArray(segment.id, form.segments) !== -1)) .filter((segment) => (jQuery.inArray(segment.id, form.segments) !== -1))
.map(segment => segment.name) .map((segment) => segment.name)
.join(', '); .join(', ');
if (form.settings.segments_selected_by === 'user') { if (form.settings.segments_selected_by === 'user') {

View File

@ -14,7 +14,7 @@ const CronStatus = (props) => {
? ( ? (
<> <>
{ {
status.last_error.map(error => ( status.last_error.map((error) => (
<div key={error.worker}> <div key={error.worker}>
{error.worker} {error.worker}
: :

View File

@ -47,13 +47,13 @@ const QueueStatus = (props) => {
]} ]}
/> />
<h4>{MailPoet.I18n.t('scheduledTasks')}</h4> <h4>{MailPoet.I18n.t('scheduledTasks')}</h4>
<TasksList show_scheduled_at tasks={status.latestTasks.filter(task => (task.status === 'scheduled'))} /> <TasksList show_scheduled_at tasks={status.latestTasks.filter((task) => (task.status === 'scheduled'))} />
<h4>{MailPoet.I18n.t('runningTasks')}</h4> <h4>{MailPoet.I18n.t('runningTasks')}</h4>
<TasksList tasks={status.latestTasks.filter(task => (task.status === null))} /> <TasksList tasks={status.latestTasks.filter((task) => (task.status === null))} />
<h4>{MailPoet.I18n.t('completedTasks')}</h4> <h4>{MailPoet.I18n.t('completedTasks')}</h4>
<TasksList tasks={status.latestTasks.filter(task => (task.status === 'completed'))} /> <TasksList tasks={status.latestTasks.filter((task) => (task.status === 'completed'))} />
</div> </div>
); );
}; };

View File

@ -9,7 +9,7 @@ function handleFocus(event) {
function printData(data) { function printData(data) {
if (_.isObject(data)) { if (_.isObject(data)) {
const printableData = Object.keys(data).map(key => `${key}: ${data[key]}`); const printableData = Object.keys(data).map((key) => `${key}: ${data[key]}`);
return ( return (
<textarea <textarea

View File

@ -15,7 +15,7 @@ function renderStatusMessage(status, error, link) {
noticeMessage = ReactStringReplace( noticeMessage = ReactStringReplace(
noticeMessage, noticeMessage,
/\[link\](.*?)\[\/link\]/g, /\[link\](.*?)\[\/link\]/g,
match => ( (match) => (
<a href={`${link}`} key="kb-link">{ match }</a> <a href={`${link}`} key="kb-link">{ match }</a>
) )
); );

View File

@ -12,7 +12,7 @@ const TasksList = (props) => {
<thead><TaskListLabelsRow show_scheduled_at={props.show_scheduled_at} /></thead> <thead><TaskListLabelsRow show_scheduled_at={props.show_scheduled_at} /></thead>
<tbody> <tbody>
{ {
props.tasks.length ? props.tasks.map(task => ( props.tasks.length ? props.tasks.map((task) => (
<TaskListDataRow <TaskListDataRow
key={task.id} key={task.id}
task={task} task={task}

View File

@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
const TasksListDataRow = props => ( const TasksListDataRow = (props) => (
<tr> <tr>
<td className="column column-primary"> <td className="column column-primary">
{ props.task.id } { props.task.id }

View File

@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
const TasksListLabelsRow = props => ( const TasksListLabelsRow = (props) => (
<tr> <tr>
<th className="row-title">Id</th> <th className="row-title">Id</th>
<th className="row-title">{MailPoet.I18n.t('type')}</th> <th className="row-title">{MailPoet.I18n.t('type')}</th>

View File

@ -17,7 +17,7 @@ class ListingBulkActions extends React.Component {
getSelectedAction() { getSelectedAction() {
const selectedAction = this.myRef.current.value; const selectedAction = this.myRef.current.value;
if (selectedAction.length > 0) { if (selectedAction.length > 0) {
const action = this.props.bulk_actions.filter(act => (act.name === selectedAction)); const action = this.props.bulk_actions.filter((act) => (act.name === selectedAction));
if (action.length > 0) { if (action.length > 0) {
return action[0]; return action[0];
@ -100,7 +100,7 @@ class ListingBulkActions extends React.Component {
onChange={this.handleChangeAction} onChange={this.handleChangeAction}
> >
<option value="">{MailPoet.I18n.t('bulkActions')}</option> <option value="">{MailPoet.I18n.t('bulkActions')}</option>
{ this.props.bulk_actions.map(action => ( { this.props.bulk_actions.map((action) => (
<option <option
value={action.name} value={action.name}
key={`action-${action.name}`} key={`action-${action.name}`}

View File

@ -19,7 +19,7 @@ class ListingFilters extends React.Component {
getAvailableFilters = () => { getAvailableFilters = () => {
const filters = this.props.filters; const filters = this.props.filters;
return Object.keys(filters).filter(filter => !( return Object.keys(filters).filter((filter) => !(
filters[filter].length === 0 filters[filter].length === 0
|| ( || (
filters[filter].length === 1 filters[filter].length === 1
@ -50,7 +50,7 @@ class ListingFilters extends React.Component {
key={`filter-${filter}`} key={`filter-${filter}`}
name={filter} name={filter}
> >
{ filters[filter].map(option => ( { filters[filter].map((option) => (
<option <option
value={option.value} value={option.value}
key={`filter-option-${option.value}`} key={`filter-option-${option.value}`}

View File

@ -123,7 +123,7 @@ class Listing extends React.Component {
setParams = () => { setParams = () => {
if (this.props.location) { if (this.props.location) {
const params = Object.keys(this.state) const params = Object.keys(this.state)
.filter(key => ( .filter((key) => (
[ [
'group', 'group',
'filter', 'filter',
@ -248,7 +248,7 @@ class Listing extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -324,7 +324,7 @@ class Listing extends React.Component {
this.getItems(); this.getItems();
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
}); });
@ -353,7 +353,7 @@ class Listing extends React.Component {
this.getItems(); this.getItems();
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
}); });
@ -382,7 +382,7 @@ class Listing extends React.Component {
this.getItems(); this.getItems();
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
}); });
@ -402,7 +402,7 @@ class Listing extends React.Component {
this.handleGroup('all'); this.handleGroup('all');
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
}); });
@ -441,7 +441,7 @@ class Listing extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -497,7 +497,7 @@ class Listing extends React.Component {
this.clearSelection(); this.clearSelection();
} else { } else {
this.setState((prevState) => { this.setState((prevState) => {
const selectedIds = prevState.items.map(item => Number(item.id)); const selectedIds = prevState.items.map((item) => Number(item.id));
return { return {
selected_ids: selectedIds, selected_ids: selectedIds,
@ -575,7 +575,7 @@ class Listing extends React.Component {
// columns // columns
let columns = this.props.columns || []; let columns = this.props.columns || [];
columns = columns.filter( columns = columns.filter(
column => (column.display === undefined || !!(column.display) === true) (column) => (column.display === undefined || !!(column.display) === true)
); );
// bulk actions // bulk actions

View File

@ -31,7 +31,7 @@ class ListingItem extends React.Component {
}; };
handleToggleItem = () => { handleToggleItem = () => {
this.setState(prevState => ({ this.setState((prevState) => ({
expanded: !prevState.expanded, expanded: !prevState.expanded,
})); }));
}; };
@ -67,7 +67,7 @@ class ListingItem extends React.Component {
if (customActions.length > 0) { if (customActions.length > 0) {
let isFirst = true; let isFirst = true;
itemActions = customActions itemActions = customActions
.filter(action => action.display === undefined || action.display(this.props.item)) .filter((action) => action.display === undefined || action.display(this.props.item))
.map((action, index) => { .map((action, index) => {
let customAction = null; let customAction = null;

View File

@ -14,7 +14,7 @@ const resumeMailerSending = () => {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -132,7 +132,7 @@ const MailerCheckSettingsNotice = () => (
ReactStringReplace( ReactStringReplace(
MailPoet.I18n.t('mailerCheckSettingsNotice'), MailPoet.I18n.t('mailerCheckSettingsNotice'),
/\[link\](.*?)\[\/link\]/g, /\[link\](.*?)\[\/link\]/g,
match => <a href="?page=mailpoet-settings#mta" key="check-sending">{ match }</a> (match) => <a href="?page=mailpoet-settings#mta" key="check-sending">{ match }</a>
) )
} }
</p> </p>

View File

@ -54,7 +54,7 @@ class ListingPages extends React.Component {
this.setPage(e.target.value); this.setPage(e.target.value);
}; };
constrainPage = page => Math.min(Math.max(1, Math.abs(Number(page))), this.getLastPage()); constrainPage = (page) => Math.min(Math.max(1, Math.abs(Number(page))), this.getLastPage());
render() { render() {
if (this.props.count === 0) { if (this.props.count === 0) {

View File

@ -19,7 +19,7 @@ const renderBreadcrumb = (newsletterType) => {
const initializeEditor = (config) => { const initializeEditor = (config) => {
const editorContainer = document.getElementById('mailpoet_editor'); const editorContainer = document.getElementById('mailpoet_editor');
const getUrlParam = param => (document.location.search.split(`${param}=`)[1] || '').split('&')[0]; const getUrlParam = (param) => (document.location.search.split(`${param}=`)[1] || '').split('&')[0];
if (!editorContainer || !window.EditorApplication) return; if (!editorContainer || !window.EditorApplication) return;
@ -65,7 +65,7 @@ const initializeEditor = (config) => {
.fail((pauseFailResponse) => { .fail((pauseFailResponse) => {
if (pauseFailResponse.errors.length > 0) { if (pauseFailResponse.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
pauseFailResponse.errors.map(error => error.message), pauseFailResponse.errors.map((error) => error.message),
{ scroll: true, static: true } { scroll: true, static: true }
); );
} }
@ -75,7 +75,7 @@ const initializeEditor = (config) => {
.fail((response) => { .fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true, static: true } { scroll: true, static: true }
); );
} }

View File

@ -24,7 +24,7 @@ function NewsletterStatsInfo(props) {
newsletter.reply_to_name || '' newsletter.reply_to_name || ''
); );
const segments = (newsletter.segments || []).map(segment => segment.name).join(', '); const segments = (newsletter.segments || []).map((segment) => segment.name).join(', ');
return ( return (
<div> <div>

View File

@ -51,7 +51,7 @@ class CampaignStatsPage extends React.Component {
}); });
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
this.setState({ this.setState({

View File

@ -147,7 +147,7 @@ const newsletterActions = [
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -196,7 +196,7 @@ class NewsletterListNotification extends React.Component {
}); });
}; };
renderStatus = newsletter => ( renderStatus = (newsletter) => (
<select <select
data-id={newsletter.id} data-id={newsletter.id}
defaultValue={newsletter.status} defaultValue={newsletter.status}
@ -211,7 +211,7 @@ class NewsletterListNotification extends React.Component {
let sendingFrequency; let sendingFrequency;
// get list of segments' name // get list of segments' name
const segments = newsletter.segments.map(segment => segment.name); const segments = newsletter.segments.map((segment) => segment.name);
const sendingToSegments = MailPoet.I18n.t('ifNewContentToSegments').replace( const sendingToSegments = MailPoet.I18n.t('ifNewContentToSegments').replace(
'%$1s', segments.join(', ') '%$1s', segments.join(', ')
); );

View File

@ -74,7 +74,7 @@ class NewsletterListNotificationHistory extends React.Component {
'has-row-actions' 'has-row-actions'
); );
const segments = newsletter.segments.map(segment => segment.name).join(', '); const segments = newsletter.segments.map((segment) => segment.name).join(', ');
return ( return (
<div> <div>

View File

@ -102,7 +102,7 @@ const QueueSending = ({ newsletter }) => {
}, },
}) })
.done(() => setPaused(true)) .done(() => setPaused(true))
.fail(response => setErrors(response.errors)); .fail((response) => setErrors(response.errors));
}; };
const resumeSending = () => { const resumeSending = () => {
@ -116,7 +116,7 @@ const QueueSending = ({ newsletter }) => {
}, },
}) })
.done(() => setPaused(false)) .done(() => setPaused(false))
.fail(response => setErrors(response.errors)); .fail((response) => setErrors(response.errors));
}; };
return ( return (

View File

@ -155,7 +155,7 @@ let newsletterActions = [
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -185,7 +185,7 @@ class NewsletterListStandard extends React.Component {
'has-row-actions' 'has-row-actions'
); );
const segments = newsletter.segments.map(segment => segment.name).join(', '); const segments = newsletter.segments.map((segment) => segment.name).join(', ');
return ( return (
<div> <div>

View File

@ -57,7 +57,7 @@ export const checkCronStatus = (state) => {
const cronPingCheckNotice = ReactStringReplace( const cronPingCheckNotice = ReactStringReplace(
MailPoet.I18n.t('cronNotAccessibleNotice'), MailPoet.I18n.t('cronNotAccessibleNotice'),
/\[link\](.*?)\[\/link\]/g, /\[link\](.*?)\[\/link\]/g,
match => ( (match) => (
<a <a
href="https://kb.mailpoet.com/article/231-sending-does-not-work" href="https://kb.mailpoet.com/article/231-sending-does-not-work"
target="_blank" target="_blank"

View File

@ -132,7 +132,7 @@ let newsletterActions = [
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -246,7 +246,7 @@ class NewsletterListWelcome extends React.Component {
// get segment // get segment
segment = _.find( segment = _.find(
mailpoetSegments, mailpoetSegments,
seg => (Number(seg.id) === Number(newsletter.options.segment)) (seg) => (Number(seg.id) === Number(newsletter.options.segment))
); );
if (segment === undefined) { if (segment === undefined) {

View File

@ -37,7 +37,7 @@ const container = document.getElementById('newsletters_container');
const getAutomaticEmailsRoutes = () => { const getAutomaticEmailsRoutes = () => {
if (!window.mailpoet_automatic_emails) return null; if (!window.mailpoet_automatic_emails) return null;
return _.map(window.mailpoet_automatic_emails, automaticEmail => ({ return _.map(window.mailpoet_automatic_emails, (automaticEmail) => ({
path: `new/${automaticEmail.slug}`, path: `new/${automaticEmail.slug}`,
name: automaticEmail.slug, name: automaticEmail.slug,
component: AutomaticEmailEventsList, component: AutomaticEmailEventsList,
@ -116,7 +116,7 @@ if (container) {
<HashRouter> <HashRouter>
<Switch> <Switch>
<Route exact path="/" render={() => <Redirect to="/standard" />} /> <Route exact path="/" render={() => <Redirect to="/standard" />} />
{routes.map(route => ( {routes.map((route) => (
<Route <Route
key={route.path} key={route.path}
path={route.path} path={route.path}

View File

@ -25,7 +25,7 @@ const TIME_STEP_SECONDS = 3600;
const numberOfTimeSteps = SECONDS_IN_DAY / TIME_STEP_SECONDS; const numberOfTimeSteps = SECONDS_IN_DAY / TIME_STEP_SECONDS;
const timeOfDayValues = _.object(_.map( const timeOfDayValues = _.object(_.map(
_.times(numberOfTimeSteps, step => step * TIME_STEP_SECONDS), (seconds) => { _.times(numberOfTimeSteps, (step) => step * TIME_STEP_SECONDS), (seconds) => {
const date = new Date(null); const date = new Date(null);
date.setSeconds(seconds); date.setSeconds(seconds);
const timeLabel = MailPoet.Date.format(date, { format: timeFormat, offset: 0 }); const timeLabel = MailPoet.Date.format(date, { format: timeFormat, offset: 0 });
@ -46,7 +46,7 @@ const weekDayValues = {
const NUMBER_OF_DAYS_IN_MONTH = 28; const NUMBER_OF_DAYS_IN_MONTH = 28;
const monthDayValues = _.object( const monthDayValues = _.object(
_.map( _.map(
_.times(NUMBER_OF_DAYS_IN_MONTH, day => day), (day) => { _.times(NUMBER_OF_DAYS_IN_MONTH, (day) => day), (day) => {
const labels = { const labels = {
0: MailPoet.I18n.t('first'), 0: MailPoet.I18n.t('first'),
1: MailPoet.I18n.t('second'), 1: MailPoet.I18n.t('second'),

View File

@ -72,7 +72,7 @@ class NewsletterSend extends React.Component {
} }
}; };
getThumbnailPromise = url => ( getThumbnailPromise = (url) => (
this.state.thumbnailPromise ? this.state.thumbnailPromise : fromUrl(url) this.state.thumbnailPromise ? this.state.thumbnailPromise : fromUrl(url)
); );
@ -96,7 +96,7 @@ class NewsletterSend extends React.Component {
errorMessage = ReactStringReplace( errorMessage = ReactStringReplace(
errorMessage, errorMessage,
/\[link\](.*?)\[\/link\]/g, /\[link\](.*?)\[\/link\]/g,
match => `<a href="https://account.mailpoet.com/authorization" target="_blank" rel="noopener noreferrer">${match}</a>` (match) => `<a href="https://account.mailpoet.com/authorization" target="_blank" rel="noopener noreferrer">${match}</a>`
); );
jQuery('#field_sender_address') jQuery('#field_sender_address')
.parsley() .parsley()
@ -215,7 +215,7 @@ class NewsletterSend extends React.Component {
}); });
}; };
sendNewsletter = newsletter => MailPoet.Ajax.post( sendNewsletter = (newsletter) => MailPoet.Ajax.post(
Hooks.applyFilters( Hooks.applyFilters(
'mailpoet_newsletters_send_server_request_parameters', 'mailpoet_newsletters_send_server_request_parameters',
{ {
@ -267,7 +267,7 @@ class NewsletterSend extends React.Component {
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
}); });
activateNewsletter = newsletter => MailPoet.Ajax.post({ activateNewsletter = (newsletter) => MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'newsletters', endpoint: 'newsletters',
action: 'setStatus', action: 'setStatus',
@ -336,7 +336,7 @@ class NewsletterSend extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -408,7 +408,7 @@ class NewsletterSend extends React.Component {
showError = (response) => { showError = (response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -107,7 +107,7 @@ class Congratulate extends React.Component {
id, id,
}, },
}) })
.done(response => this.newsletterLoaded(response.data)); .done((response) => this.newsletterLoaded(response.data));
} }
newsletterLoaded(newsletter) { newsletterLoaded(newsletter) {

View File

@ -39,7 +39,7 @@ let fields = [
}, },
transformChangedValue: function transformChangedValue(segmentIds) { transformChangedValue: function transformChangedValue(segmentIds) {
const allSegments = this.getItems(); const allSegments = this.getItems();
return _.map(segmentIds, id => _.find(allSegments, segment => segment.id === id)); return _.map(segmentIds, (id) => _.find(allSegments, (segment) => segment.id === id));
}, },
validation: { validation: {
'data-parsley-required': true, 'data-parsley-required': true,

View File

@ -137,7 +137,7 @@ let fields = [
}, },
transformChangedValue: function transformChangedValue(segmentIds) { transformChangedValue: function transformChangedValue(segmentIds) {
const allSegments = this.getItems(); const allSegments = this.getItems();
return _.map(segmentIds, id => _.find(allSegments, segment => segment.id === id)); return _.map(segmentIds, (id) => _.find(allSegments, (segment) => segment.id === id));
}, },
validation: { validation: {
'data-parsley-required': true, 'data-parsley-required': true,

View File

@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
class TimeSelect extends React.Component { // eslint-disable-line react/prefer-stateless-function class TimeSelect extends React.Component { // eslint-disable-line react/prefer-stateless-function
render() { render() {
const options = Object.keys(this.props.timeOfDayItems).map( const options = Object.keys(this.props.timeOfDayItems).map(
value => ( (value) => (
<option <option
key={`option-${this.props.timeOfDayItems[value]}`} key={`option-${this.props.timeOfDayItems[value]}`}
value={value} value={value}

View File

@ -39,8 +39,8 @@ const SendingStatus = (props) => {
id: newsletterId, id: newsletterId,
}, },
}) })
.done(res => setNewsletterSubject(res.data.subject)) .done((res) => setNewsletterSubject(res.data.subject))
.fail(res => MailPoet.Notice.showApiErrorNotice(res)); .fail((res) => MailPoet.Notice.showApiErrorNotice(res));
}, [newsletterId]); }, [newsletterId]);
return ( return (
@ -77,8 +77,8 @@ const SendingStatusListing = React.memo(({ location, params }) => (
params={params} params={params}
endpoint="sending_task_subscribers" endpoint="sending_task_subscribers"
base_url="sending-status/:id" base_url="sending-status/:id"
onRenderItem={item => <div><ListingItem {...item} /></div>} onRenderItem={(item) => <div><ListingItem {...item} /></div>}
getListingItemKey={item => `${item.taskId}-${item.subscriberId}`} getListingItemKey={(item) => `${item.taskId}-${item.subscriberId}`}
columns={columns} columns={columns}
messages={messages} messages={messages}
auto_refresh auto_refresh
@ -123,7 +123,7 @@ const ListingItem = ({
data: { taskId, subscriberId }, data: { taskId, subscriberId },
}) })
.done(() => window.mailpoet_listing.forceUpdate()) .done(() => window.mailpoet_listing.forceUpdate())
.fail(res => MailPoet.Notice.showApiErrorNotice(res)); .fail((res) => MailPoet.Notice.showApiErrorNotice(res));
}; };
const rowClasses = classNames( const rowClasses = classNames(

View File

@ -9,7 +9,7 @@ import Hooks from 'wp-js-hooks';
import _ from 'underscore'; import _ from 'underscore';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
const getEditorUrl = id => `admin.php?page=mailpoet-newsletter-editor&id=${id}`; const getEditorUrl = (id) => `admin.php?page=mailpoet-newsletter-editor&id=${id}`;
const templatesCategories = [ const templatesCategories = [
{ {
@ -88,7 +88,7 @@ class NewsletterTemplates extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -98,12 +98,12 @@ class NewsletterTemplates extends React.Component {
} }
addTemplate(template) { addTemplate(template) {
const categoriesNames = templatesCategories.map(category => category.name); const categoriesNames = templatesCategories.map((category) => category.name);
let categories; let categories;
try { try {
categories = JSON.parse(template.categories) categories = JSON.parse(template.categories)
.filter(name => categoriesNames.indexOf(name) !== -1); .filter((name) => categoriesNames.indexOf(name) !== -1);
} catch (err) { } catch (err) {
categories = []; categories = [];
} }
@ -156,7 +156,7 @@ class NewsletterTemplates extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -173,7 +173,9 @@ class NewsletterTemplates extends React.Component {
afterTemplateDelete(success, id) { afterTemplateDelete(success, id) {
if (success) { if (success) {
Object.keys(this.templates).forEach((category) => { Object.keys(this.templates).forEach((category) => {
this.templates[category] = this.templates[category].filter(template => template.id !== id); this.templates[category] = this.templates[category].filter(
(template) => template.id !== id
);
}); });
} }
this.setState({ this.setState({
@ -259,7 +261,7 @@ class NewsletterTemplates extends React.Component {
<Tabs <Tabs
tabs={tabs} tabs={tabs}
selected={this.state.selectedTab} selected={this.state.selectedTab}
select={name => this.setState({ selectedTab: name })} select={(name) => this.setState({ selectedTab: name })}
/> />
{content} {content}

View File

@ -52,7 +52,7 @@ class ImportTemplate extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -36,7 +36,7 @@ class TemplateBox extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -82,7 +82,7 @@ class TemplateBox extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -74,7 +74,7 @@ class NewsletterTypes extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -175,7 +175,7 @@ class NewsletterTypes extends React.Component {
<Breadcrumb step="type" /> <Breadcrumb step="type" />
<ul className="mailpoet_boxes mailpoet_boxes_types"> <ul className="mailpoet_boxes mailpoet_boxes_types">
{types.map(type => ( {types.map((type) => (
<li key={type.slug} data-type={type.slug} className="mailpoet_newsletter_types"> <li key={type.slug} data-type={type.slug} className="mailpoet_newsletter_types">
<div className="mailpoet_thumbnail"> <div className="mailpoet_thumbnail">
{type.thumbnailImage ? <img src={type.thumbnailImage} alt="" /> : null} {type.thumbnailImage ? <img src={type.thumbnailImage} alt="" /> : null}

View File

@ -49,7 +49,7 @@ class NewsletterNotification extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -59,13 +59,13 @@ class NotificationScheduling extends React.Component {
this.handleValueChanges(changes); this.handleValueChanges(changes);
} }
handleTimeOfDayChange = event => this.handleValueChanges({ timeOfDay: event.target.value }); handleTimeOfDayChange = (event) => this.handleValueChanges({ timeOfDay: event.target.value });
handleWeekDayChange = event => this.handleValueChanges({ weekDay: event.target.value }); handleWeekDayChange = (event) => this.handleValueChanges({ weekDay: event.target.value });
handleMonthDayChange = event => this.handleValueChanges({ monthDay: event.target.value }); handleMonthDayChange = (event) => this.handleValueChanges({ monthDay: event.target.value });
handleNthWeekDayChange = event => this.handleValueChanges({ nthWeekDay: event.target.value }); handleNthWeekDayChange = (event) => this.handleValueChanges({ nthWeekDay: event.target.value });
render() { render() {
const value = this.getCurrentValue(); const value = this.getCurrentValue();

View File

@ -25,7 +25,7 @@ class NewsletterStandard extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -10,7 +10,7 @@ import { withRouter } from 'react-router-dom';
const availableRoles = window.mailpoet_roles || {}; const availableRoles = window.mailpoet_roles || {};
const availableSegments = _.filter( const availableSegments = _.filter(
window.mailpoet_segments || [], window.mailpoet_segments || [],
segment => segment.type === 'default' (segment) => segment.type === 'default'
); );
const events = { const events = {
@ -66,15 +66,15 @@ class WelcomeScheduling extends React.Component {
}); });
}; };
handleEventChange = event => this.handleValueChange('event', event.target.value); handleEventChange = (event) => this.handleValueChange('event', event.target.value);
handleSegmentChange = event => this.handleValueChange('segment', event.target.value); handleSegmentChange = (event) => this.handleValueChange('segment', event.target.value);
handleRoleChange = event => this.handleValueChange('role', event.target.value); handleRoleChange = (event) => this.handleValueChange('role', event.target.value);
handleAfterTimeNumberChange = event => this.handleValueChange('afterTimeNumber', event.target.value); handleAfterTimeNumberChange = (event) => this.handleValueChange('afterTimeNumber', event.target.value);
handleAfterTimeTypeChange = event => this.handleValueChange('afterTimeType', event.target.value); handleAfterTimeTypeChange = (event) => this.handleValueChange('afterTimeType', event.target.value);
handleNext = () => { handleNext = () => {
MailPoet.Ajax.post({ MailPoet.Ajax.post({
@ -90,7 +90,7 @@ class WelcomeScheduling extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -17,7 +17,7 @@ class NewsletterWelcome extends React.Component {
super(props); super(props);
let availableSegments = window.mailpoet_segments || []; let availableSegments = window.mailpoet_segments || [];
let defaultSegment = 1; let defaultSegment = 1;
availableSegments = availableSegments.filter(segment => segment.type === 'default'); availableSegments = availableSegments.filter((segment) => segment.type === 'default');
if (_.size(availableSegments) > 0) { if (_.size(availableSegments) > 0) {
defaultSegment = _.first(availableSegments).id; defaultSegment = _.first(availableSegments).id;
@ -57,7 +57,7 @@ class NewsletterWelcome extends React.Component {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -4,7 +4,7 @@ import Notice from 'notices/notice.jsx';
const APIErrorsNotice = ({ errors }) => { const APIErrorsNotice = ({ errors }) => {
if (errors.length < 1) return null; if (errors.length < 1) return null;
return <Notice type="error">{errors.map(err => <p key={err.message}>{err.message}</p>)}</Notice>; return <Notice type="error">{errors.map((err) => <p key={err.message}>{err.message}</p>)}</Notice>;
}; };
APIErrorsNotice.propTypes = { APIErrorsNotice.propTypes = {
errors: PropTypes.arrayOf(PropTypes.shape({ errors: PropTypes.arrayOf(PropTypes.shape({

View File

@ -65,7 +65,7 @@ const useNpsPoll = () => {
return null; return null;
}; };
const withNpsPoll = Component => (props) => { const withNpsPoll = (Component) => (props) => {
useNpsPoll(); useNpsPoll();
return <Component {...props} />; return <Component {...props} />;
}; };

View File

@ -1,6 +1,6 @@
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
const getSettingsKey = pollType => `show_poll_success_delivery_${pollType}`; const getSettingsKey = (pollType) => `show_poll_success_delivery_${pollType}`;
const initTypeformScript = () => { const initTypeformScript = () => {
if (!document.getElementById('typef_orm')) { if (!document.getElementById('typef_orm')) {

View File

@ -30,7 +30,7 @@ const messages = {
}, },
}; };
const SegmentForm = props => ( const SegmentForm = (props) => (
<div> <div>
<h1 className="title"> <h1 className="title">
{MailPoet.I18n.t('segment')} {MailPoet.I18n.t('segment')}

View File

@ -6,9 +6,9 @@ import PropTypes from 'prop-types';
import Listing from 'listing/listing.jsx'; import Listing from 'listing/listing.jsx';
const isWPUsersSegment = segment => segment.type === 'wp_users'; const isWPUsersSegment = (segment) => segment.type === 'wp_users';
const isWooCommerceCustomersSegment = segment => segment.type === 'woocommerce_users'; const isWooCommerceCustomersSegment = (segment) => segment.type === 'woocommerce_users';
const isSpecialSegment = segmt => isWPUsersSegment(segmt) || isWooCommerceCustomersSegment(segmt); const isSpecialSegment = (segmt) => isWPUsersSegment(segmt) || isWooCommerceCustomersSegment(segmt);
const columns = [ const columns = [
{ {
@ -132,7 +132,7 @@ const itemActions = [
refresh(); refresh();
}).fail((response) => { }).fail((response) => {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
}), }),
@ -179,7 +179,7 @@ const itemActions = [
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }

View File

@ -58,8 +58,8 @@ const fields = [
} }
return subscriber.subscriptions return subscriber.subscriptions
.filter(subscription => subscription.status === 'subscribed') .filter((subscription) => subscription.status === 'subscribed')
.map(subscription => subscription.segment_id); .map((subscription) => subscription.segment_id);
}, },
filter: function filter(segment) { filter: function filter(segment) {
return (!segment.deleted_at && segment.type === 'default'); return (!segment.deleted_at && segment.type === 'default');

View File

@ -23,7 +23,7 @@ const ImportSubscribers = () => {
<Switch> <Switch>
<Route <Route
path="/step_method_selection" path="/step_method_selection"
render={props => ( render={(props) => (
<StepMethodSelection <StepMethodSelection
{...props} {...props}
setStepMethodSelectionData={setStepMethodSelectionData} setStepMethodSelectionData={setStepMethodSelectionData}
@ -33,7 +33,7 @@ const ImportSubscribers = () => {
/> />
<Route <Route
path="/step_input_validation" path="/step_input_validation"
render={props => ( render={(props) => (
<StepInputValidation <StepInputValidation
{...props} {...props}
stepMethodSelectionData={stepMethodSelectionData} stepMethodSelectionData={stepMethodSelectionData}
@ -42,7 +42,7 @@ const ImportSubscribers = () => {
/> />
<Route <Route
path="/step_data_manipulation" path="/step_data_manipulation"
render={props => ( render={(props) => (
<StepDataManipulation <StepDataManipulation
{...props} {...props}
stepMethodSelectionData={stepMethodSelectionData} stepMethodSelectionData={stepMethodSelectionData}
@ -53,7 +53,7 @@ const ImportSubscribers = () => {
/> />
<Route <Route
path="/step_results" path="/step_results"
render={props => ( render={(props) => (
<StepResults <StepResults
{...props} {...props}
errors={stepDataManipulationData.errors} errors={stepDataManipulationData.errors}

View File

@ -3,7 +3,7 @@
import jQuery from 'jquery'; import jQuery from 'jquery';
import _ from 'underscore'; import _ from 'underscore';
const isRoleEmail = email => window.roleBasedEmails.findIndex(element => email.startsWith(`${element}@`)) >= 0; const isRoleEmail = (email) => window.roleBasedEmails.findIndex((element) => email.startsWith(`${element}@`)) >= 0;
const detectAndCleanupEmail = (emailString) => { const detectAndCleanupEmail = (emailString) => {
let test; let test;
@ -53,7 +53,7 @@ function sanitizeCSVData(csvData) {
let rowData; let rowData;
let rowColumnCount; let rowColumnCount;
Object.keys(csvData).forEach((rowCount) => { Object.keys(csvData).forEach((rowCount) => {
rowData = csvData[rowCount].map(el => el.trim()); rowData = csvData[rowCount].map((el) => el.trim());
rowColumnCount = rowData.length; rowColumnCount = rowData.length;
// set the number of row elements based on the first non-empty row // set the number of row elements based on the first non-empty row
if (columnCount === null) { if (columnCount === null) {

View File

@ -36,7 +36,7 @@ export default (onCreateSegment) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.hide(); MailPoet.Notice.hide();
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ positionAfter: '#new_segment_name' } { positionAfter: '#new_segment_name' }
); );
} }

View File

@ -66,7 +66,7 @@ export default (subscribersToImport, segments, updateExistingSubscribers, onImpo
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -89,9 +89,9 @@ export default (subscribersToImport, segments, updateExistingSubscribers, onImpo
importResult.segments = _.map( importResult.segments = _.map(
_.filter( _.filter(
importResult.segments, importResult.segments,
segment => segments.includes(segment.id) (segment) => segments.includes(segment.id)
), ),
data => data.name (data) => data.name
); );
onImportComplete(importResult); onImportComplete(importResult);
} }

View File

@ -74,7 +74,7 @@ export default () => {
}).fail((response) => { }).fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ positionAfter: '#field_name' } { positionAfter: '#field_name' }
); );
} }

View File

@ -17,7 +17,7 @@ export default (subscribers, header) => {
columnId = 'email'; columnId = 'email';
} else if (header) { } else if (header) {
headerName = header[i]; headerName = header[i];
headerNameMatch = window.mailpoetColumns.map(el => el.name).indexOf(headerName); headerNameMatch = window.mailpoetColumns.map((el) => el.name).indexOf(headerName);
// set column type using header // set column type using header
if (headerNameMatch !== -1) { if (headerNameMatch !== -1) {
columnId = window.mailpoetColumns[headerNameMatch].id; columnId = window.mailpoetColumns[headerNameMatch].id;

View File

@ -48,7 +48,7 @@ function Header({ header }) {
return ( return (
<tr className="mailpoet_header"> <tr className="mailpoet_header">
<td /> <td />
{header.map(headerName => <td key={headerName}>{headerName}</td>)} {header.map((headerName) => <td key={headerName}>{headerName}</td>)}
</tr> </tr>
); );
} }

View File

@ -30,11 +30,11 @@ const MethodMailChimp = ({ onFinish }) => {
.always(() => { .always(() => {
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
}) })
.done(response => setMailChimpLoadedLists(response.data)) .done((response) => setMailChimpLoadedLists(response.data))
.fail((response) => { .fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -55,11 +55,11 @@ const MethodMailChimp = ({ onFinish }) => {
.always(() => { .always(() => {
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
}) })
.done(response => onFinish(response.data)) .done((response) => onFinish(response.data))
.fail((response) => { .fail((response) => {
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }
@ -80,7 +80,7 @@ const MethodMailChimp = ({ onFinish }) => {
forceSelect2: true, forceSelect2: true,
values: mailChimpLoadedLists, values: mailChimpLoadedLists,
}} }}
onValueChange={e => setSelectedLists(e.target.value)} onValueChange={(e) => setSelectedLists(e.target.value)}
/> />
</div> </div>
); );

View File

@ -27,7 +27,7 @@ const MethodPaste = ({
{ReactStringReplace( {ReactStringReplace(
MailPoet.I18n.t('pasteDescription'), MailPoet.I18n.t('pasteDescription'),
/\[link\](.*?)\[\/link\]/, /\[link\](.*?)\[\/link\]/,
match => ( (match) => (
<a <a
href={`${kbLink}`} href={`${kbLink}`}
key="kb-link" key="kb-link"

View File

@ -28,7 +28,7 @@ const MethodUpload = ({ onValueChange, canFinish, onFinish }) => {
{ReactStringReplace( {ReactStringReplace(
MailPoet.I18n.t('pasteDescription'), MailPoet.I18n.t('pasteDescription'),
/\[link\](.*?)\[\/link\]/, /\[link\](.*?)\[\/link\]/,
match => ( (match) => (
<a <a
href={`${kbLink}`} href={`${kbLink}`}
key="kb-link" key="kb-link"

View File

@ -10,7 +10,7 @@ function RevenueTrackingPermission() {
MailPoet.Notice.showApiErrorNotice(response, { scroll: true }); MailPoet.Notice.showApiErrorNotice(response, { scroll: true });
}; };
const updateSettings = data => MailPoet.Ajax.post({ const updateSettings = (data) => MailPoet.Ajax.post({
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'settings', endpoint: 'settings',
action: 'set', action: 'set',

View File

@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
const WelcomeWizardEmailCourseStep = props => ( const WelcomeWizardEmailCourseStep = (props) => (
<div className="mailpoet_welcome_wizard_step_content"> <div className="mailpoet_welcome_wizard_step_content">
<h1>{MailPoet.I18n.t('welcomeWizardEmailCourseTitle')}</h1> <h1>{MailPoet.I18n.t('welcomeWizardEmailCourseTitle')}</h1>
<p>{MailPoet.I18n.t('welcomeWizardEmailCourseText')}</p> <p>{MailPoet.I18n.t('welcomeWizardEmailCourseText')}</p>

View File

@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
const WelcomeWizardMigratedUserStep = props => ( const WelcomeWizardMigratedUserStep = (props) => (
<div className="mailpoet_welcome_wizard_step_content"> <div className="mailpoet_welcome_wizard_step_content">
<h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1> <h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1>
<p>{MailPoet.I18n.t('welcomeWizardSenderMigratedUserText')}</p> <p>{MailPoet.I18n.t('welcomeWizardSenderMigratedUserText')}</p>

View File

@ -29,7 +29,7 @@ function RevenueTrackingPermissionStep({ submitForm, loading }) {
type="radio" type="radio"
name="import_type" name="import_type"
checked={allowed === 'true'} checked={allowed === 'true'}
onChange={e => setAllowed(e.target.value)} onChange={(e) => setAllowed(e.target.value)}
value="true" value="true"
/> />
{MailPoet.I18n.t('revenueTrackingAllow')} {MailPoet.I18n.t('revenueTrackingAllow')}
@ -40,7 +40,7 @@ function RevenueTrackingPermissionStep({ submitForm, loading }) {
type="radio" type="radio"
name="import_type" name="import_type"
checked={allowed === 'false'} checked={allowed === 'false'}
onChange={e => setAllowed(e.target.value)} onChange={(e) => setAllowed(e.target.value)}
value="false" value="false"
/> />
{MailPoet.I18n.t('revenueTrackingDontAllow')} {MailPoet.I18n.t('revenueTrackingDontAllow')}

View File

@ -3,7 +3,7 @@ import React from 'react';
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
import jQuery from 'jquery'; import jQuery from 'jquery';
const WelcomeWizardSenderStep = props => ( const WelcomeWizardSenderStep = (props) => (
<div className="mailpoet_welcome_wizard_step_content"> <div className="mailpoet_welcome_wizard_step_content">
<h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1> <h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1>
<p>{MailPoet.I18n.t('welcomeWizardSenderText')}</p> <p>{MailPoet.I18n.t('welcomeWizardSenderText')}</p>
@ -25,7 +25,7 @@ const WelcomeWizardSenderStep = props => (
placeholder="John Doe" placeholder="John Doe"
value={props.sender ? props.sender.name : ''} value={props.sender ? props.sender.name : ''}
data-parsley-required data-parsley-required
onChange={e => props.update_sender({ name: e.target.value })} onChange={(e) => props.update_sender({ name: e.target.value })}
/> />
</label> </label>
<label htmlFor="senderAddress"> <label htmlFor="senderAddress">
@ -38,7 +38,7 @@ const WelcomeWizardSenderStep = props => (
value={props.sender ? props.sender.address : ''} value={props.sender ? props.sender.address : ''}
data-parsley-required data-parsley-required
data-parsley-type="email" data-parsley-type="email"
onChange={e => props.update_sender({ address: e.target.value })} onChange={(e) => props.update_sender({ address: e.target.value })}
/> />
</label> </label>
<div className="mailpoet_welcome_wizard_step_controls"> <div className="mailpoet_welcome_wizard_step_controls">

View File

@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import SteppedProgressBar from '../../common/stepped_progess_bar.jsx'; import SteppedProgressBar from '../../common/stepped_progess_bar.jsx';
const WelcomeWizardStepLayout = props => ( const WelcomeWizardStepLayout = (props) => (
<> <>
<div className="mailpoet_welcome_wizard_header"> <div className="mailpoet_welcome_wizard_header">
<img src={window.mailpoet_logo_url} width="200" height="87" alt="MailPoet logo" /> <img src={window.mailpoet_logo_url} width="200" height="87" alt="MailPoet logo" />

View File

@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
const WelcomeWizardUsageTrackingStep = props => ( const WelcomeWizardUsageTrackingStep = (props) => (
<div className="mailpoet_welcome_wizard_step_content"> <div className="mailpoet_welcome_wizard_step_content">
<h1>{MailPoet.I18n.t('welcomeWizardUsageTrackingStepTitle')}</h1> <h1>{MailPoet.I18n.t('welcomeWizardUsageTrackingStepTitle')}</h1>
<p>{MailPoet.I18n.t('welcomeWizardTrackingText')}</p> <p>{MailPoet.I18n.t('welcomeWizardTrackingText')}</p>

View File

@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import MailPoet from 'mailpoet'; import MailPoet from 'mailpoet';
const WelcomeWizardWooCommerceStep = props => ( const WelcomeWizardWooCommerceStep = (props) => (
<div className="mailpoet_welcome_wizard_step_content"> <div className="mailpoet_welcome_wizard_step_content">
<h1>{MailPoet.I18n.t('welcomeWizardWooCommerceStepTitle')}</h1> <h1>{MailPoet.I18n.t('welcomeWizardWooCommerceStepTitle')}</h1>
<p> <p>

View File

@ -48,7 +48,7 @@ const WelcomeWizardStepsController = (props) => {
setLoading(false); setLoading(false);
if (response.errors.length > 0) { if (response.errors.length > 0) {
MailPoet.Notice.error( MailPoet.Notice.error(
response.errors.map(error => error.message), response.errors.map((error) => error.message),
{ scroll: true } { scroll: true }
); );
} }