| import { getEndpointField, isAssistantsEndpoint } from 'librechat-data-provider'; | |
| import type { | |
| TPreset, | |
| TConversation, | |
| TAssistantsMap, | |
| TEndpointsConfig, | |
| } from 'librechat-data-provider'; | |
| import ConvoIconURL from '~/components/Endpoints/ConvoIconURL'; | |
| import MinimalIcon from '~/components/Endpoints/MinimalIcon'; | |
| import { getIconEndpoint } from '~/utils'; | |
| export default function EndpointIcon({ | |
| conversation, | |
| endpointsConfig, | |
| className = 'mr-0', | |
| assistantMap, | |
| context, | |
| }: { | |
| conversation: TConversation | TPreset | null; | |
| endpointsConfig: TEndpointsConfig; | |
| containerClassName?: string; | |
| context?: 'message' | 'nav' | 'landing' | 'menu-item'; | |
| assistantMap?: TAssistantsMap; | |
| className?: string; | |
| size?: number; | |
| }) { | |
| const convoIconURL = conversation?.iconURL ?? ''; | |
| let endpoint = conversation?.endpoint; | |
| endpoint = getIconEndpoint({ endpointsConfig, iconURL: convoIconURL, endpoint }); | |
| const endpointType = getEndpointField(endpointsConfig, endpoint, 'type'); | |
| const endpointIconURL = getEndpointField(endpointsConfig, endpoint, 'iconURL'); | |
| const assistant = isAssistantsEndpoint(endpoint) | |
| ? assistantMap?.[endpoint]?.[conversation?.assistant_id ?? ''] | |
| : null; | |
| const assistantAvatar = (assistant && (assistant.metadata?.avatar as string)) || ''; | |
| const assistantName = assistant && (assistant.name ?? ''); | |
| const iconURL = assistantAvatar || convoIconURL; | |
| if (iconURL && (iconURL.includes('http') || iconURL.startsWith('/images/'))) { | |
| return ( | |
| <ConvoIconURL | |
| iconURL={iconURL} | |
| modelLabel={conversation?.chatGptLabel ?? conversation?.modelLabel ?? ''} | |
| context={context} | |
| endpointIconURL={endpointIconURL} | |
| assistantAvatar={assistantAvatar} | |
| assistantName={assistantName ?? ''} | |
| /> | |
| ); | |
| } else { | |
| return ( | |
| <MinimalIcon | |
| size={20} | |
| iconURL={endpointIconURL} | |
| endpoint={endpoint} | |
| endpointType={endpointType} | |
| model={conversation?.model} | |
| error={false} | |
| className={className} | |
| isCreatedByUser={false} | |
| chatGptLabel={undefined} | |
| modelLabel={undefined} | |
| /> | |
| ); | |
| } | |
| } | |