Rev 3600 | Rev 3603 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect, useRef } from 'react';import { Box } from '@mui/material';import { Inbox } from '@mui/icons-material';import { useNearScreen } from '@hooks';import { Spinner } from '@shared/components';import EmptySection from '@components/UI/EmptySection';import MessageItem from './MessageItem';const MessagesList = ({ messages = [], onLoadMore, loading = false, hasMore = false }) => {const [isIntercepting, ref] = useNearScreen({once: false,rootMargin: '100px'});const messagesEndRef = useRef(null);useEffect(() => {if (isIntercepting && onLoadMore) {onLoadMore();}}, [isIntercepting, onLoadMore]);useEffect(() => {// Scroll to bottom when new messages are addedmessagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });}, [messages]);const handleReport = ({ url, id }) => {// Aquí puedes implementar la lógica de reporteconsole.log('Reportar mensaje:', { url, id });};if (!messages.length && !loading) {return (<EmptySectionIcon={<Inbox />}message='No hay mensajes en esta conversación'align='center'/>);}return (<Boxsx={{display: 'flex',flexDirection: 'column',height: '100%',overflow: 'auto',bgcolor: 'background.paper'}}><Boxsx={{flex: 1,overflow: 'auto',display: 'flex',flexDirection: 'column-reverse',p: 1}}>{messages.map((message) => {{/* if (index === messages.length - 1) {return (<MessageItemkey={message.uuid}message={message}onReport={handleReport}ref={messagesEndRef}/>);} */}return <MessageItem key={message.uuid} message={message} onReport={handleReport} />;})}{/* Loading indicator for infinite scroll */}{hasMore && (<Box ref={ref} sx={{ display: 'flex', justifyContent: 'center', py: 2 }}><Spinner size='small' /></Box>)}</Box></Box>);};export default MessagesList;