import { useMemo } from 'react'; import type { TMessage, Assistant, Agent } from 'librechat-data-provider'; import type { TMessageProps } from '~/common'; import MessageEndpointIcon from '../Endpoints/MessageEndpointIcon'; import ConvoIconURL from '~/components/Endpoints/ConvoIconURL'; import { getIconEndpoint } from '~/utils'; import { UserIcon } from '../svg'; export default function MessageIcon( props: Pick & { assistant?: false | Assistant; agent?: false | Agent; }, ) { const { message, conversation, assistant, agent } = props; const messageSettings = useMemo( () => ({ ...(conversation ?? {}), ...({ ...message, iconURL: message?.iconURL ?? '', } as TMessage), }), [conversation, message], ); const iconURL = messageSettings.iconURL ?? ''; let endpoint = messageSettings.endpoint; endpoint = getIconEndpoint({ endpointsConfig: undefined, iconURL, endpoint }); const assistantName = (assistant ? assistant.name : '') ?? ''; const assistantAvatar = (assistant ? assistant.metadata?.avatar : '') ?? ''; const agentName = (agent ? agent.name : '') ?? ''; const agentAvatar = (agent ? agent?.avatar?.filepath : '') ?? ''; const avatarURL = useMemo(() => { let result = ''; if (assistant) { result = assistantAvatar; } else if (agent) { result = agentAvatar; } return result; }, [assistant, agent, assistantAvatar, agentAvatar]); console.log('MessageIcon', { endpoint, iconURL, assistantName, assistantAvatar, agentName, agentAvatar, }); if (message?.isCreatedByUser !== true && iconURL && iconURL.includes('http')) { return ( ); } if (message?.isCreatedByUser === true) { return (
); } return ( ); }