Add AuthorizeSenderEmailModal component

MAILPOET-4300
This commit is contained in:
Oluwaseun Olorunsola
2022-07-01 16:17:43 +01:00
committed by Veljko V
parent 1fda60bfea
commit f07aa5eef1
2 changed files with 91 additions and 0 deletions

View File

@ -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 };

View File

@ -120,6 +120,11 @@ jQuery('#adminmenu #toplevel_page_mailpoet-newsletters')
'reviewRequestRateUsNow': _x('Rate us now', 'Review our plugin on WordPress.org.'),
'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'),
'notSentYet': __('Not sent yet!'),