🚩 fix: Initialize Conversation Only when Necessary Data is Fetched (#1379)

* fix(ChatRoute): only initialize conversation after all data is fetched (models, endpoints, initialConversationQuery if not `new`)

* chore: remove unnecessary packages for rolling up api

* chore: bump data-provider package.json
This commit is contained in:
Danny Avila 2023-12-17 18:56:01 -05:00 committed by GitHub
parent 7c2134fb12
commit c9d3e0ab6a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 86 deletions

View file

@ -1,7 +1,11 @@
import { useRecoilValue } from 'recoil';
import { useEffect, useRef } from 'react';
import { useParams } from 'react-router-dom';
import { useGetConvoIdQuery, useGetModelsQuery } from 'librechat-data-provider/react-query';
import {
useGetConvoIdQuery,
useGetModelsQuery,
useGetEndpointsQuery,
} from 'librechat-data-provider/react-query';
import { useNewConvo, useConfigOverride } from '~/hooks';
import ChatView from '~/components/Chat/ChatView';
import useAuthRedirect from './useAuthRedirect';
@ -21,12 +25,23 @@ export default function ChatRoute() {
const initialConvoQuery = useGetConvoIdQuery(conversationId ?? '', {
enabled: isAuthenticated && conversationId !== 'new',
});
const endpointsQuery = useGetEndpointsQuery({ enabled: isAuthenticated && modelsQueryEnabled });
useEffect(() => {
if (conversationId === 'new' && modelsQuery.data && !hasSetConversation.current) {
if (
conversationId === 'new' &&
endpointsQuery.data &&
modelsQuery.data &&
!hasSetConversation.current
) {
newConversation({ modelsData: modelsQuery.data });
hasSetConversation.current = true;
} else if (initialConvoQuery.data && modelsQuery.data && !hasSetConversation.current) {
} else if (
initialConvoQuery.data &&
endpointsQuery.data &&
modelsQuery.data &&
!hasSetConversation.current
) {
newConversation({
template: initialConvoQuery.data,
modelsData: modelsQuery.data,
@ -34,7 +49,7 @@ export default function ChatRoute() {
hasSetConversation.current = true;
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [initialConvoQuery.data, modelsQuery.data]);
}, [initialConvoQuery.data, modelsQuery.data, endpointsQuery.data]);
if (!isAuthenticated) {
return null;