dtoToResetFaultsValidation function

ResetFaultsValidation dtoToResetFaultsValidation(
  1. DeviceDetailsDTO details,
  2. List<TimelineItem> activeAlerts
)

Implementation

ResetFaultsValidation dtoToResetFaultsValidation(
  DeviceDetailsDTO details,
  List<TimelineItem> activeAlerts,
) {
  final fault = activeAlerts
      .firstWhereOrNull((alert) => alert.type == TimelineItemType.shutdown);

  final hasMatchingProduct = details.device?.product == ProductDTO.rdc2v4 ||
      details.device?.product == ProductDTO.dc2v4;

  final firmware = details.device?.firmwareVersion;

  var hasUpdatedVersion = false;
  if (firmware != null) {
    try {
      hasUpdatedVersion = Version.parse(firmware) >= Version(3, 3, 2);
    } catch (_) {
      hasUpdatedVersion = false;
    }
  }

  return ResetFaultsValidation(
    isCriticalFault: activeAlerts
        .where((alert) => alert.type == TimelineItemType.shutdown)
        .any((alert) => alert.isCriticalFault),
    isSupportedFaultType: fault?.canRemoteResetFault != false,
    isAuto: details.switchState == SwitchStateDTO.auto,
    isConnected: details.device?.isConnected ?? false,
    isFirmwareUpdated: hasMatchingProduct && hasUpdatedVersion,
  );
}