import { isAssistantsEndpoint } from 'librechat-data-provider'; import type { TAssistantsMap, TConversation, TEndpointsConfig, TPreset, } from 'librechat-data-provider'; import { getEndpointField, getIconKey, getIconEndpoint } from '~/utils'; import { icons } from '~/components/Chat/Menus/Endpoints/Icons'; import ConvoIconURL from '~/components/Endpoints/ConvoIconURL'; export default function ConvoIcon({ conversation, endpointsConfig, assistantMap, className = '', containerClassName = '', context, size, }: { conversation: TConversation | TPreset | null; endpointsConfig: TEndpointsConfig; assistantMap: TAssistantsMap; containerClassName?: string; context?: 'message' | 'nav' | 'landing' | 'menu-item'; className?: string; size?: number; }) { const iconURL = conversation?.iconURL; let endpoint = conversation?.endpoint; endpoint = getIconEndpoint({ endpointsConfig, iconURL, endpoint }); const assistant = isAssistantsEndpoint(endpoint) && assistantMap?.[endpoint]?.[conversation?.assistant_id ?? '']; const assistantName = (assistant && assistant?.name) || ''; const avatar = (assistant && (assistant?.metadata?.avatar as string)) || ''; const endpointIconURL = getEndpointField(endpointsConfig, endpoint, 'iconURL'); const iconKey = getIconKey({ endpoint, endpointsConfig, endpointIconURL }); const Icon = icons[iconKey]; return ( <> {iconURL && iconURL.includes('http') ? ( ) : (
{endpoint && Icon && Icon({ size, context, className, iconURL: endpointIconURL, assistantName, endpoint, avatar, })}
)} ); }