🧵 fix: Prevent Unnecessary Re-renders when Loading Chats (#5189)

* chore: typing

* chore: typing

* fix: enhance message scrolling logic to handle empty messages tree and ref checks

* fix: optimize message selection logic with useCallback for better performance

* chore: typing

* refactor: optimize icon rendering

* refactor: further optimize chat props

* fix: remove unnecessary console log in useQueryParams cleanup

* refactor: add queryClient to reset message data on new conversation initiation

* refactor: update data-testid attributes for consistency and improve code readability

* refactor: integrate queryClient to reset message data on new conversation initiation
This commit is contained in:
Danny Avila 2025-01-06 10:32:44 -05:00 committed by GitHub
parent 7987e04a2c
commit b01c744eb8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 184 additions and 88 deletions

View file

@ -42,7 +42,7 @@ export default function Message(props: TMessageProps) {
if (isCreatedByUser) {
messageLabel = 'anonymous';
} else {
messageLabel = message.sender || '';
messageLabel = message.sender ?? '';
}
return (

View file

@ -30,14 +30,15 @@ export default function MessageIcon(
[conversation, message],
);
const iconURL = messageSettings?.iconURL;
let endpoint = messageSettings?.endpoint;
const iconURL = messageSettings.iconURL ?? '';
let endpoint = messageSettings.endpoint;
endpoint = getIconEndpoint({ endpointsConfig: undefined, iconURL, endpoint });
if (!message?.isCreatedByUser && iconURL && iconURL.includes('http')) {
if (message?.isCreatedByUser !== true && iconURL && iconURL.includes('http')) {
return (
<ConvoIconURL
preset={messageSettings as typeof messageSettings & TPreset}
iconURL={iconURL}
modelLabel={messageSettings.chatGptLabel ?? messageSettings.modelLabel ?? ''}
context="message"
assistantAvatar={assistantAvatar}
assistantName={assistantName}
@ -47,7 +48,7 @@ export default function MessageIcon(
);
}
if (message?.isCreatedByUser) {
if (message?.isCreatedByUser === true) {
return (
<div
style={{
@ -67,7 +68,7 @@ export default function MessageIcon(
<MessageEndpointIcon
{...messageSettings}
endpoint={endpoint}
iconURL={!assistant ? undefined : assistantAvatar}
iconURL={assistant == null ? undefined : assistantAvatar}
model={message?.model ?? conversation?.model}
assistantName={assistantName}
agentName={agentName}