| 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, |
| }); |
|
|
| |
| |
| |
| 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, |
| }; |
|
|