-
+
{workflowStatus !== WorkflowStatus.ACTIVE &&
}
{workflowStatus === WorkflowStatus.ACTIVE &&
}
diff --git a/mailpoet/assets/js/src/automation/editor/store/actions.ts b/mailpoet/assets/js/src/automation/editor/store/actions.ts
index 0aa7ac90b1..420cbdd50f 100644
--- a/mailpoet/assets/js/src/automation/editor/store/actions.ts
+++ b/mailpoet/assets/js/src/automation/editor/store/actions.ts
@@ -40,12 +40,22 @@ export function selectStep(value) {
} as const;
}
+export function setWorkflowName(name) {
+ const workflow = select(storeName).getWorkflowData();
+ workflow.name = name;
+ return {
+ type: 'UPDATE_WORKFLOW',
+ workflow,
+ } as const;
+}
+
export function* activate() {
const workflow = select(storeName).getWorkflowData();
const data = yield apiFetch({
path: `/workflows/${workflow.id}`,
method: 'PUT',
data: {
+ name: workflow.name,
status: 'active',
},
});
diff --git a/mailpoet/assets/js/src/automation/editor/store/reducer.ts b/mailpoet/assets/js/src/automation/editor/store/reducer.ts
index c9b0eca45b..ccc567429b 100644
--- a/mailpoet/assets/js/src/automation/editor/store/reducer.ts
+++ b/mailpoet/assets/js/src/automation/editor/store/reducer.ts
@@ -24,6 +24,11 @@ export function reducer(state: State, action: Action): State {
...state,
selectedStep: action.value,
};
+ case 'UPDATE_WORKFLOW':
+ return {
+ ...state,
+ workflowData: action.workflow,
+ };
case 'ACTIVATE':
return {
...state,
diff --git a/mailpoet/lib/Automation/Engine/Builder/UpdateWorkflowController.php b/mailpoet/lib/Automation/Engine/Builder/UpdateWorkflowController.php
index 96f05afee1..3c7e8f008f 100644
--- a/mailpoet/lib/Automation/Engine/Builder/UpdateWorkflowController.php
+++ b/mailpoet/lib/Automation/Engine/Builder/UpdateWorkflowController.php
@@ -27,6 +27,12 @@ class UpdateWorkflowController {
throw Exceptions::workflowNotFound($id);
}
+ if (array_key_exists('name', $data)) {
+ $this->checkWorkflowName($data['name']);
+ $workflow->setName($data['name']);
+ $this->storage->updateWorkflow($workflow);
+ }
+
if (array_key_exists('status', $data)) {
$this->checkWorkflowStatus($data['status']);
$workflow->setStatus($data['status']);
@@ -40,6 +46,12 @@ class UpdateWorkflowController {
return $workflow;
}
+ private function checkWorkflowName(string $name): void {
+ if (empty($name)) {
+ throw UnexpectedValueException::create()->withMessage(__('Workflow name must not be empty', 'mailpoet'));
+ }
+ }
+
private function checkWorkflowStatus(string $status): void {
if (!in_array($status, [Workflow::STATUS_ACTIVE, Workflow::STATUS_INACTIVE, Workflow::STATUS_DRAFT], true)) {
throw UnexpectedValueException::create()->withMessage(__(sprintf('Invalid status: %s', $status), 'mailpoet'));
diff --git a/mailpoet/lib/Automation/Engine/Workflows/Workflow.php b/mailpoet/lib/Automation/Engine/Workflows/Workflow.php
index 3b9b8ee4c6..e839642f39 100644
--- a/mailpoet/lib/Automation/Engine/Workflows/Workflow.php
+++ b/mailpoet/lib/Automation/Engine/Workflows/Workflow.php
@@ -57,6 +57,10 @@ class Workflow {
return $this->name;
}
+ public function setName(string $name): void {
+ $this->name = $name;
+ }
+
public function getStatus(): string {
return $this->status;
}