diff --git a/mailpoet/assets/js/src/automation/testing.tsx b/mailpoet/assets/js/src/automation/testing.tsx index cca99d2a80..0e25be0005 100644 --- a/mailpoet/assets/js/src/automation/testing.tsx +++ b/mailpoet/assets/js/src/automation/testing.tsx @@ -1,3 +1,4 @@ +import { ReactNode } from 'react'; import { useMutation } from './api'; import { id } from './id'; @@ -68,7 +69,15 @@ export function CreateTestingWorkflowButton(): JSX.Element { ); } -export function CreateWorkflowFromTemplateButton(): JSX.Element { +type TemplateButtonProps = { + template: string; + children?: ReactNode; +}; + +export function CreateWorkflowFromTemplateButton({ + template, + children, +}: TemplateButtonProps): JSX.Element { const [createWorkflowFromTemplate, { loading, error }] = useMutation( 'workflows/create-from-template', { @@ -85,14 +94,14 @@ export function CreateWorkflowFromTemplateButton(): JSX.Element { await createWorkflowFromTemplate({ body: JSON.stringify({ name: `Test from template ${new Date().toISOString()}`, - template: 'delayed-email-after-signup', + template, }), }); window.location.reload(); }} disabled={loading} > - Create testing workflow from template + {children} {error && (
{error?.data?.message ?? 'An unknown error occurred'}
diff --git a/mailpoet/lib/Automation/Engine/Builder/CreateWorkflowFromTemplateController.php b/mailpoet/lib/Automation/Engine/Builder/CreateWorkflowFromTemplateController.php index 4a43080f97..94ba515e53 100644 --- a/mailpoet/lib/Automation/Engine/Builder/CreateWorkflowFromTemplateController.php +++ b/mailpoet/lib/Automation/Engine/Builder/CreateWorkflowFromTemplateController.php @@ -10,7 +10,7 @@ use MailPoet\UnexpectedValueException; class CreateWorkflowFromTemplateController { /** @var WorkflowStorage */ private $storage; - + /** @var WorkflowBuilder */ private $templates; @@ -30,6 +30,9 @@ class CreateWorkflowFromTemplateController { case 'delayed-email-after-signup': $workflow = $this->templates->delayedEmailAfterSignupWorkflow($name); break; + case 'welcome-email-sequence': + $workflow = $this->templates->welcomeEmailSequence($name); + break; default: throw UnexpectedValueException::create()->withMessage('Template not found.'); } diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Templates/WorkflowBuilder.php b/mailpoet/lib/Automation/Integrations/MailPoet/Templates/WorkflowBuilder.php index e9e4f1f208..7cd419a3c7 100644 --- a/mailpoet/lib/Automation/Integrations/MailPoet/Templates/WorkflowBuilder.php +++ b/mailpoet/lib/Automation/Integrations/MailPoet/Templates/WorkflowBuilder.php @@ -48,6 +48,32 @@ class WorkflowBuilder { return new Workflow($name, $steps); } + public function welcomeEmailSequence(string $name): Workflow { + $triggerStep = $this->segmentSubscribedTriggerStep(); + + $firstWaitStep = $this->waitStep(60 * 60); + $triggerStep->setNextStepId($firstWaitStep->getId()); + + $sendFirstEmailStep = $this->sendEmailActionStep(1); + $firstWaitStep->setNextStepId($sendFirstEmailStep->getId()); + + $secondWaitStep = $this->waitStep(3 * 60 * 60); + $sendFirstEmailStep->setNextStepId($secondWaitStep->getId()); + + $sendSecondEmailStep = $this->sendEmailActionStep(2); + $secondWaitStep->setNextStepId($sendSecondEmailStep->getId()); + + $steps = [ + $triggerStep, + $firstWaitStep, + $sendFirstEmailStep, + $secondWaitStep, + $sendSecondEmailStep, + ]; + + return new Workflow($name, $steps); + } + private function waitStep(int $seconds): Step { return new Step($this->uniqueId(), Step::TYPE_ACTION, $this->waitAction->getKey(), null, [ 'seconds' => $seconds,