execute method
Implementation
@override
Future<CarpenterCommandResult> execute(I input) async {
if (!value.enabled ||
value.visibility == CarpenterCommandVisibility.hidden ||
value.execution == CarpenterCommandExecution.executing) {
throw StateError(value.disabledReason ?? 'Команда $id недоступна.');
}
value = value.copyWith(
execution: CarpenterCommandExecution.executing,
clearError: true,
);
try {
final result = await _execute(input);
value = value.copyWith(
execution: CarpenterCommandExecution.idle,
clearError: true,
);
return result;
} catch (error) {
value = value.copyWith(
execution: CarpenterCommandExecution.failed,
error: error,
);
rethrow;
}
}