Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16001 | Rev 16004 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
16003 stevensc 1
import React, { useRef, useEffect, useState } from "react";
15851 stevensc 2
import Message from "./Messages";
3
 
4
import styles from "../chat.module.scss";
5
 
16001 stevensc 6
const MessagesList = ({ messages, onIntersection, isLastPage, scrollRef }) => {
16003 stevensc 7
  const [loading, setLoading] = useState(false);
15851 stevensc 8
  const loadMoreEl = useRef();
9
 
16003 stevensc 10
  const handleIntersection = (target) => {
11
    setLoading(true);
12
    onIntersection(target);
13
  };
14
 
15851 stevensc 15
  useEffect(() => {
16003 stevensc 16
    const observer = new IntersectionObserver(handleIntersection);
15851 stevensc 17
 
18
    if (loadMoreEl.current) {
19
      observer.observe(loadMoreEl.current);
20
    }
21
 
22
    return () => {
23
      observer.disconnect();
24
    };
16003 stevensc 25
  }, []);
26
 
27
  useEffect(() => {
28
    setLoading(false);
15852 stevensc 29
  }, [messages]);
15851 stevensc 30
 
31
  return (
16001 stevensc 32
    <div className={styles.messagesContainer} ref={scrollRef}>
33
      <div className={styles.messageWrapper}>
16003 stevensc 34
        {!isLastPage && !loading && <p ref={loadMoreEl}>Cargando...</p>}
16001 stevensc 35
        {messages.map((message) => (
36
          <Message message={message} key={message.id} />
37
        ))}
38
      </div>
15851 stevensc 39
    </div>
40
  );
41
};
42
 
43
export default MessagesList;