import { EModelEndpoint } from 'librechat-data-provider'; import { useGetEndpointsQuery } from 'librechat-data-provider/react-query'; import { useLocalize, useConversation, useNewConvo, useOriginNavigate, useLocalStorage, } from '~/hooks'; import { icons } from '~/components/Chat/Menus/Endpoints/Icons'; import { NewChatIcon } from '~/components/svg'; import { getEndpointField } from '~/utils'; export default function NewChat({ toggleNav, subHeaders, }: { toggleNav: () => void; subHeaders?: React.ReactNode; }) { const { newConversation: newConvo } = useNewConvo(); const { newConversation } = useConversation(); const navigate = useOriginNavigate(); const localize = useLocalize(); const { data: endpointsConfig } = useGetEndpointsQuery(); const [convo] = useLocalStorage('lastConversationSetup', { endpoint: EModelEndpoint.openAI }); const { endpoint } = convo; const endpointType = getEndpointField(endpointsConfig, endpoint, 'type'); const iconURL = getEndpointField(endpointsConfig, endpoint, 'iconURL'); const iconKey = endpointType ? 'unknown' : endpoint ?? 'unknown'; const Icon = icons[iconKey]; const clickHandler = (event: React.MouseEvent) => { if (event.button === 0 && !event.ctrlKey) { event.preventDefault(); newConvo(); newConversation(); navigate('new'); toggleNav(); } }; return (
{endpoint && Icon && Icon({ size: 41, context: 'nav', className: 'h-2/3 w-2/3', endpoint: endpoint, iconURL: iconURL, })}
{localize('com_ui_new_chat')}
{subHeaders ? subHeaders : null}
); }