execute method

  1. @override
Future<CarpenterCommandResult> execute(
  1. I input
)
override

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;
  }
}