🚑 fix(export): Export Issue with New Chat (#2777)

* 🚑 fix: re-fetch messages when exporting

* Revert "🚑 fix: re-fetch messages when exporting"

This reverts commit 693b86e955.

* 🚑 fix: use the same logic to get export data as useChatHelper

* refactor(useExportConversation): use query cache to build messages tree on request

* chore: organize imports

---------

Co-authored-by: Danny Avila <danny@librechat.ai>
This commit is contained in:
Yuichi Oneda 2024-05-28 15:10:33 -07:00 committed by GitHub
parent 40685f6eb4
commit c9e7d4ac18
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,7 +1,9 @@
import download from 'downloadjs'; import download from 'downloadjs';
import { useCallback } from 'react';
import exportFromJSON from 'export-from-json'; import exportFromJSON from 'export-from-json';
import { useGetMessagesByConvoId } from 'librechat-data-provider/react-query'; import { useQueryClient } from '@tanstack/react-query';
import { import {
QueryKeys,
ContentTypes, ContentTypes,
ToolCallTypes, ToolCallTypes,
imageGenTools, imageGenTools,
@ -16,6 +18,7 @@ import type {
import useBuildMessageTree from '~/hooks/Messages/useBuildMessageTree'; import useBuildMessageTree from '~/hooks/Messages/useBuildMessageTree';
import { useScreenshot } from '~/hooks/ScreenshotContext'; import { useScreenshot } from '~/hooks/ScreenshotContext';
import { cleanupPreset, buildTree } from '~/utils'; import { cleanupPreset, buildTree } from '~/utils';
import { useParams } from 'react-router-dom';
export default function useExportConversation({ export default function useExportConversation({
conversation, conversation,
@ -32,24 +35,25 @@ export default function useExportConversation({
exportBranches: boolean | 'indeterminate'; exportBranches: boolean | 'indeterminate';
recursive: boolean | 'indeterminate'; recursive: boolean | 'indeterminate';
}) { }) {
const queryClient = useQueryClient();
const { captureScreenshot } = useScreenshot(); const { captureScreenshot } = useScreenshot();
const buildMessageTree = useBuildMessageTree(); const buildMessageTree = useBuildMessageTree();
const { data: messagesTree = null } = useGetMessagesByConvoId(
conversation?.conversationId ?? '', const { conversationId: paramId } = useParams();
{
select: (data) => { const getMessageTree = useCallback(() => {
const dataTree = buildTree({ messages: data }); const queryParam = paramId === 'new' ? paramId : conversation?.conversationId ?? paramId ?? '';
return dataTree?.length === 0 ? null : dataTree ?? null; const messages = queryClient.getQueryData<TMessage[]>([QueryKeys.messages, queryParam]) ?? [];
}, const dataTree = buildTree({ messages });
}, return dataTree?.length === 0 ? null : dataTree ?? null;
); }, [paramId, conversation?.conversationId, queryClient]);
const getMessageText = (message: TMessage, format = 'text') => { const getMessageText = (message: TMessage, format = 'text') => {
if (!message) { if (!message) {
return ''; return '';
} }
const formatText = (sender, text) => { const formatText = (sender: string, text: string) => {
if (format === 'text') { if (format === 'text') {
return `>> ${sender}:\n${text}`; return `>> ${sender}:\n${text}`;
} }
@ -149,7 +153,7 @@ export default function useExportConversation({
const messages = await buildMessageTree({ const messages = await buildMessageTree({
messageId: conversation?.conversationId, messageId: conversation?.conversationId,
message: null, message: null,
messages: messagesTree, messages: getMessageTree(),
branches: !!exportBranches, branches: !!exportBranches,
recursive: false, recursive: false,
}); });
@ -224,7 +228,7 @@ export default function useExportConversation({
const messages = await buildMessageTree({ const messages = await buildMessageTree({
messageId: conversation?.conversationId, messageId: conversation?.conversationId,
message: null, message: null,
messages: messagesTree, messages: getMessageTree(),
branches: false, branches: false,
recursive: false, recursive: false,
}); });
@ -280,7 +284,7 @@ export default function useExportConversation({
const messages = await buildMessageTree({ const messages = await buildMessageTree({
messageId: conversation?.conversationId, messageId: conversation?.conversationId,
message: null, message: null,
messages: messagesTree, messages: getMessageTree(),
branches: false, branches: false,
recursive: false, recursive: false,
}); });
@ -332,7 +336,7 @@ export default function useExportConversation({
const messages = await buildMessageTree({ const messages = await buildMessageTree({
messageId: conversation?.conversationId, messageId: conversation?.conversationId,
message: null, message: null,
messages: messagesTree, messages: getMessageTree(),
branches: !!exportBranches, branches: !!exportBranches,
recursive: !!recursive, recursive: !!recursive,
}); });