From f1852684a5331c17e00d8eca92c15aa0d68d8ee9 Mon Sep 17 00:00:00 2001 From: Brezo Cordero <8002881+brezocordero@users.noreply.github.com> Date: Fri, 26 Jan 2024 15:41:16 -0600 Subject: [PATCH] Use useSelect for senderDomainsConfig [MAILPOET-5796] --- .../integrations/mailpoet/context.ts | 13 +++++++++++- .../send-email/edit/sender-domain-notice.tsx | 20 +++++-------------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/mailpoet/assets/js/src/automation/integrations/mailpoet/context.ts b/mailpoet/assets/js/src/automation/integrations/mailpoet/context.ts index e0c2da20a0..a3e7fe2705 100644 --- a/mailpoet/assets/js/src/automation/integrations/mailpoet/context.ts +++ b/mailpoet/assets/js/src/automation/integrations/mailpoet/context.ts @@ -1,4 +1,4 @@ -import { select } from '@wordpress/data'; +import { select, dispatch, useSelect } from '@wordpress/data'; import { FormTokenItem } from '../../editor/components'; import { storeName } from '../../editor/store'; import { SenderRestrictionsType } from '../../../common'; @@ -23,3 +23,14 @@ export type Context = { export const getContext = (): Context => select(storeName).getContext('mailpoet') as Context; + +export const useSelectContext = (): Context => + useSelect((s) => s(storeName).getContext('mailpoet'), []); + +export const updateSenderDomainsConfig = ( + senderDomainsConfig: SenderDomainsConfig, +) => { + dispatch(storeName).alterContext('mailpoet', 'senderDomainsConfig', { + ...senderDomainsConfig, + }); +}; diff --git a/mailpoet/assets/js/src/automation/integrations/mailpoet/steps/send-email/edit/sender-domain-notice.tsx b/mailpoet/assets/js/src/automation/integrations/mailpoet/steps/send-email/edit/sender-domain-notice.tsx index 27307df8ca..206fa3b023 100644 --- a/mailpoet/assets/js/src/automation/integrations/mailpoet/steps/send-email/edit/sender-domain-notice.tsx +++ b/mailpoet/assets/js/src/automation/integrations/mailpoet/steps/send-email/edit/sender-domain-notice.tsx @@ -1,10 +1,8 @@ -import { useState, useMemo, useEffect } from 'react'; -import { dispatch } from '@wordpress/data'; +import { useMemo } from 'react'; import { extractEmailDomain } from 'common/functions'; import { SenderEmailAddressWarning } from '../../../../../../common/sender-email-address-warning'; import { MailPoet } from '../../../../../../mailpoet'; -import { getContext } from '../../../context'; -import { storeName } from '../../../../../editor/store'; +import { useSelectContext, updateSenderDomainsConfig } from '../../../context'; type SenderDomainInlineNoticeProps = { email: string; @@ -25,9 +23,7 @@ type SenderDomainInlineNoticeProps = { function SenderDomainStatusNotice({ email, }: SenderDomainInlineNoticeProps): JSX.Element { - const [senderDomainsConfig, setSendersDomainConfig] = useState( - getContext().senderDomainsConfig, - ); + const { senderDomainsConfig } = useSelectContext(); const domain = extractEmailDomain(email); const isPartiallyVerifiedDomain = @@ -38,12 +34,6 @@ function SenderDomainStatusNotice({ const showSenderDomainWarning = !senderDomainsConfig.verifiedSenderDomains.includes(domain); - useEffect(() => { - dispatch(storeName).alterContext('mailpoet', 'senderDomainsConfig', { - ...senderDomainsConfig, - }); - }, [senderDomainsConfig]); - return ( { if (data.type === 'email') { senderDomainsConfig.authorizedEmails.push(email); - setSendersDomainConfig({ ...senderDomainsConfig }); + updateSenderDomainsConfig({ ...senderDomainsConfig }); MailPoet.trackEvent('MSS in plugin authorize email', { 'authorized email source': 'Automations', wasSuccessful: 'yes', @@ -70,7 +60,7 @@ function SenderDomainStatusNotice({ if (!senderDomainsConfig.allSenderDomains.includes(domain)) { senderDomainsConfig.allSenderDomains.push(domain); } - setSendersDomainConfig({ ...senderDomainsConfig }); + updateSenderDomainsConfig({ ...senderDomainsConfig }); MailPoet.trackEvent('MSS in plugin verify sender domain', { 'verify sender domain source': 'Automations', wasSuccessful: 'yes',