Spaces:
reon314
/
Runtime error

File size: 1,941 Bytes
3b6afc0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { useEffect } 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);
    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, [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}
    />
  );
}