convertResultToStateAfterLoadMore method

Future<S> convertResultToStateAfterLoadMore(
  1. dynamic result
)

Implementation

Future<S> convertResultToStateAfterLoadMore(result) async {
  // Cached with data
  if (result is CacheResult &&
      result.data != null &&
      result.data is GridResult) {
    final stateItems = state.result.items;

    state.result.map(result.data as GridResult);

    state.result.numberOfCachedItems += state.result.items.count;

    state.result.items.insertAll(0, stateItems);

    state.resultStatus = _getStatusFromResult(result) ?? state.resultStatus;

    return state.copyWith();
  }

  // Network
  if (result is! CacheResult &&
      result.data != null &&
      result.data is GridResult) {
    final stateItems = state.result.items;

    state.result.map(result.data as GridResult);

    if (state.resultStatus == ResultStatus.loadedCached) {
      stateItems.removeLastItems(state.result.numberOfCachedItems);
      state.result.numberOfCachedItems = 0;
    }

    state.result.items.insertAll(0, stateItems);

    state.resultStatus = _getStatusFromResult(result) ?? state.resultStatus;

    return state.copyWith();
  }

  state.resultStatus = _getStatusFromResult(result) ?? state.resultStatus;

  return state.copyWith();
}