LibreChat/client/src/components/Messages/MultiMessage.jsx
Dan Orlando 7fdc862042
Build/Refactor: lint pre-commit hook and reformat repo to spec (#314)
* build/refactor: move lint/prettier packages to project root, install husky, add pre-commit hook

* refactor: reformat files

* build: put full eslintrc back with all rules
2023-05-18 14:09:31 -04:00

73 lines
1.8 KiB
JavaScript

import React, { useEffect, useState } from 'react';
import { useRecoilState } from 'recoil';
import Message from './Message';
import store from '~/store';
export default function MultiMessage({
messageId,
conversation,
messagesTree,
scrollToBottom,
currentEditId,
setCurrentEditId,
isSearchView
}) {
// const [siblingIdx, setSiblingIdx] = useState(0);
const [siblingIdx, setSiblingIdx] = useRecoilState(store.messagesSiblingIdxFamily(messageId));
const setSiblingIdxRev = (value) => {
setSiblingIdx(messagesTree?.length - value - 1);
};
useEffect(() => {
// reset siblingIdx when changes, mostly a new message is submitting.
setSiblingIdx(0);
}, [messagesTree?.length]);
// if (!messageList?.length) return null;
if (!(messagesTree && messagesTree.length)) {
return null;
}
if (siblingIdx >= messagesTree?.length) {
setSiblingIdx(0);
return null;
}
const message = messagesTree[messagesTree.length - siblingIdx - 1];
if (isSearchView)
return (
<>
{messagesTree
? messagesTree.map(message => (
<Message
key={message.messageId}
conversation={conversation}
message={message}
scrollToBottom={scrollToBottom}
currentEditId={currentEditId}
setCurrentEditId={null}
siblingIdx={1}
siblingCount={1}
setSiblingIdx={null}
/>
))
: null}
</>
);
return (
<Message
key={message.messageId}
conversation={conversation}
message={message}
scrollToBottom={scrollToBottom}
currentEditId={currentEditId}
setCurrentEditId={setCurrentEditId}
siblingIdx={messagesTree.length - siblingIdx - 1}
siblingCount={messagesTree.length}
setSiblingIdx={setSiblingIdxRev}
/>
);
}