listDocuments method

Future<void> listDocuments()

Implementation

Future<void> listDocuments() async {
  // print('Offset: ${_offset + widget.itemsPerPage}');
  // print('Documents total: ${_documentList.total}');
  // print('Documents length: ${_documentList.documents.length}');
  if (_pageControllerDirection == PageControllerDirection.previous) {
    // START BUMPER
    _offset = _offset - widget.itemsPerPage;
    if (_offset <= 0) {
      _offset = 0;
      widget.onStartCallback != null
          ? widget.onStartCallback!(_documentList.documents as List<T>)
          : null;
      // Bumper on empty.
      if (_documentList.total == 0) return;
      widget.pageController?._isAtStart = true;
      widget.pageController?._isAtEnd = false;
    }
  } else if (_pageControllerDirection == PageControllerDirection.next) {
    // END BUMPER
    if (_offset + _documentList.documents.length >= _documentList.total) {
      widget.onEndCallback != null
          ? widget.onEndCallback!(_documentList.documents as List<T>)
          : null;
      widget.pageController?._isAtEnd = true;
      widget.pageController?._isAtStart = false;
      return;
    }
    _offset = _offset + widget.itemsPerPage;
    if (_offset >= _documentList.total) _offset = _offset - 1;
  } else if (_pageControllerDirection ==
      PageControllerDirection.updateCurrent) {}

  try {
    _error = null;
    _stackTrace = null;
    setState(() => _widgetStates = WidgetStates.waiting);

    final documentList = await widget.database.listDocuments(
      collectionId: widget.collectionId,
      limit: widget.itemsPerPage,
      offset: _offset,
      orderTypes: widget.orderTypes,
      orderAttributes: widget.orderAttributes,
      queries: widget.queries,
    );
    _documentList = documentList;

    setState(() => _widgetStates = WidgetStates.data);
  } catch (e, s) {
    _error = e;
    _stackTrace = s;
    if (e is TimeoutException) {
      setState(() => _widgetStates = WidgetStates.timeout);
    } else {
      setState(() => _widgetStates = WidgetStates.error);
    }
    rethrow;
  }
}