tonApiPaged<S> static method

Future<void> tonApiPaged<S>(
  1. int limit,
  2. Future<NetResponse<S>> request(
    1. int offset
    ),
  3. NetMapperSuccess mapperSuccess,
  4. int dataLength(
    1. S
    ),
  5. Future<void> onNewData(
    1. ApiResult<S> newData
    ),
)

Implementation

static Future<void> tonApiPaged<S>(
    int limit,
    Future<NetResponse<S>> Function(int offset) request,
    NetMapperSuccess mapperSuccess,
    int Function(S) dataLength,
    Future<void> Function(ApiResult<S> newData) onNewData) async {
  int offset = 0;
  do {
    final data = await Net.tonApi(() {
      var response = request(offset);
      return response;
    }, mapperSuccess);

    var dataSize = 0;

    if (data is ApiResultSuccess<S>) {
      await onNewData(data);
      dataSize = dataLength(data.data);
    } else {
      await onNewData(data);
      return;
    }

    if (dataSize > 0) {
      if(dataSize < limit){
        return;
      }
      offset += dataSize;
    } else {
      offset = 0;
    }
  } while (offset > 0);
}