isSeoChecklistWorkflowActionEnabled function

bool isSeoChecklistWorkflowActionEnabled(
  1. SeoChecklistWorkflowState state,
  2. SeoChecklistWorkflowAction action
)

Implementation

bool isSeoChecklistWorkflowActionEnabled(
  SeoChecklistWorkflowState state,
  SeoChecklistWorkflowAction action,
) {
  if (!isValidSeoChecklistWorkflowState(
      state, state.checklist.checked.length)) {
    return false;
  }
  return switch (action) {
    SeoChecklistWorkflowSetItem(:final index, :final checked) =>
      state.workflow.stage.index < SeoEditorialWorkflowStage.approved.index &&
          isSeoApprovalChecklistActionEnabled(
              state.checklist,
              SeoApprovalChecklistSetItem(index, checked),
              state.checklist.checked.length),
    SeoChecklistWorkflowAdvance(:final action) =>
      isSeoEditorialWorkflowActionEnabled(state.workflow, action) &&
          (action is! SeoEditorialWorkflowApprove ||
              isSeoApprovalChecklistComplete(state.checklist)),
  };
}