in src/components/Widget/components/Conversation/components/Messages/index.js [86:115]
componentDidUpdate(prevProps, prevState, snapshot) {
const { messages } = this.props;
const hasNewMessages = prevProps.messages.size < messages.size;
// Check if the new message is from user (client) - if so, always scroll to bottom
let isUserMessage = false;
if (hasNewMessages) {
const lastMessage = messages.last();
isUserMessage = lastMessage && lastMessage.get('sender') === 'client';
}
// Always auto-scroll if user sent a message
if (isUserMessage) {
scrollToBottom();
this.setState({ hasUnreadMessages: false });
return;
}
// Only auto-scroll if user was at the bottom before the update
if (this.wasAtBottom) {
scrollToBottom();
// Clear unread indicator if we auto-scrolled
if (this.state.hasUnreadMessages) {
this.setState({ hasUnreadMessages: false });
}
} else if (hasNewMessages) {
// User is not at bottom and new messages arrived - show unread indicator
this.setState({ hasUnreadMessages: true });
}
}