mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-03-15 20:26:33 +01:00
🚑 fix(export): Issue exporting Conversation with Assistants (#2769)
* 🚑 fix(export): use content as text if content is present in the message
If the endpoint is assistants, the text of the message goes into content, not message.text.
* refactor(ExportModel): TypeScript, remove unused code
---------
Co-authored-by: Yuichi Ohneda <ohneda@gmail.com>
This commit is contained in:
parent
31479d6a48
commit
53fe2f6453
7 changed files with 627 additions and 493 deletions
78
client/src/hooks/Messages/useBuildMessageTree.ts
Normal file
78
client/src/hooks/Messages/useBuildMessageTree.ts
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
import { useRecoilCallback } from 'recoil';
|
||||
import type { TMessage } from 'librechat-data-provider';
|
||||
import store from '~/store';
|
||||
|
||||
export default function useBuildMessageTree() {
|
||||
const getSiblingIdx = useRecoilCallback(
|
||||
({ snapshot }) =>
|
||||
async (messageId: string | null | undefined) =>
|
||||
await snapshot.getPromise(store.messagesSiblingIdxFamily(messageId)),
|
||||
[],
|
||||
);
|
||||
|
||||
// return an object or an array based on branches and recursive option
|
||||
// messageId is used to get siblindIdx from recoil snapshot
|
||||
const buildMessageTree = async ({
|
||||
messageId,
|
||||
message,
|
||||
messages,
|
||||
branches = false,
|
||||
recursive = false,
|
||||
}: {
|
||||
messageId: string | null | undefined;
|
||||
message: TMessage | null;
|
||||
messages: TMessage[] | null;
|
||||
branches?: boolean;
|
||||
recursive?: boolean;
|
||||
}): Promise<TMessage | TMessage[]> => {
|
||||
let children: TMessage[] = [];
|
||||
if (messages?.length) {
|
||||
if (branches) {
|
||||
for (const message of messages) {
|
||||
children.push(
|
||||
(await buildMessageTree({
|
||||
messageId: message?.messageId,
|
||||
message: message,
|
||||
messages: message?.children || [],
|
||||
branches,
|
||||
recursive,
|
||||
})) as TMessage,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
let message = messages[0];
|
||||
if (messages?.length > 1) {
|
||||
const siblingIdx = await getSiblingIdx(messageId);
|
||||
message = messages[messages.length - siblingIdx - 1];
|
||||
}
|
||||
|
||||
children = [
|
||||
(await buildMessageTree({
|
||||
messageId: message?.messageId,
|
||||
message: message,
|
||||
messages: message?.children || [],
|
||||
branches,
|
||||
recursive,
|
||||
})) as TMessage,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
if (recursive && message) {
|
||||
return { ...message, children: children };
|
||||
} else {
|
||||
let ret: TMessage[] = [];
|
||||
if (message) {
|
||||
const _message = { ...message };
|
||||
delete _message.children;
|
||||
ret = [_message];
|
||||
}
|
||||
for (const child of children) {
|
||||
ret = ret.concat(child);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
return buildMessageTree;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue