evaluateSeoEditorialWorkflowAction function

SeoEditorialWorkflowEvaluation? evaluateSeoEditorialWorkflowAction({
  1. required SeoEditorialWorkflowTransition transition,
  2. required SeoEditorialWorkflowViewProjection project,
  3. required SeoEditorialWorkflowEvaluation current,
  4. required SeoEditorialWorkflowAction action,
})

Implementation

SeoEditorialWorkflowEvaluation? evaluateSeoEditorialWorkflowAction({
  required SeoEditorialWorkflowTransition transition,
  required SeoEditorialWorkflowViewProjection project,
  required SeoEditorialWorkflowEvaluation current,
  required SeoEditorialWorkflowAction action,
}) {
  final result = evaluateSeoApplicationAction(
    currentState: current.state,
    currentView: current.view,
    action: action,
    canonicalizeState: _canonicalSeoEditorialWorkflowState,
    validateView: _validateSeoEditorialWorkflowView,
    isActionAdmitted: isSeoEditorialWorkflowActionEnabled,
    transition: transition,
    validateCandidate: (state, candidateAction, candidate) {
      final target = _targetSeoEditorialWorkflowStage(
        state.stage,
        candidateAction,
      );
      if (target == null) return null;
      final expected = SeoEditorialWorkflowState(
        stage: target,
        history: List.unmodifiable([...state.history, target]),
      );
      return candidate == expected ? expected : null;
    },
    project: project,
  );
  if (result == null) return null;
  return SeoEditorialWorkflowEvaluation(
    state: result.state,
    view: result.view,
    accepted: result.accepted,
  );
}