setup message population on search

This commit is contained in:
Daniel Avila 2023-03-18 18:40:53 -04:00
parent 4197a92609
commit 4e6168d8fa
5 changed files with 47 additions and 23 deletions

View file

@ -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}

View file

@ -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 = [

View file

@ -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]];
}