Add eslint rule to require parentheses in arrow functions
[MAILPOET-2162]
This commit is contained in:
committed by
Jack Kitterhing
parent
a1bf7ec23f
commit
a78562c774
@ -22,6 +22,7 @@
|
||||
"react-hooks/rules-of-hooks": "error",
|
||||
"react-hooks/exhaustive-deps": "warn",
|
||||
// Exceptions
|
||||
"arrow-parens": ["error", "always"],
|
||||
"comma-dangle": ["error", "always-multiline"],
|
||||
"no-script-url": 0,
|
||||
"import/extensions": 0, // we wouldn't be able to import jQuery without this line
|
||||
|
@ -23,7 +23,7 @@ class FeatureAnnouncement extends React.Component {
|
||||
const updateMailPoetNotice = ReactStringReplace(
|
||||
MailPoet.I18n.t('updateMailPoetNotice'),
|
||||
/\[link\](.*?)\[\/link\]/,
|
||||
match => `<a href="update-core.php">${match}</a>`
|
||||
(match) => `<a href="update-core.php">${match}</a>`
|
||||
).join('');
|
||||
jQuery('#beamerOverlay').append(
|
||||
`<p id="mailpoet_update_notice" class="mailpoet_in_beamer_update_notice">${updateMailPoetNotice}</p>`
|
||||
|
@ -1,10 +1,10 @@
|
||||
import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
|
||||
const KeyValueTable = props => (
|
||||
const KeyValueTable = (props) => (
|
||||
<table className="widefat fixed" style={{ maxWidth: props.max_width }}>
|
||||
<tbody>
|
||||
{props.rows.map(row => (
|
||||
{props.rows.map((row) => (
|
||||
<tr key={`row_${row.key}`}>
|
||||
<td className="row-title">{ row.key }</td>
|
||||
<td>{ row.value }</td>
|
||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import MailPoet from 'mailpoet';
|
||||
|
||||
const PrintBoolean = props => (
|
||||
const PrintBoolean = (props) => (
|
||||
<span>
|
||||
{(props.children === true && props.truthy)
|
||||
|| (props.children === false && props.falsy)
|
||||
|
@ -8,7 +8,7 @@ const SteppedProgressBar = (props) => {
|
||||
return (
|
||||
<div className="mailpoet_stepped_progress_bar">
|
||||
{
|
||||
[...Array(props.steps_count).keys()].map(step => (
|
||||
[...Array(props.steps_count).keys()].map((step) => (
|
||||
<div
|
||||
className={`
|
||||
mailpoet_stepped_progress_bar_step ${(step < props.step ? 'active' : '')} ${(step === (props.step - 1) ? 'current' : '')}
|
||||
|
@ -21,7 +21,7 @@ export const fromDom = async (element) => {
|
||||
* @param {String} url
|
||||
* @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 protocol = document.location.href.startsWith('https://') ? 'https:' : 'http:';
|
||||
iframe.src = protocol + url.replace(/^https?:/, '');
|
||||
@ -59,7 +59,7 @@ export const fromUrl = url => new Promise((resolve, reject) => {
|
||||
* @param {Object} data
|
||||
* @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;
|
||||
if (!_.isUndefined(json.body)) {
|
||||
json.body = JSON.stringify(json.body);
|
||||
@ -69,7 +69,7 @@ export const fromNewsletter = data => new Promise((resolve, reject) => {
|
||||
endpoint: 'newsletters',
|
||||
action: 'showPreview',
|
||||
data: json,
|
||||
}).done(response => fromUrl(response.meta.preview_url)
|
||||
}).done((response) => fromUrl(response.meta.preview_url)
|
||||
.then(resolve)
|
||||
.catch(reject)).fail(response => reject(response.errors));
|
||||
.catch(reject)).fail((response) => reject(response.errors));
|
||||
});
|
||||
|
@ -16,7 +16,7 @@ const ExperimentalFeatures = () => {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -42,7 +42,7 @@ const ExperimentalFeatures = () => {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ class FormFieldCheckbox extends React.Component {
|
||||
// it will be false in case value is "0" or empty
|
||||
const isChecked = !!(Number(this.props.item[this.props.field.name]));
|
||||
const options = Object.keys(this.props.field.values).map(
|
||||
value => (
|
||||
(value) => (
|
||||
<p key={`checkbox-${value}`}>
|
||||
<label htmlFor={this.props.field.name}>
|
||||
<input
|
||||
|
@ -9,7 +9,7 @@ class FormFieldRadio extends React.Component { // eslint-disable-line react/pref
|
||||
|
||||
const selectedValue = this.props.item[this.props.field.name];
|
||||
const options = Object.keys(this.props.field.values).map(
|
||||
value => (
|
||||
(value) => (
|
||||
<p key={`radio-${value}`}>
|
||||
<label htmlFor={this.props.field.name}>
|
||||
<input
|
||||
|
@ -33,9 +33,9 @@ class FormFieldSelect extends React.Component {
|
||||
keys = _.map(
|
||||
_.sortBy(
|
||||
_.pairs(this.props.field.values),
|
||||
item => sortBy(item[0], item[1])
|
||||
(item) => sortBy(item[0], item[1])
|
||||
),
|
||||
item => item[0]
|
||||
(item) => item[0]
|
||||
);
|
||||
} else {
|
||||
keys = Object.keys(this.props.field.values);
|
||||
@ -47,7 +47,7 @@ class FormFieldSelect extends React.Component {
|
||||
return filter(this.props.item, value);
|
||||
})
|
||||
.map(
|
||||
value => (
|
||||
(value) => (
|
||||
<option
|
||||
key={`option-${value}`}
|
||||
value={value}
|
||||
|
@ -52,7 +52,7 @@ class Selection extends React.Component {
|
||||
if (this.props.item !== undefined && this.props.field.name !== undefined) {
|
||||
if (this.allowMultipleValues()) {
|
||||
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 {
|
||||
return this.props.item[this.props.field.name];
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
const FormFieldTextarea = props => (
|
||||
const FormFieldTextarea = (props) => (
|
||||
<textarea
|
||||
type="text"
|
||||
className="regular-text"
|
||||
|
@ -175,7 +175,7 @@ class Form extends React.Component {
|
||||
render() {
|
||||
let errors;
|
||||
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}`}>
|
||||
<p>{ error.message }</p>
|
||||
</div>
|
||||
|
@ -111,7 +111,7 @@ const itemActions = [
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -134,7 +134,7 @@ class FormList extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -149,8 +149,8 @@ class FormList extends React.Component {
|
||||
);
|
||||
|
||||
let segments = window.mailpoet_segments
|
||||
.filter(segment => (jQuery.inArray(segment.id, form.segments) !== -1))
|
||||
.map(segment => segment.name)
|
||||
.filter((segment) => (jQuery.inArray(segment.id, form.segments) !== -1))
|
||||
.map((segment) => segment.name)
|
||||
.join(', ');
|
||||
|
||||
if (form.settings.segments_selected_by === 'user') {
|
||||
|
@ -14,7 +14,7 @@ const CronStatus = (props) => {
|
||||
? (
|
||||
<>
|
||||
{
|
||||
status.last_error.map(error => (
|
||||
status.last_error.map((error) => (
|
||||
<div key={error.worker}>
|
||||
{error.worker}
|
||||
:
|
||||
|
@ -47,13 +47,13 @@ const QueueStatus = (props) => {
|
||||
]}
|
||||
/>
|
||||
<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>
|
||||
<TasksList tasks={status.latestTasks.filter(task => (task.status === null))} />
|
||||
<TasksList tasks={status.latestTasks.filter((task) => (task.status === null))} />
|
||||
|
||||
<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>
|
||||
);
|
||||
};
|
||||
|
@ -9,7 +9,7 @@ function handleFocus(event) {
|
||||
|
||||
function printData(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 (
|
||||
<textarea
|
||||
|
@ -15,7 +15,7 @@ function renderStatusMessage(status, error, link) {
|
||||
noticeMessage = ReactStringReplace(
|
||||
noticeMessage,
|
||||
/\[link\](.*?)\[\/link\]/g,
|
||||
match => (
|
||||
(match) => (
|
||||
<a href={`${link}`} key="kb-link">{ match }</a>
|
||||
)
|
||||
);
|
||||
|
@ -12,7 +12,7 @@ const TasksList = (props) => {
|
||||
<thead><TaskListLabelsRow show_scheduled_at={props.show_scheduled_at} /></thead>
|
||||
<tbody>
|
||||
{
|
||||
props.tasks.length ? props.tasks.map(task => (
|
||||
props.tasks.length ? props.tasks.map((task) => (
|
||||
<TaskListDataRow
|
||||
key={task.id}
|
||||
task={task}
|
||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import MailPoet from 'mailpoet';
|
||||
|
||||
const TasksListDataRow = props => (
|
||||
const TasksListDataRow = (props) => (
|
||||
<tr>
|
||||
<td className="column column-primary">
|
||||
{ props.task.id }
|
||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import MailPoet from 'mailpoet';
|
||||
|
||||
const TasksListLabelsRow = props => (
|
||||
const TasksListLabelsRow = (props) => (
|
||||
<tr>
|
||||
<th className="row-title">Id</th>
|
||||
<th className="row-title">{MailPoet.I18n.t('type')}</th>
|
||||
|
@ -17,7 +17,7 @@ class ListingBulkActions extends React.Component {
|
||||
getSelectedAction() {
|
||||
const selectedAction = this.myRef.current.value;
|
||||
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) {
|
||||
return action[0];
|
||||
@ -100,7 +100,7 @@ class ListingBulkActions extends React.Component {
|
||||
onChange={this.handleChangeAction}
|
||||
>
|
||||
<option value="">{MailPoet.I18n.t('bulkActions')}</option>
|
||||
{ this.props.bulk_actions.map(action => (
|
||||
{ this.props.bulk_actions.map((action) => (
|
||||
<option
|
||||
value={action.name}
|
||||
key={`action-${action.name}`}
|
||||
|
@ -19,7 +19,7 @@ class ListingFilters extends React.Component {
|
||||
|
||||
getAvailableFilters = () => {
|
||||
const filters = this.props.filters;
|
||||
return Object.keys(filters).filter(filter => !(
|
||||
return Object.keys(filters).filter((filter) => !(
|
||||
filters[filter].length === 0
|
||||
|| (
|
||||
filters[filter].length === 1
|
||||
@ -50,7 +50,7 @@ class ListingFilters extends React.Component {
|
||||
key={`filter-${filter}`}
|
||||
name={filter}
|
||||
>
|
||||
{ filters[filter].map(option => (
|
||||
{ filters[filter].map((option) => (
|
||||
<option
|
||||
value={option.value}
|
||||
key={`filter-option-${option.value}`}
|
||||
|
@ -123,7 +123,7 @@ class Listing extends React.Component {
|
||||
setParams = () => {
|
||||
if (this.props.location) {
|
||||
const params = Object.keys(this.state)
|
||||
.filter(key => (
|
||||
.filter((key) => (
|
||||
[
|
||||
'group',
|
||||
'filter',
|
||||
@ -248,7 +248,7 @@ class Listing extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -324,7 +324,7 @@ class Listing extends React.Component {
|
||||
this.getItems();
|
||||
}).fail((response) => {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
});
|
||||
@ -353,7 +353,7 @@ class Listing extends React.Component {
|
||||
this.getItems();
|
||||
}).fail((response) => {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
});
|
||||
@ -382,7 +382,7 @@ class Listing extends React.Component {
|
||||
this.getItems();
|
||||
}).fail((response) => {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
});
|
||||
@ -402,7 +402,7 @@ class Listing extends React.Component {
|
||||
this.handleGroup('all');
|
||||
}).fail((response) => {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
});
|
||||
@ -441,7 +441,7 @@ class Listing extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -497,7 +497,7 @@ class Listing extends React.Component {
|
||||
this.clearSelection();
|
||||
} else {
|
||||
this.setState((prevState) => {
|
||||
const selectedIds = prevState.items.map(item => Number(item.id));
|
||||
const selectedIds = prevState.items.map((item) => Number(item.id));
|
||||
|
||||
return {
|
||||
selected_ids: selectedIds,
|
||||
@ -575,7 +575,7 @@ class Listing extends React.Component {
|
||||
// columns
|
||||
let columns = this.props.columns || [];
|
||||
columns = columns.filter(
|
||||
column => (column.display === undefined || !!(column.display) === true)
|
||||
(column) => (column.display === undefined || !!(column.display) === true)
|
||||
);
|
||||
|
||||
// bulk actions
|
||||
|
@ -31,7 +31,7 @@ class ListingItem extends React.Component {
|
||||
};
|
||||
|
||||
handleToggleItem = () => {
|
||||
this.setState(prevState => ({
|
||||
this.setState((prevState) => ({
|
||||
expanded: !prevState.expanded,
|
||||
}));
|
||||
};
|
||||
@ -67,7 +67,7 @@ class ListingItem extends React.Component {
|
||||
if (customActions.length > 0) {
|
||||
let isFirst = true;
|
||||
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) => {
|
||||
let customAction = null;
|
||||
|
||||
|
@ -14,7 +14,7 @@ const resumeMailerSending = () => {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -132,7 +132,7 @@ const MailerCheckSettingsNotice = () => (
|
||||
ReactStringReplace(
|
||||
MailPoet.I18n.t('mailerCheckSettingsNotice'),
|
||||
/\[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>
|
||||
|
@ -54,7 +54,7 @@ class ListingPages extends React.Component {
|
||||
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() {
|
||||
if (this.props.count === 0) {
|
||||
|
@ -19,7 +19,7 @@ const renderBreadcrumb = (newsletterType) => {
|
||||
|
||||
const initializeEditor = (config) => {
|
||||
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;
|
||||
|
||||
@ -65,7 +65,7 @@ const initializeEditor = (config) => {
|
||||
.fail((pauseFailResponse) => {
|
||||
if (pauseFailResponse.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
pauseFailResponse.errors.map(error => error.message),
|
||||
pauseFailResponse.errors.map((error) => error.message),
|
||||
{ scroll: true, static: true }
|
||||
);
|
||||
}
|
||||
@ -75,7 +75,7 @@ const initializeEditor = (config) => {
|
||||
.fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true, static: true }
|
||||
);
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ function NewsletterStatsInfo(props) {
|
||||
newsletter.reply_to_name || ''
|
||||
);
|
||||
|
||||
const segments = (newsletter.segments || []).map(segment => segment.name).join(', ');
|
||||
const segments = (newsletter.segments || []).map((segment) => segment.name).join(', ');
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
@ -51,7 +51,7 @@ class CampaignStatsPage extends React.Component {
|
||||
});
|
||||
}).fail((response) => {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
this.setState({
|
||||
|
@ -147,7 +147,7 @@ const newsletterActions = [
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -196,7 +196,7 @@ class NewsletterListNotification extends React.Component {
|
||||
});
|
||||
};
|
||||
|
||||
renderStatus = newsletter => (
|
||||
renderStatus = (newsletter) => (
|
||||
<select
|
||||
data-id={newsletter.id}
|
||||
defaultValue={newsletter.status}
|
||||
@ -211,7 +211,7 @@ class NewsletterListNotification extends React.Component {
|
||||
let sendingFrequency;
|
||||
|
||||
// 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(
|
||||
'%$1s', segments.join(', ')
|
||||
);
|
||||
|
@ -74,7 +74,7 @@ class NewsletterListNotificationHistory extends React.Component {
|
||||
'has-row-actions'
|
||||
);
|
||||
|
||||
const segments = newsletter.segments.map(segment => segment.name).join(', ');
|
||||
const segments = newsletter.segments.map((segment) => segment.name).join(', ');
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
@ -102,7 +102,7 @@ const QueueSending = ({ newsletter }) => {
|
||||
},
|
||||
})
|
||||
.done(() => setPaused(true))
|
||||
.fail(response => setErrors(response.errors));
|
||||
.fail((response) => setErrors(response.errors));
|
||||
};
|
||||
|
||||
const resumeSending = () => {
|
||||
@ -116,7 +116,7 @@ const QueueSending = ({ newsletter }) => {
|
||||
},
|
||||
})
|
||||
.done(() => setPaused(false))
|
||||
.fail(response => setErrors(response.errors));
|
||||
.fail((response) => setErrors(response.errors));
|
||||
};
|
||||
|
||||
return (
|
||||
|
@ -155,7 +155,7 @@ let newsletterActions = [
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -185,7 +185,7 @@ class NewsletterListStandard extends React.Component {
|
||||
'has-row-actions'
|
||||
);
|
||||
|
||||
const segments = newsletter.segments.map(segment => segment.name).join(', ');
|
||||
const segments = newsletter.segments.map((segment) => segment.name).join(', ');
|
||||
|
||||
return (
|
||||
<div>
|
||||
|
@ -57,7 +57,7 @@ export const checkCronStatus = (state) => {
|
||||
const cronPingCheckNotice = ReactStringReplace(
|
||||
MailPoet.I18n.t('cronNotAccessibleNotice'),
|
||||
/\[link\](.*?)\[\/link\]/g,
|
||||
match => (
|
||||
(match) => (
|
||||
<a
|
||||
href="https://kb.mailpoet.com/article/231-sending-does-not-work"
|
||||
target="_blank"
|
||||
|
@ -132,7 +132,7 @@ let newsletterActions = [
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -246,7 +246,7 @@ class NewsletterListWelcome extends React.Component {
|
||||
// get segment
|
||||
segment = _.find(
|
||||
mailpoetSegments,
|
||||
seg => (Number(seg.id) === Number(newsletter.options.segment))
|
||||
(seg) => (Number(seg.id) === Number(newsletter.options.segment))
|
||||
);
|
||||
|
||||
if (segment === undefined) {
|
||||
|
@ -37,7 +37,7 @@ const container = document.getElementById('newsletters_container');
|
||||
const getAutomaticEmailsRoutes = () => {
|
||||
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}`,
|
||||
name: automaticEmail.slug,
|
||||
component: AutomaticEmailEventsList,
|
||||
@ -116,7 +116,7 @@ if (container) {
|
||||
<HashRouter>
|
||||
<Switch>
|
||||
<Route exact path="/" render={() => <Redirect to="/standard" />} />
|
||||
{routes.map(route => (
|
||||
{routes.map((route) => (
|
||||
<Route
|
||||
key={route.path}
|
||||
path={route.path}
|
||||
|
@ -25,7 +25,7 @@ const TIME_STEP_SECONDS = 3600;
|
||||
const numberOfTimeSteps = SECONDS_IN_DAY / TIME_STEP_SECONDS;
|
||||
|
||||
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);
|
||||
date.setSeconds(seconds);
|
||||
const timeLabel = MailPoet.Date.format(date, { format: timeFormat, offset: 0 });
|
||||
@ -46,7 +46,7 @@ const weekDayValues = {
|
||||
const NUMBER_OF_DAYS_IN_MONTH = 28;
|
||||
const monthDayValues = _.object(
|
||||
_.map(
|
||||
_.times(NUMBER_OF_DAYS_IN_MONTH, day => day), (day) => {
|
||||
_.times(NUMBER_OF_DAYS_IN_MONTH, (day) => day), (day) => {
|
||||
const labels = {
|
||||
0: MailPoet.I18n.t('first'),
|
||||
1: MailPoet.I18n.t('second'),
|
||||
|
@ -72,7 +72,7 @@ class NewsletterSend extends React.Component {
|
||||
}
|
||||
};
|
||||
|
||||
getThumbnailPromise = url => (
|
||||
getThumbnailPromise = (url) => (
|
||||
this.state.thumbnailPromise ? this.state.thumbnailPromise : fromUrl(url)
|
||||
);
|
||||
|
||||
@ -96,7 +96,7 @@ class NewsletterSend extends React.Component {
|
||||
errorMessage = ReactStringReplace(
|
||||
errorMessage,
|
||||
/\[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')
|
||||
.parsley()
|
||||
@ -215,7 +215,7 @@ class NewsletterSend extends React.Component {
|
||||
});
|
||||
};
|
||||
|
||||
sendNewsletter = newsletter => MailPoet.Ajax.post(
|
||||
sendNewsletter = (newsletter) => MailPoet.Ajax.post(
|
||||
Hooks.applyFilters(
|
||||
'mailpoet_newsletters_send_server_request_parameters',
|
||||
{
|
||||
@ -267,7 +267,7 @@ class NewsletterSend extends React.Component {
|
||||
MailPoet.Modal.loading(false);
|
||||
});
|
||||
|
||||
activateNewsletter = newsletter => MailPoet.Ajax.post({
|
||||
activateNewsletter = (newsletter) => MailPoet.Ajax.post({
|
||||
api_version: window.mailpoet_api_version,
|
||||
endpoint: 'newsletters',
|
||||
action: 'setStatus',
|
||||
@ -336,7 +336,7 @@ class NewsletterSend extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -408,7 +408,7 @@ class NewsletterSend extends React.Component {
|
||||
showError = (response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ class Congratulate extends React.Component {
|
||||
id,
|
||||
},
|
||||
})
|
||||
.done(response => this.newsletterLoaded(response.data));
|
||||
.done((response) => this.newsletterLoaded(response.data));
|
||||
}
|
||||
|
||||
newsletterLoaded(newsletter) {
|
||||
|
@ -39,7 +39,7 @@ let fields = [
|
||||
},
|
||||
transformChangedValue: function transformChangedValue(segmentIds) {
|
||||
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: {
|
||||
'data-parsley-required': true,
|
||||
|
@ -137,7 +137,7 @@ let fields = [
|
||||
},
|
||||
transformChangedValue: function transformChangedValue(segmentIds) {
|
||||
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: {
|
||||
'data-parsley-required': true,
|
||||
|
@ -4,7 +4,7 @@ import PropTypes from 'prop-types';
|
||||
class TimeSelect extends React.Component { // eslint-disable-line react/prefer-stateless-function
|
||||
render() {
|
||||
const options = Object.keys(this.props.timeOfDayItems).map(
|
||||
value => (
|
||||
(value) => (
|
||||
<option
|
||||
key={`option-${this.props.timeOfDayItems[value]}`}
|
||||
value={value}
|
||||
|
@ -39,8 +39,8 @@ const SendingStatus = (props) => {
|
||||
id: newsletterId,
|
||||
},
|
||||
})
|
||||
.done(res => setNewsletterSubject(res.data.subject))
|
||||
.fail(res => MailPoet.Notice.showApiErrorNotice(res));
|
||||
.done((res) => setNewsletterSubject(res.data.subject))
|
||||
.fail((res) => MailPoet.Notice.showApiErrorNotice(res));
|
||||
}, [newsletterId]);
|
||||
|
||||
return (
|
||||
@ -77,8 +77,8 @@ const SendingStatusListing = React.memo(({ location, params }) => (
|
||||
params={params}
|
||||
endpoint="sending_task_subscribers"
|
||||
base_url="sending-status/:id"
|
||||
onRenderItem={item => <div><ListingItem {...item} /></div>}
|
||||
getListingItemKey={item => `${item.taskId}-${item.subscriberId}`}
|
||||
onRenderItem={(item) => <div><ListingItem {...item} /></div>}
|
||||
getListingItemKey={(item) => `${item.taskId}-${item.subscriberId}`}
|
||||
columns={columns}
|
||||
messages={messages}
|
||||
auto_refresh
|
||||
@ -123,7 +123,7 @@ const ListingItem = ({
|
||||
data: { taskId, subscriberId },
|
||||
})
|
||||
.done(() => window.mailpoet_listing.forceUpdate())
|
||||
.fail(res => MailPoet.Notice.showApiErrorNotice(res));
|
||||
.fail((res) => MailPoet.Notice.showApiErrorNotice(res));
|
||||
};
|
||||
|
||||
const rowClasses = classNames(
|
||||
|
@ -9,7 +9,7 @@ import Hooks from 'wp-js-hooks';
|
||||
import _ from 'underscore';
|
||||
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 = [
|
||||
{
|
||||
@ -88,7 +88,7 @@ class NewsletterTemplates extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -98,12 +98,12 @@ class NewsletterTemplates extends React.Component {
|
||||
}
|
||||
|
||||
addTemplate(template) {
|
||||
const categoriesNames = templatesCategories.map(category => category.name);
|
||||
const categoriesNames = templatesCategories.map((category) => category.name);
|
||||
let categories;
|
||||
|
||||
try {
|
||||
categories = JSON.parse(template.categories)
|
||||
.filter(name => categoriesNames.indexOf(name) !== -1);
|
||||
.filter((name) => categoriesNames.indexOf(name) !== -1);
|
||||
} catch (err) {
|
||||
categories = [];
|
||||
}
|
||||
@ -156,7 +156,7 @@ class NewsletterTemplates extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -173,7 +173,9 @@ class NewsletterTemplates extends React.Component {
|
||||
afterTemplateDelete(success, id) {
|
||||
if (success) {
|
||||
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({
|
||||
@ -259,7 +261,7 @@ class NewsletterTemplates extends React.Component {
|
||||
<Tabs
|
||||
tabs={tabs}
|
||||
selected={this.state.selectedTab}
|
||||
select={name => this.setState({ selectedTab: name })}
|
||||
select={(name) => this.setState({ selectedTab: name })}
|
||||
/>
|
||||
|
||||
{content}
|
||||
|
@ -52,7 +52,7 @@ class ImportTemplate extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ class TemplateBox extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -82,7 +82,7 @@ class TemplateBox extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ class NewsletterTypes extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -175,7 +175,7 @@ class NewsletterTypes extends React.Component {
|
||||
<Breadcrumb step="type" />
|
||||
|
||||
<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">
|
||||
<div className="mailpoet_thumbnail">
|
||||
{type.thumbnailImage ? <img src={type.thumbnailImage} alt="" /> : null}
|
||||
|
@ -49,7 +49,7 @@ class NewsletterNotification extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
@ -59,13 +59,13 @@ class NotificationScheduling extends React.Component {
|
||||
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() {
|
||||
const value = this.getCurrentValue();
|
||||
|
@ -25,7 +25,7 @@ class NewsletterStandard extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ import { withRouter } from 'react-router-dom';
|
||||
const availableRoles = window.mailpoet_roles || {};
|
||||
const availableSegments = _.filter(
|
||||
window.mailpoet_segments || [],
|
||||
segment => segment.type === 'default'
|
||||
(segment) => segment.type === 'default'
|
||||
);
|
||||
|
||||
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 = () => {
|
||||
MailPoet.Ajax.post({
|
||||
@ -90,7 +90,7 @@ class WelcomeScheduling extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ class NewsletterWelcome extends React.Component {
|
||||
super(props);
|
||||
let availableSegments = window.mailpoet_segments || [];
|
||||
let defaultSegment = 1;
|
||||
availableSegments = availableSegments.filter(segment => segment.type === 'default');
|
||||
availableSegments = availableSegments.filter((segment) => segment.type === 'default');
|
||||
|
||||
if (_.size(availableSegments) > 0) {
|
||||
defaultSegment = _.first(availableSegments).id;
|
||||
@ -57,7 +57,7 @@ class NewsletterWelcome extends React.Component {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ import Notice from 'notices/notice.jsx';
|
||||
|
||||
const APIErrorsNotice = ({ errors }) => {
|
||||
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 = {
|
||||
errors: PropTypes.arrayOf(PropTypes.shape({
|
||||
|
@ -65,7 +65,7 @@ const useNpsPoll = () => {
|
||||
return null;
|
||||
};
|
||||
|
||||
const withNpsPoll = Component => (props) => {
|
||||
const withNpsPoll = (Component) => (props) => {
|
||||
useNpsPoll();
|
||||
return <Component {...props} />;
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
import MailPoet from 'mailpoet';
|
||||
|
||||
const getSettingsKey = pollType => `show_poll_success_delivery_${pollType}`;
|
||||
const getSettingsKey = (pollType) => `show_poll_success_delivery_${pollType}`;
|
||||
|
||||
const initTypeformScript = () => {
|
||||
if (!document.getElementById('typef_orm')) {
|
||||
|
@ -30,7 +30,7 @@ const messages = {
|
||||
},
|
||||
};
|
||||
|
||||
const SegmentForm = props => (
|
||||
const SegmentForm = (props) => (
|
||||
<div>
|
||||
<h1 className="title">
|
||||
{MailPoet.I18n.t('segment')}
|
||||
|
@ -6,9 +6,9 @@ import PropTypes from 'prop-types';
|
||||
|
||||
import Listing from 'listing/listing.jsx';
|
||||
|
||||
const isWPUsersSegment = segment => segment.type === 'wp_users';
|
||||
const isWooCommerceCustomersSegment = segment => segment.type === 'woocommerce_users';
|
||||
const isSpecialSegment = segmt => isWPUsersSegment(segmt) || isWooCommerceCustomersSegment(segmt);
|
||||
const isWPUsersSegment = (segment) => segment.type === 'wp_users';
|
||||
const isWooCommerceCustomersSegment = (segment) => segment.type === 'woocommerce_users';
|
||||
const isSpecialSegment = (segmt) => isWPUsersSegment(segmt) || isWooCommerceCustomersSegment(segmt);
|
||||
|
||||
const columns = [
|
||||
{
|
||||
@ -132,7 +132,7 @@ const itemActions = [
|
||||
refresh();
|
||||
}).fail((response) => {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}),
|
||||
@ -179,7 +179,7 @@ const itemActions = [
|
||||
MailPoet.Modal.loading(false);
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
@ -58,8 +58,8 @@ const fields = [
|
||||
}
|
||||
|
||||
return subscriber.subscriptions
|
||||
.filter(subscription => subscription.status === 'subscribed')
|
||||
.map(subscription => subscription.segment_id);
|
||||
.filter((subscription) => subscription.status === 'subscribed')
|
||||
.map((subscription) => subscription.segment_id);
|
||||
},
|
||||
filter: function filter(segment) {
|
||||
return (!segment.deleted_at && segment.type === 'default');
|
||||
|
@ -23,7 +23,7 @@ const ImportSubscribers = () => {
|
||||
<Switch>
|
||||
<Route
|
||||
path="/step_method_selection"
|
||||
render={props => (
|
||||
render={(props) => (
|
||||
<StepMethodSelection
|
||||
{...props}
|
||||
setStepMethodSelectionData={setStepMethodSelectionData}
|
||||
@ -33,7 +33,7 @@ const ImportSubscribers = () => {
|
||||
/>
|
||||
<Route
|
||||
path="/step_input_validation"
|
||||
render={props => (
|
||||
render={(props) => (
|
||||
<StepInputValidation
|
||||
{...props}
|
||||
stepMethodSelectionData={stepMethodSelectionData}
|
||||
@ -42,7 +42,7 @@ const ImportSubscribers = () => {
|
||||
/>
|
||||
<Route
|
||||
path="/step_data_manipulation"
|
||||
render={props => (
|
||||
render={(props) => (
|
||||
<StepDataManipulation
|
||||
{...props}
|
||||
stepMethodSelectionData={stepMethodSelectionData}
|
||||
@ -53,7 +53,7 @@ const ImportSubscribers = () => {
|
||||
/>
|
||||
<Route
|
||||
path="/step_results"
|
||||
render={props => (
|
||||
render={(props) => (
|
||||
<StepResults
|
||||
{...props}
|
||||
errors={stepDataManipulationData.errors}
|
||||
|
@ -3,7 +3,7 @@
|
||||
import jQuery from 'jquery';
|
||||
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) => {
|
||||
let test;
|
||||
@ -53,7 +53,7 @@ function sanitizeCSVData(csvData) {
|
||||
let rowData;
|
||||
let rowColumnCount;
|
||||
Object.keys(csvData).forEach((rowCount) => {
|
||||
rowData = csvData[rowCount].map(el => el.trim());
|
||||
rowData = csvData[rowCount].map((el) => el.trim());
|
||||
rowColumnCount = rowData.length;
|
||||
// set the number of row elements based on the first non-empty row
|
||||
if (columnCount === null) {
|
||||
|
@ -36,7 +36,7 @@ export default (onCreateSegment) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.hide();
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ positionAfter: '#new_segment_name' }
|
||||
);
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ export default (subscribersToImport, segments, updateExistingSubscribers, onImpo
|
||||
MailPoet.Modal.loading(false);
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -89,9 +89,9 @@ export default (subscribersToImport, segments, updateExistingSubscribers, onImpo
|
||||
importResult.segments = _.map(
|
||||
_.filter(
|
||||
importResult.segments,
|
||||
segment => segments.includes(segment.id)
|
||||
(segment) => segments.includes(segment.id)
|
||||
),
|
||||
data => data.name
|
||||
(data) => data.name
|
||||
);
|
||||
onImportComplete(importResult);
|
||||
}
|
||||
|
@ -74,7 +74,7 @@ export default () => {
|
||||
}).fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ positionAfter: '#field_name' }
|
||||
);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ export default (subscribers, header) => {
|
||||
columnId = 'email';
|
||||
} else if (header) {
|
||||
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
|
||||
if (headerNameMatch !== -1) {
|
||||
columnId = window.mailpoetColumns[headerNameMatch].id;
|
||||
|
@ -48,7 +48,7 @@ function Header({ header }) {
|
||||
return (
|
||||
<tr className="mailpoet_header">
|
||||
<td />
|
||||
{header.map(headerName => <td key={headerName}>{headerName}</td>)}
|
||||
{header.map((headerName) => <td key={headerName}>{headerName}</td>)}
|
||||
</tr>
|
||||
);
|
||||
}
|
||||
|
@ -30,11 +30,11 @@ const MethodMailChimp = ({ onFinish }) => {
|
||||
.always(() => {
|
||||
MailPoet.Modal.loading(false);
|
||||
})
|
||||
.done(response => setMailChimpLoadedLists(response.data))
|
||||
.done((response) => setMailChimpLoadedLists(response.data))
|
||||
.fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -55,11 +55,11 @@ const MethodMailChimp = ({ onFinish }) => {
|
||||
.always(() => {
|
||||
MailPoet.Modal.loading(false);
|
||||
})
|
||||
.done(response => onFinish(response.data))
|
||||
.done((response) => onFinish(response.data))
|
||||
.fail((response) => {
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
@ -80,7 +80,7 @@ const MethodMailChimp = ({ onFinish }) => {
|
||||
forceSelect2: true,
|
||||
values: mailChimpLoadedLists,
|
||||
}}
|
||||
onValueChange={e => setSelectedLists(e.target.value)}
|
||||
onValueChange={(e) => setSelectedLists(e.target.value)}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
|
@ -27,7 +27,7 @@ const MethodPaste = ({
|
||||
{ReactStringReplace(
|
||||
MailPoet.I18n.t('pasteDescription'),
|
||||
/\[link\](.*?)\[\/link\]/,
|
||||
match => (
|
||||
(match) => (
|
||||
<a
|
||||
href={`${kbLink}`}
|
||||
key="kb-link"
|
||||
|
@ -28,7 +28,7 @@ const MethodUpload = ({ onValueChange, canFinish, onFinish }) => {
|
||||
{ReactStringReplace(
|
||||
MailPoet.I18n.t('pasteDescription'),
|
||||
/\[link\](.*?)\[\/link\]/,
|
||||
match => (
|
||||
(match) => (
|
||||
<a
|
||||
href={`${kbLink}`}
|
||||
key="kb-link"
|
||||
|
@ -10,7 +10,7 @@ function RevenueTrackingPermission() {
|
||||
MailPoet.Notice.showApiErrorNotice(response, { scroll: true });
|
||||
};
|
||||
|
||||
const updateSettings = data => MailPoet.Ajax.post({
|
||||
const updateSettings = (data) => MailPoet.Ajax.post({
|
||||
api_version: window.mailpoet_api_version,
|
||||
endpoint: 'settings',
|
||||
action: 'set',
|
||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import MailPoet from 'mailpoet';
|
||||
|
||||
const WelcomeWizardEmailCourseStep = props => (
|
||||
const WelcomeWizardEmailCourseStep = (props) => (
|
||||
<div className="mailpoet_welcome_wizard_step_content">
|
||||
<h1>{MailPoet.I18n.t('welcomeWizardEmailCourseTitle')}</h1>
|
||||
<p>{MailPoet.I18n.t('welcomeWizardEmailCourseText')}</p>
|
||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import MailPoet from 'mailpoet';
|
||||
|
||||
const WelcomeWizardMigratedUserStep = props => (
|
||||
const WelcomeWizardMigratedUserStep = (props) => (
|
||||
<div className="mailpoet_welcome_wizard_step_content">
|
||||
<h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1>
|
||||
<p>{MailPoet.I18n.t('welcomeWizardSenderMigratedUserText')}</p>
|
||||
|
@ -29,7 +29,7 @@ function RevenueTrackingPermissionStep({ submitForm, loading }) {
|
||||
type="radio"
|
||||
name="import_type"
|
||||
checked={allowed === 'true'}
|
||||
onChange={e => setAllowed(e.target.value)}
|
||||
onChange={(e) => setAllowed(e.target.value)}
|
||||
value="true"
|
||||
/>
|
||||
{MailPoet.I18n.t('revenueTrackingAllow')}
|
||||
@ -40,7 +40,7 @@ function RevenueTrackingPermissionStep({ submitForm, loading }) {
|
||||
type="radio"
|
||||
name="import_type"
|
||||
checked={allowed === 'false'}
|
||||
onChange={e => setAllowed(e.target.value)}
|
||||
onChange={(e) => setAllowed(e.target.value)}
|
||||
value="false"
|
||||
/>
|
||||
{MailPoet.I18n.t('revenueTrackingDontAllow')}
|
||||
|
@ -3,7 +3,7 @@ import React from 'react';
|
||||
import MailPoet from 'mailpoet';
|
||||
import jQuery from 'jquery';
|
||||
|
||||
const WelcomeWizardSenderStep = props => (
|
||||
const WelcomeWizardSenderStep = (props) => (
|
||||
<div className="mailpoet_welcome_wizard_step_content">
|
||||
<h1>{MailPoet.I18n.t('welcomeWizardLetsStartTitle')}</h1>
|
||||
<p>{MailPoet.I18n.t('welcomeWizardSenderText')}</p>
|
||||
@ -25,7 +25,7 @@ const WelcomeWizardSenderStep = props => (
|
||||
placeholder="John Doe"
|
||||
value={props.sender ? props.sender.name : ''}
|
||||
data-parsley-required
|
||||
onChange={e => props.update_sender({ name: e.target.value })}
|
||||
onChange={(e) => props.update_sender({ name: e.target.value })}
|
||||
/>
|
||||
</label>
|
||||
<label htmlFor="senderAddress">
|
||||
@ -38,7 +38,7 @@ const WelcomeWizardSenderStep = props => (
|
||||
value={props.sender ? props.sender.address : ''}
|
||||
data-parsley-required
|
||||
data-parsley-type="email"
|
||||
onChange={e => props.update_sender({ address: e.target.value })}
|
||||
onChange={(e) => props.update_sender({ address: e.target.value })}
|
||||
/>
|
||||
</label>
|
||||
<div className="mailpoet_welcome_wizard_step_controls">
|
||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import SteppedProgressBar from '../../common/stepped_progess_bar.jsx';
|
||||
|
||||
const WelcomeWizardStepLayout = props => (
|
||||
const WelcomeWizardStepLayout = (props) => (
|
||||
<>
|
||||
<div className="mailpoet_welcome_wizard_header">
|
||||
<img src={window.mailpoet_logo_url} width="200" height="87" alt="MailPoet logo" />
|
||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import MailPoet from 'mailpoet';
|
||||
|
||||
const WelcomeWizardUsageTrackingStep = props => (
|
||||
const WelcomeWizardUsageTrackingStep = (props) => (
|
||||
<div className="mailpoet_welcome_wizard_step_content">
|
||||
<h1>{MailPoet.I18n.t('welcomeWizardUsageTrackingStepTitle')}</h1>
|
||||
<p>{MailPoet.I18n.t('welcomeWizardTrackingText')}</p>
|
||||
|
@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
|
||||
import React from 'react';
|
||||
import MailPoet from 'mailpoet';
|
||||
|
||||
const WelcomeWizardWooCommerceStep = props => (
|
||||
const WelcomeWizardWooCommerceStep = (props) => (
|
||||
<div className="mailpoet_welcome_wizard_step_content">
|
||||
<h1>{MailPoet.I18n.t('welcomeWizardWooCommerceStepTitle')}</h1>
|
||||
<p>
|
||||
|
@ -48,7 +48,7 @@ const WelcomeWizardStepsController = (props) => {
|
||||
setLoading(false);
|
||||
if (response.errors.length > 0) {
|
||||
MailPoet.Notice.error(
|
||||
response.errors.map(error => error.message),
|
||||
response.errors.map((error) => error.message),
|
||||
{ scroll: true }
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user