mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-26 21:28:50 +01:00
feat: build tree by convoId
This commit is contained in:
parent
5164cf46ac
commit
73449d9ec6
1 changed files with 30 additions and 12 deletions
|
|
@ -1,5 +1,7 @@
|
|||
const even = 'w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 bg-white dark:text-gray-100 group dark:bg-gray-800 hover:bg-gray-100/25 hover:text-gray-700 dark:hover:bg-[#32343e] dark:hover:text-gray-200';
|
||||
const odd = 'w-full border-b border-black/10 bg-gray-50 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-100 dark:bg-[#444654] hover:bg-gray-100/40 hover:text-gray-700 dark:hover:bg-[#3b3d49] dark:hover:text-gray-200';
|
||||
const even =
|
||||
'w-full border-b border-black/10 dark:border-gray-900/50 text-gray-800 bg-white dark:text-gray-100 group dark:bg-gray-800 hover:bg-gray-100/25 hover:text-gray-700 dark:hover:bg-[#32343e] dark:hover:text-gray-200';
|
||||
const odd =
|
||||
'w-full border-b border-black/10 bg-gray-50 dark:border-gray-900/50 text-gray-800 dark:text-gray-100 group bg-gray-100 dark:bg-[#444654] hover:bg-gray-100/40 hover:text-gray-700 dark:hover:bg-[#3b3d49] dark:hover:text-gray-200';
|
||||
|
||||
export default function buildTree(messages, groupAll = false) {
|
||||
let messageMap = {};
|
||||
|
|
@ -7,7 +9,7 @@ export default function buildTree(messages, groupAll = false) {
|
|||
|
||||
if (!groupAll) {
|
||||
// Traverse the messages array and store each element in messageMap.
|
||||
messages.forEach((message) => {
|
||||
messages.forEach(message => {
|
||||
messageMap[message.messageId] = { ...message, children: [] };
|
||||
|
||||
const parentMessage = messageMap[message.parentMessageId];
|
||||
|
|
@ -19,15 +21,31 @@ export default function buildTree(messages, groupAll = false) {
|
|||
}
|
||||
|
||||
// Group all messages into one tree
|
||||
let parentId = null;
|
||||
messages.forEach((message, i) => {
|
||||
messageMap[message.messageId] = { ...message, bg: i % 2 === 0 ? even : odd, children: [] };
|
||||
const currentMessage = messageMap[message.messageId];
|
||||
const parentMessage = messageMap[parentId];
|
||||
if (parentMessage) parentMessage.children.push(currentMessage);
|
||||
else rootMessages.push(currentMessage);
|
||||
parentId = message.messageId;
|
||||
// let parentId = null;
|
||||
// messages.forEach((message, i) => {
|
||||
// messageMap[message.messageId] = { ...message, bg: i % 2 === 0 ? even : odd, children: [] };
|
||||
// const currentMessage = messageMap[message.messageId];
|
||||
// const parentMessage = messageMap[parentId];
|
||||
// if (parentMessage) parentMessage.children.push(currentMessage);
|
||||
// else rootMessages.push(currentMessage);
|
||||
// parentId = message.messageId;
|
||||
// });
|
||||
|
||||
// return rootMessages;
|
||||
|
||||
// Group all messages by conversation
|
||||
// Traverse the messages array and store each element in messageMap.
|
||||
rootMessages = {};
|
||||
let parents = 0;
|
||||
messages.forEach(message => {
|
||||
if (message.conversationId in messageMap) {
|
||||
messageMap[message.conversationId].children.push(message);
|
||||
} else {
|
||||
messageMap[message.conversationId] = { ...message, bg: parents % 2 === 0 ? even : odd, children: [] };
|
||||
rootMessages[message.conversationId] = messageMap[message.conversationId];
|
||||
parents++;
|
||||
}
|
||||
});
|
||||
|
||||
return rootMessages;
|
||||
return Object.values(rootMessages);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue