getErrorFromDioError function

NetworkError getErrorFromDioError(
  1. DioException error
)

Implementation

NetworkError getErrorFromDioError(DioException error) {
  final NetworkError networkExceptions;
  switch (error.type) {
    case DioExceptionType.cancel:
      networkExceptions = const NetworkError.requestCancelled();
      break;
    case DioExceptionType.connectionTimeout:
      networkExceptions = const NetworkError.requestTimeout();
      break;
    case DioExceptionType.unknown:
      if (error.error == MocksPaths.error) {
        networkExceptions = const NetworkError.mockNotFoundError();
      } else if (error.toString().contains('is not a subtype of')) {
        networkExceptions = const NetworkError.unableToProcess();
      } else {
        networkExceptions = const NetworkError.noInternetConnection();
      }
      break;
    case DioExceptionType.receiveTimeout:
      networkExceptions = const NetworkError.sendTimeout();
      break;
    case DioExceptionType.badResponse:
      final errorDescription =
          error.response?.data?['error']?['error_description'];
      final errorType = error.response?.data?['error']?['error_type'];
      if (errorType != null && errorType == 'INFO_NOT_MATCHING') {
        return const NetworkError.infoNotMatching();
      }

      if (errorDescription != null && errorDescription is List) {
        return NetworkError.badRequestListErrors(
          (errorDescription).map((e) => e as String).toList(),
        );
      }

      networkExceptions = _checkStatusCode(error.response?.statusCode);
      break;
    case DioExceptionType.sendTimeout:
      networkExceptions = const NetworkError.sendTimeout();
      break;
    case DioExceptionType.badCertificate:
      networkExceptions = const NetworkError.badRequest();
      break;
    case DioExceptionType.connectionError:
      networkExceptions = const NetworkError.badRequest();
      break;
  }

  return networkExceptions;
}