import { Fragment } from 'react' import ScrollToBottom from 'react-scroll-to-bottom' import { InferenceEngine, MessageStatus } from '@janhq/core' import { Button } from '@janhq/uikit' import { useAtomValue } from 'jotai' import LogoMark from '@/containers/Brand/Logo/Mark' import { MainViewState } from '@/constants/screens' import { loadModelErrorAtom } from '@/hooks/useActiveModel' import { useMainViewState } from '@/hooks/useMainViewState' import ChatItem from '../ChatItem' import ErrorMessage from '../ErrorMessage' import { getCurrentChatMessagesAtom } from '@/helpers/atoms/ChatMessage.atom' import { downloadedModelsAtom } from '@/helpers/atoms/Model.atom' const ChatBody: React.FC = () => { const messages = useAtomValue(getCurrentChatMessagesAtom) const downloadedModels = useAtomValue(downloadedModelsAtom) const { setMainViewState } = useMainViewState() if (downloadedModels.length === 0) return (

Welcome!

You need to download your first model

) const showOnboardingStep = downloadedModels.filter((e) => e.engine === InferenceEngine.nitro) .length === 0 return ( {messages.length === 0 ? (
{showOnboardingStep ? ( <>

{`You don't have a local model yet.`}

) : (

How can I help you?

)}
) : ( {messages.map((message, index) => (
{(message.status !== MessageStatus.Pending || message.content.length > 0) && ( )} {(message.status === MessageStatus.Error || message.status === MessageStatus.Stopped) && index === messages.length - 1 && ( )}
))}
)}
) } export default ChatBody