Proyectos de Subversion LeadersLinked - Backend

Rev

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

import React, { useRef, useEffect, useState } from "react";
import Message from "./Messages";

import styles from "../chat.module.scss";

const MessagesList = ({ messages, onIntersection, isLastPage, scrollRef }) => {
  const [loading, setLoading] = useState(false);
  const loadMoreEl = useRef();

  const handleIntersection = (target) => {
    setLoading(true);
    onIntersection(target);
  };

  useEffect(() => {
    const observer = new IntersectionObserver(handleIntersection);

    if (loadMoreEl.current) {
      observer.observe(loadMoreEl.current);
    }

    return () => {
      observer.disconnect();
    };
  }, []);

  useEffect(() => {
    setLoading(false);
  }, [messages]);

  return (
    <div className={styles.messagesContainer} ref={scrollRef}>
      <div className={styles.messageWrapper}>
        {!isLastPage && !loading && <p ref={loadMoreEl}>Cargando...</p>}
        {messages.map((message) => (
          <Message message={message} key={message.id} />
        ))}
      </div>
    </div>
  );
};

export default MessagesList;