UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

46 lines (38 loc) 1.45 kB
import { useCallback } from 'react'; import { useOpenChatSettings } from '@/hooks/useInterceptingRoutes'; import { useGlobalStore } from '@/store/global'; import { useSessionStore } from '@/store/session'; import { sessionSelectors } from '@/store/session/selectors'; import { MarkdownCustomRender, RenderBelowMessage, RenderMessage } from '../types'; import { AssistantMessage } from './Assistant'; import { DefaultBelowMessage, DefaultMessage } from './Default'; import { UserBelowMessage, UserMarkdownRender, UserMessage } from './User'; export const renderMessages: Record<string, RenderMessage> = { assistant: AssistantMessage, default: DefaultMessage, function: DefaultMessage, user: UserMessage, }; export const renderBelowMessages: Record<string, RenderBelowMessage> = { default: DefaultBelowMessage, user: UserBelowMessage, }; export const markdownCustomRenders: Record<string, MarkdownCustomRender> = { user: UserMarkdownRender, }; export const useAvatarsClick = (role?: string) => { const [isInbox] = useSessionStore((s) => [sessionSelectors.isInboxSession(s)]); const [toggleSystemRole] = useGlobalStore((s) => [s.toggleSystemRole]); const openChatSettings = useOpenChatSettings(); return useCallback(() => { switch (role) { case 'assistant': { if (!isInbox) { toggleSystemRole(true); } else { openChatSettings(); } } } }, [isInbox, role]); };