setMessages method

void setMessages(
  1. List<ChatMessage> messages
)

Replaces all existing messages with a new list.

Implementation

void setMessages(List<ChatMessage> messages) {
  // Make a defensive copy of the messages
  _messages = List<ChatMessage>.from(messages);

  // Ensure the ordering is correct based on pagination configuration
  if (paginationConfig.reverseOrder) {
    // For reverse mode, sort by newest first
    // With ListView.builder(reverse: true), newest messages will appear at the bottom
    _messages.sort((a, b) => b.createdAt.compareTo(a.createdAt));
  } else {
    // For chronological mode, sort by oldest first
    // With ListView.builder(reverse: false), newest messages will appear at the bottom
    _messages.sort((a, b) => a.createdAt.compareTo(b.createdAt));
  }

  _messageCache = {for (var m in _messages) _getMessageId(m): m};
  _currentPage = 1;
  notifyListeners();

  // Only scroll to bottom if configured to do so
  final config = scrollBehaviorConfig;

  if (_messages.isNotEmpty && config.autoScrollBehavior != AutoScrollBehavior.never) {
    const isUserMessage = false; // Default assumption
    _scrollAfterRender(isUserMessage, false, config);
  }
}