File size: 915 Bytes
9705b6c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import { atom, selector, atomFamily } from 'recoil';
import { TConversation, TMessagesAtom, TMessage } from 'librechat-data-provider';
import { buildTree } from '~/utils';
const conversation = atom<TConversation | null>({
key: 'conversation',
default: null,
});
// current messages of the conversation, must be an array
// sample structure
// [{text, sender, messageId, parentMessageId, isCreatedByUser}]
const messages = atom<TMessagesAtom>({
key: 'messages',
default: [],
});
const messagesTree = selector({
key: 'messagesTree',
get: ({ get }) => {
return buildTree(get(messages), false);
},
});
const latestMessage = atom<TMessage | null>({
key: 'latestMessage',
default: null,
});
const messagesSiblingIdxFamily = atomFamily({
key: 'messagesSiblingIdx',
default: 0,
});
export default {
messages,
conversation,
messagesTree,
latestMessage,
messagesSiblingIdxFamily,
};
|