mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-26 21:28:50 +01:00
setup message population on search
This commit is contained in:
parent
4197a92609
commit
4e6168d8fa
5 changed files with 47 additions and 23 deletions
|
|
@ -22,7 +22,7 @@ export default function Message({
|
|||
(state) => state.submit
|
||||
);
|
||||
const [abortScroll, setAbort] = useState(false);
|
||||
const { sender, text, isCreatedByUser, error, submitting } = message;
|
||||
const { sender, text, searchResult, isCreatedByUser, error, submitting } = message;
|
||||
const textEditor = useRef(null);
|
||||
const convo = useSelector((state) => state.convo);
|
||||
const last = !message?.children?.length;
|
||||
|
|
@ -159,7 +159,7 @@ export default function Message({
|
|||
<div className="flex min-h-[20px] flex-grow flex-col items-start gap-4 whitespace-pre-wrap">
|
||||
{/* <div className={`${blinker ? 'result-streaming' : ''} markdown prose dark:prose-invert light w-full break-words`}> */}
|
||||
<div className="markdown prose dark:prose-invert light w-full break-words">
|
||||
{!isCreatedByUser ? (
|
||||
{(!isCreatedByUser || searchResult) ? (
|
||||
<TextWrapper
|
||||
text={text}
|
||||
generateCursor={generateCursor}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,9 @@ const currentSlice = createSlice({
|
|||
reducers: {
|
||||
setMessages: (state, action) => {
|
||||
state.messages = action.payload;
|
||||
state.messageTree = buildTree(action.payload);
|
||||
const groupAll = action.payload[0]?.searchResult;
|
||||
if (groupAll) console.log('grouping all messages');
|
||||
state.messageTree = buildTree(action.payload, groupAll);
|
||||
},
|
||||
setEmptyMessage: (state) => {
|
||||
state.messages = [
|
||||
|
|
|
|||
|
|
@ -1,17 +1,29 @@
|
|||
export default function buildTree(messages) {
|
||||
export default function buildTree(messages, groupAll = false) {
|
||||
let messageMap = {};
|
||||
let rootMessages = [];
|
||||
|
||||
// Traverse the messages array and store each element in messageMap.
|
||||
messages.forEach(message => {
|
||||
messageMap[message.messageId] = {...message, children: []};
|
||||
if (!groupAll) {
|
||||
// Traverse the messages array and store each element in messageMap.
|
||||
messages.forEach((message) => {
|
||||
messageMap[message.messageId] = { ...message, children: [] };
|
||||
|
||||
const parentMessage = messageMap[message.parentMessageId];
|
||||
if (parentMessage)
|
||||
parentMessage.children.push(messageMap[message.messageId]);
|
||||
else
|
||||
rootMessages.push(messageMap[message.messageId]);
|
||||
const parentMessage = messageMap[message.parentMessageId];
|
||||
if (parentMessage) parentMessage.children.push(messageMap[message.messageId]);
|
||||
else rootMessages.push(messageMap[message.messageId]);
|
||||
});
|
||||
|
||||
return rootMessages;
|
||||
}
|
||||
|
||||
// Group all messages into one tree
|
||||
let parentId = messages[0].messageId;
|
||||
messages.forEach((message, i) => {
|
||||
if (i === 0) {
|
||||
messageMap[parentId] = { ...message, children: [] };
|
||||
return;
|
||||
}
|
||||
messageMap[parentId].children.push({ ...message, children: [] });
|
||||
});
|
||||
|
||||
return rootMessages;
|
||||
}
|
||||
return [messageMap[parentId]];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue