loadMoreMessages method

Future<List<ChatMessage>> loadMoreMessages({
  1. required int page,
  2. int limit = 20,
  3. String searchText = "",
})

Loads more messages (pagination)

Implementation

Future<List<ChatMessage>> loadMoreMessages({
  required int page,
  int limit = 20,
  String searchText = "",
}) async {
  // Use custom handler if provided
  if (_apiHandlers?.loadMoreMessagesHandler != null) {
    try {
      final newMessages = await _apiHandlers!.loadMoreMessagesHandler!(
          page: page, limit: limit, searchText: searchText);

      // Add only non-duplicate messages
      for (var message in newMessages) {
        if (!_messages.any((m) => m.messageId == message.messageId)) {
          _messages.add(message);
        }
      }

      _triggerEvent(ChatEventType.messagesChanged, _messages);
      return newMessages;
    } catch (e) {
      _log('Error in custom loadMoreMessagesHandler: $e');
      _triggerEvent(ChatEventType.error, 'Failed to load more messages: $e');
      return [];
    }
  } else {
    return [];
  }
}