diff --git a/client/src/routes/ChatRoute.tsx b/client/src/routes/ChatRoute.tsx index 6936bb8a8f..458c31022a 100644 --- a/client/src/routes/ChatRoute.tsx +++ b/client/src/routes/ChatRoute.tsx @@ -1,31 +1,37 @@ import { useEffect, useRef } from 'react'; import { useParams } from 'react-router-dom'; -import { useGetConvoIdQuery } from 'librechat-data-provider'; +import { useGetConvoIdQuery, useGetModelsQuery } from 'librechat-data-provider'; import ChatView from '~/components/Chat/ChatView'; import useAuthRedirect from './useAuthRedirect'; -import { useSetStorage } from '~/hooks'; +import { useNewConvo } from '~/hooks'; import store from '~/store'; export default function ChatRoute() { const index = 0; - const setStorage = useSetStorage(); const { conversationId } = useParams(); - const { conversation, setConversation } = store.useCreateConversationAtom(index); + const { conversation } = store.useCreateConversationAtom(index); const { isAuthenticated } = useAuthRedirect(); + const { newConversation } = useNewConvo(); const hasSetConversation = useRef(false); + const modelsQuery = useGetModelsQuery({ enabled: isAuthenticated }); const initialConvoQuery = useGetConvoIdQuery(conversationId ?? '', { enabled: isAuthenticated && conversationId !== 'new', }); useEffect(() => { - if (initialConvoQuery.data && !hasSetConversation.current) { - setStorage(initialConvoQuery.data); - setConversation(initialConvoQuery.data); + if (conversationId === 'new' && modelsQuery.data && !hasSetConversation.current) { + newConversation({ modelsData: modelsQuery.data }); + hasSetConversation.current = true; + } else if (initialConvoQuery.data && modelsQuery.data && !hasSetConversation.current) { + newConversation({ + template: initialConvoQuery.data, + modelsData: modelsQuery.data, + }); hasSetConversation.current = true; } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [initialConvoQuery.data]); + }, [initialConvoQuery.data, modelsQuery.data]); if (!isAuthenticated) { return null; diff --git a/client/src/routes/Root.tsx b/client/src/routes/Root.tsx index 17d01ffd22..b9dfd9cdaf 100644 --- a/client/src/routes/Root.tsx +++ b/client/src/routes/Root.tsx @@ -9,13 +9,12 @@ import { } from 'librechat-data-provider'; import type { ContextType } from '~/common'; import { Nav, MobileNav } from '~/components/Nav'; -import { useAuthContext, useServerStream, useConversation, useNewConvo } from '~/hooks'; +import { useAuthContext, useServerStream, useConversation } from '~/hooks'; import store from '~/store'; export default function Root() { const location = useLocation(); const { newConversation } = useConversation(); - const { newConversation: newConvo } = useNewConvo(); const { user, isAuthenticated } = useAuthContext(); const [navVisible, setNavVisible] = useState(() => { const savedNavVisible = localStorage.getItem('navVisible'); @@ -44,7 +43,6 @@ export default function Root() { newConversation({}, undefined, modelsQuery.data); } else if (modelsQuery.data) { setModelsConfig(modelsQuery.data); - newConvo({ modelsData: modelsQuery.data }); } else if (modelsQuery.isError) { console.error('Failed to get models', modelsQuery.error); }