Improve the UX
[MAILPOET-3763]
This commit is contained in:
@@ -16,24 +16,26 @@ import APIErrorsNotice from 'notices/api_errors_notice';
|
|||||||
import { Scheduling } from './scheduling';
|
import { Scheduling } from './scheduling';
|
||||||
import ListingHeadingStepsRoute from '../../listings/heading_steps_route';
|
import ListingHeadingStepsRoute from '../../listings/heading_steps_route';
|
||||||
|
|
||||||
let defaultAfterTime;
|
|
||||||
if (!isEmpty(MailPoet.settings.deactivate_subscriber_after_inactive_days)) {
|
|
||||||
defaultAfterTime = (
|
|
||||||
Math.floor(
|
|
||||||
Number(
|
|
||||||
MailPoet.settings.deactivate_subscriber_after_inactive_days
|
|
||||||
) / 30
|
|
||||||
)
|
|
||||||
) - 1;
|
|
||||||
defaultAfterTime = defaultAfterTime.toString()
|
|
||||||
}
|
|
||||||
|
|
||||||
export function NewsletterTypeReEngagement(): JSX.Element {
|
export function NewsletterTypeReEngagement(): JSX.Element {
|
||||||
|
let defaultAfterTime = '';
|
||||||
|
if (!isEmpty(MailPoet.settings.deactivate_subscriber_after_inactive_days)) {
|
||||||
|
defaultAfterTime = (
|
||||||
|
(
|
||||||
|
Math.floor(
|
||||||
|
Number(
|
||||||
|
MailPoet.settings.deactivate_subscriber_after_inactive_days
|
||||||
|
) / 30
|
||||||
|
)
|
||||||
|
) - 1
|
||||||
|
).toString();
|
||||||
|
}
|
||||||
|
|
||||||
const [options, setOptions] = useState({
|
const [options, setOptions] = useState({
|
||||||
afterTimeNumber: defaultAfterTime,
|
afterTimeNumber: defaultAfterTime,
|
||||||
afterTimeType: 'months',
|
afterTimeType: 'months',
|
||||||
});
|
});
|
||||||
const [errors, setErrors] = useState([]);
|
const [errors, setErrors] = useState([]);
|
||||||
|
const [loading, setLoading] = useState(false);
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
|
||||||
function showTemplateSelection(newsletterId: string) {
|
function showTemplateSelection(newsletterId: string) {
|
||||||
@@ -42,6 +44,7 @@ export function NewsletterTypeReEngagement(): JSX.Element {
|
|||||||
|
|
||||||
function handleNext() {
|
function handleNext() {
|
||||||
setErrors([]);
|
setErrors([]);
|
||||||
|
setLoading(true);
|
||||||
MailPoet.Ajax.post({
|
MailPoet.Ajax.post({
|
||||||
api_version: MailPoet.apiVersion,
|
api_version: MailPoet.apiVersion,
|
||||||
endpoint: 'newsletters',
|
endpoint: 'newsletters',
|
||||||
@@ -54,6 +57,7 @@ export function NewsletterTypeReEngagement(): JSX.Element {
|
|||||||
}).done((response) => {
|
}).done((response) => {
|
||||||
showTemplateSelection(response.data.id);
|
showTemplateSelection(response.data.id);
|
||||||
}).fail((response) => {
|
}).fail((response) => {
|
||||||
|
setLoading(false);
|
||||||
if (response.errors) {
|
if (response.errors) {
|
||||||
setErrors(response.errors);
|
setErrors(response.errors);
|
||||||
}
|
}
|
||||||
@@ -83,6 +87,8 @@ export function NewsletterTypeReEngagement(): JSX.Element {
|
|||||||
isFullWidth
|
isFullWidth
|
||||||
onClick={handleNext}
|
onClick={handleNext}
|
||||||
type="button"
|
type="button"
|
||||||
|
isDisabled={isEmpty(options.afterTimeNumber) || loading}
|
||||||
|
withSpinner={loading}
|
||||||
>
|
>
|
||||||
{MailPoet.I18n.t('next')}
|
{MailPoet.I18n.t('next')}
|
||||||
</Button>
|
</Button>
|
||||||
|
@@ -10,7 +10,7 @@ import { Grid } from 'common/grid';
|
|||||||
import { onChange } from 'common/functions';
|
import { onChange } from 'common/functions';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
afterTimeNumber: string | undefined;
|
afterTimeNumber: string;
|
||||||
afterTimeType: string;
|
afterTimeType: string;
|
||||||
inactiveSubscribersPeriod: number | undefined;
|
inactiveSubscribersPeriod: number | undefined;
|
||||||
updateAfterTimeNumber: (arg: string) => void;
|
updateAfterTimeNumber: (arg: string) => void;
|
||||||
|
Reference in New Issue
Block a user