import { useAtomValue, useSetAtom } from 'jotai' import { PanelLeftIcon, PenSquareIcon, PanelRightIcon } from 'lucide-react' import CommandListDownloadedModel from '@/containers/Layout/TopBar/CommandListDownloadedModel' import CommandSearch from '@/containers/Layout/TopBar/CommandSearch' import { MainViewState } from '@/constants/screens' import { useCreateNewThread } from '@/hooks/useCreateNewThread' import useGetAssistants, { getAssistants } from '@/hooks/useGetAssistants' import { useMainViewState } from '@/hooks/useMainViewState' import { showRightSideBarAtom } from '@/screens/Chat/Sidebar' import { activeThreadAtom } from '@/helpers/atoms/Conversation.atom' const TopBar = () => { const activeThread = useAtomValue(activeThreadAtom) const { mainViewState } = useMainViewState() const { requestCreateNewThread } = useCreateNewThread() const { assistants } = useGetAssistants() const setShowRightSideBar = useSetAtom(showRightSideBarAtom) const titleScreen = (viewStateName: MainViewState) => { switch (viewStateName) { case MainViewState.Thread: return activeThread ? activeThread?.title : 'New Thread' default: return MainViewState[viewStateName]?.replace(/([A-Z])/g, ' $1').trim() } } const onCreateConversationClick = async () => { if (assistants.length === 0) { await getAssistants().then((res) => { if (res) { if (res.length === 0) { alert('No assistant available') return } requestCreateNewThread(res[0]) } }) } else { requestCreateNewThread(assistants[0]) } } return (
{mainViewState === MainViewState.Thread && (
)}
{mainViewState === MainViewState.Thread ? (
{titleScreen(mainViewState)} {activeThread && (
setShowRightSideBar((show) => !show)} >
)}
) : (
{titleScreen(mainViewState)}
)}
) } export default TopBar