loadMoreMessages method

Future<List<VBaseMessage>?> loadMoreMessages()
inherited

Implementation

Future<List<VBaseMessage>?> loadMoreMessages() async {
  _loadingStatus = LoadMoreStatus.loading;
  _filterDto.lastId = value.last.id;
  final localLoadedMessages = await messageProvider.getLocalMessages(
    roomId: vRoom.id,
    filter: _filterDto,
  );
  if (localLoadedMessages.isEmpty) {
    ///if no more data ask server for it
    return await vSafeApiCall<List<VBaseMessage>>(
      request: () async {
        return messageProvider.getApiMessages(
          roomId: vRoom.id,
          dto: _filterDto,
        );
      },
      onSuccess: (response) {
        if (response.isEmpty) {
          _loadingStatus = LoadMoreStatus.completed;
          return null;
        }
        _loadingStatus = LoadMoreStatus.loaded;
        value.addAll(response);
        notifyListeners();
        return response;
      },
    );
  }
  _loadingStatus = LoadMoreStatus.loaded;
  value.addAll(localLoadedMessages);
  notifyListeners();
  return localLoadedMessages;
}