handleNetworkError function

Future<NetworkResponse> handleNetworkError({
  1. required Future<NetworkResponse> proccess(),
  2. dynamic builder(
    1. DioException
    )?,
})

Implementation

Future<NetworkResponse> handleNetworkError({
  required Future<NetworkResponse> Function() proccess,
  Function(DioException)? builder,
}) async {
  bool isDisconnect = await WifiService.isDisconnectWhenCallApi();
  if (isDisconnect) {
    if (networkOptions.errorDisconnectCallback != null) {
      networkOptions.errorDisconnectCallback!();
    }
    return NetworkResponse.withDisconnect();
  }
  try {
    return await proccess();
  } on DioException catch (e) {
    appDebugPrint('DioException: $e');
    if (builder != null) {
      var _ = builder.call(e);
      if (_ is NetworkResponse) return _;
    }
    if (e.type == DioExceptionType.connectionTimeout ||
        e.type == DioExceptionType.connectionError) {
      return NetworkResponse.withDisconnect();
    }
    return NetworkResponse.withErrorRequest(e);
  } catch (e) {
    return NetworkResponse.withErrorConvert(e);
  }
}