Add AuthorizeSenderEmailModal component
MAILPOET-4300
This commit is contained in:
committed by
Veljko V
parent
1fda60bfea
commit
f07aa5eef1
@ -0,0 +1,86 @@
|
|||||||
|
import { useEffect, useState } from 'react';
|
||||||
|
import ReactStringReplace from 'react-string-replace';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import { MailPoet } from 'mailpoet';
|
||||||
|
import { Modal } from 'common/modal/modal';
|
||||||
|
import { Loader } from 'common';
|
||||||
|
|
||||||
|
type ApiActionType = 'create' | 'confirm';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} email - Email address
|
||||||
|
* @param {ApiActionType} type - action type
|
||||||
|
* @returns {Promise}
|
||||||
|
*/
|
||||||
|
const makeApiRequest = (email: string, type: ApiActionType = 'create') =>
|
||||||
|
MailPoet.Ajax.post({
|
||||||
|
api_version: MailPoet.apiVersion,
|
||||||
|
endpoint: 'settings',
|
||||||
|
action:
|
||||||
|
type === 'create'
|
||||||
|
? 'authorizeSenderEmailAddress'
|
||||||
|
: 'confirmSenderEmailAddressIsAuthorized',
|
||||||
|
data: {
|
||||||
|
email,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
senderEmail: string;
|
||||||
|
onRequestClose: () => void;
|
||||||
|
};
|
||||||
|
|
||||||
|
function AuthorizeSenderEmailModal({ senderEmail, onRequestClose }: Props) {
|
||||||
|
const [apiResponseType, setApiResponseType] = useState<boolean>(null);
|
||||||
|
|
||||||
|
const senderEmailAddress = String(senderEmail).toLowerCase();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!senderEmailAddress) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
makeApiRequest(senderEmailAddress)
|
||||||
|
.then((res) => {
|
||||||
|
setApiResponseType(Boolean(res?.data));
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
setApiResponseType(false);
|
||||||
|
});
|
||||||
|
}, [senderEmailAddress]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
title={MailPoet.I18n.t('authorizeSenderEmailModalTitle').replace(
|
||||||
|
'[senderEmail]',
|
||||||
|
senderEmailAddress,
|
||||||
|
)}
|
||||||
|
onRequestClose={onRequestClose}
|
||||||
|
contentClassName="authorize-sender-email-modal"
|
||||||
|
>
|
||||||
|
{apiResponseType && (
|
||||||
|
<p>
|
||||||
|
{ReactStringReplace(
|
||||||
|
MailPoet.I18n.t('authorizeSenderEmailModalDescription'),
|
||||||
|
/\[bold\](.*?)\[\/bold\]/g,
|
||||||
|
(match, i) => (
|
||||||
|
<strong key={i}>{match}</strong>
|
||||||
|
),
|
||||||
|
)}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
|
||||||
|
{apiResponseType === false && (
|
||||||
|
<p>{MailPoet.I18n.t('authorizeSenderEmailMessageError')}</p>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<Loader size={64} />
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
AuthorizeSenderEmailModal.propTypes = {
|
||||||
|
senderEmail: PropTypes.string.isRequired,
|
||||||
|
};
|
||||||
|
|
||||||
|
export { AuthorizeSenderEmailModal };
|
@ -120,6 +120,11 @@ jQuery('#adminmenu #toplevel_page_mailpoet-newsletters')
|
|||||||
'reviewRequestRateUsNow': _x('Rate us now', 'Review our plugin on WordPress.org.'),
|
'reviewRequestRateUsNow': _x('Rate us now', 'Review our plugin on WordPress.org.'),
|
||||||
'reviewRequestNotNow': __('Not now'),
|
'reviewRequestNotNow': __('Not now'),
|
||||||
|
|
||||||
|
'authorizeSenderEmailModalTitle': __('Authorizing your email address: [senderEmail]', 'mailpoet'),
|
||||||
|
'authorizeSenderEmailModalDescription': __('Check your inbox now to confirm your email address. Please find the email with the subject: [bold]"email address to authorize"[/bold]', 'mailpoet'),
|
||||||
|
'authorizeSenderEmailMessageSuccess': __('The email address has been authorized. You can now send emails using this address with MailPoet.', 'mailpoet'),
|
||||||
|
'authorizeSenderEmailMessageError': __('An error occured when performing the request. Please try again later', 'mailpoet'),
|
||||||
|
|
||||||
'sent': __('Sent'),
|
'sent': __('Sent'),
|
||||||
'notSentYet': __('Not sent yet!'),
|
'notSentYet': __('Not sent yet!'),
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user