requestItems method

Future<List<T>> requestItems({
  1. NsgDataRequestParams? filter,
  2. bool autoAuthorize = true,
  3. String tag = '',
  4. List<String>? loadReference,
  5. String function = '',
  6. String method = 'GET',
  7. dynamic postData,
  8. bool autoRepeate = true,
  9. int autoRepeateCount = 10,
  10. FutureOr<bool> userRetryIf(
    1. Exception
    )?,
  11. FutureOr<void> userOnRetry(
    1. Exception
    )?,
  12. NsgCancelToken? cancelToken,
})

Запрос одного объекта. Для запроса списка объектов используйте requestItems Выполняет запрос по стандартному методу, заданному в бъекте Можно перекрыть для изменения логики запроса filter = доп. фильтр, особенное внимание следует обратить на его сво-во compare autoAuthorize - переход на авторизацию, если будет получен отказ в доступе tag - доп признак для кэширования loadReference - список полей для дочитывания, можно передавать через точку, null - будут дочитаны все поля ссылочного типа первого уровн, пустой массив - не будет дочитано ничего Обратите внимание, по умолчанию дочитываются все поля, что может негативно сказаться на производительности function - url вызываемого метода, если не задан, будет взят url данного объекта по умолчанию method - метод запроса. Рекомендуем всегда использовать POST из-за отсутствия ограничений на передаваемые параметры postData - передаваемые данные. Не рекомендуется использовать напрямую autoRepeate - повторять ли запрос в случае ошибки связи autoRepeateCount - максимальное количество повторов retryIf - функция, вызываемая перед каждым повторным вызовом. Если вернет false, повторы будут остановлены onRetry - функция, вызываемая при каждом повторе запроса

Implementation

Future<List<T>> requestItems({
  NsgDataRequestParams? filter,
  bool autoAuthorize = true,
  String tag = '',
  List<String>? loadReference,
  String function = '',
  String method = 'GET',
  dynamic postData,
  bool autoRepeate = true,
  int autoRepeateCount = 10,
  FutureOr<bool> Function(Exception)? userRetryIf,
  FutureOr<void> Function(Exception)? userOnRetry,
  NsgCancelToken? cancelToken,
}) async {
  if (storageType == NsgDataStorageType.server) {
    retryIf = retryIf;
    if (autoRepeate) {
      final r = RetryOptions(maxAttempts: autoRepeateCount, maxDelay: const Duration(seconds: 15));
      return await r.retry(
          () => _requestItems(
              filter: filter,
              autoAuthorize: autoAuthorize,
              tag: tag,
              loadReference: loadReference,
              function: function,
              method: method,
              postData: postData,
              externalCancelToken: cancelToken),
          retryIf: _retryIfInternal,
          onRetry: userOnRetry);
      // onRetry: (error) => _updateStatusError(error.toString()));
    } else {
      return await _requestItems(
          filter: filter,
          autoAuthorize: autoAuthorize,
          tag: tag,
          loadReference: loadReference,
          function: function,
          method: method,
          postData: postData,
          externalCancelToken: cancelToken);
    }
  } else {
    return await _requestItemsFromDb(filter: filter, tag: tag, loadReference: loadReference);
  }
}