evaluateSeoApprovalChecklistAction function
SeoApprovalChecklistEvaluation?
evaluateSeoApprovalChecklistAction({
- required SeoApprovalChecklistTransition transition,
- required SeoApprovalChecklistViewProjection project,
- required SeoApprovalChecklistEvaluation current,
- required SeoApprovalChecklistAction action,
- required int itemCount,
Implementation
SeoApprovalChecklistEvaluation? evaluateSeoApprovalChecklistAction({
required SeoApprovalChecklistTransition transition,
required SeoApprovalChecklistViewProjection project,
required SeoApprovalChecklistEvaluation current,
required SeoApprovalChecklistAction action,
required int itemCount,
}) {
final result = evaluateSeoApplicationAction(
currentState: current.state,
currentView: current.view,
action: action,
canonicalizeState: (candidate) =>
_canonicalSeoApprovalChecklistState(candidate, itemCount),
validateView: _validateSeoApprovalChecklistView,
isActionAdmitted: (state, candidateAction) =>
isSeoApprovalChecklistActionEnabled(
state,
candidateAction,
itemCount,
),
transition: transition,
validateCandidate: (state, candidateAction, candidate) {
final change = candidateAction as SeoApprovalChecklistSetItem;
final flags = [...state.checked]..[change.index] = change.checked;
final expected = SeoApprovalChecklistState(
checked: List.unmodifiable(flags),
);
return candidate == expected ? expected : null;
},
project: project,
);
if (result == null) return null;
return SeoApprovalChecklistEvaluation(
state: result.state,
view: result.view,
accepted: result.accepted,
);
}