Add welcome email sequence template
[MAILPOET-4454]
This commit is contained in:
@@ -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}
|
||||
</button>
|
||||
{error && (
|
||||
<div>{error?.data?.message ?? 'An unknown error occurred'}</div>
|
||||
|
@@ -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.');
|
||||
}
|
||||
|
@@ -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,
|
||||
|
Reference in New Issue
Block a user