From dad40e262fe9565f0b34d1b289d4026f7a61c30f Mon Sep 17 00:00:00 2001 From: David Remer Date: Wed, 11 Jan 2023 10:17:37 +0200 Subject: [PATCH] Set isBusy state for FromScratch buttons [MAILPOET-4918] --- .../templates/components/from-scratch.tsx | 52 +++++++++++++------ 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/mailpoet/assets/js/src/automation/templates/components/from-scratch.tsx b/mailpoet/assets/js/src/automation/templates/components/from-scratch.tsx index 7b32eb7dc5..ef01fe6be7 100644 --- a/mailpoet/assets/js/src/automation/templates/components/from-scratch.tsx +++ b/mailpoet/assets/js/src/automation/templates/components/from-scratch.tsx @@ -1,4 +1,4 @@ -import { Dispatch, SetStateAction, useCallback, useState } from 'react'; +import { Dispatch, useCallback, useState } from 'react'; import { __ } from '@wordpress/i18n'; import { Button } from '@wordpress/components'; import { Hooks } from 'wp-js-hooks'; @@ -9,21 +9,19 @@ import { FromScratchHookType } from '../../types/filters'; type FromScratchPremiumModalProps = { showModal: boolean; - setShowModal: Dispatch>; + onClose: () => void; }; function FromScratchPremiumModal({ showModal, - setShowModal, + onClose, }: FromScratchPremiumModalProps): JSX.Element | null { if (!showModal) { return null; } return ( { - setShowModal(false); - }} + onRequestClose={onClose} tracking={{ utm_medium: 'upsell_modal', utm_campaign: 'create_automation_from_scratch', @@ -47,11 +45,17 @@ function fromScratchHook(callback: () => void, errorHandler: Dispatch) { export function FromScratchButton(): JSX.Element { const [showModal, setShowModal] = useState(false); const [error, errorHandler] = useState(null); + const [isBusy, setIsBusy] = useState(false); const onClickScratchButton = useCallback(() => { fromScratchHook(() => { setShowModal(true); }, errorHandler); }, []); + + const premiumClose = () => { + setShowModal(false); + setIsBusy(false); + }; return ( <> {error && ( @@ -59,25 +63,37 @@ export function FromScratchButton(): JSX.Element {

{error}

)} - - + ); } export function FromScratchListItem(): JSX.Element { const [showModal, setShowModal] = useState(false); + const [isBusy, setIsBusy] = useState(false); const [error, errorHandler] = useState(null); const onClickScratchButton = useCallback(() => { fromScratchHook(() => { setShowModal(true); }, errorHandler); }, []); + + const premiumClose = () => { + setShowModal(false); + setIsBusy(false); + }; + return (
  • {error && ( @@ -85,14 +101,18 @@ export function FromScratchListItem(): JSX.Element {

    {error}

    )} - - +
  • ); }