Rev 3606 | Rev 3608 | 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 { Card, CardContent, CardHeader, Spinner } from '@shared/components';import EmptySection from '@components/UI/EmptySection';import MessageItem from './MessageItem';const MessagesList = ({ messages = [], elementRef, loading = false }) => {const messagesEndRef = useRef(null);useEffect(() => {if (messages.length > 0) {messagesEndRef.current?.scrollIntoView({behavior: 'smooth',block: 'end'});}}, [messages.length]);const handleReport = ({ url, id }) => {console.log('Reportar mensaje:', { url, id });};if (!messages.length && !loading) {return (<EmptySectionIcon={<Inbox />}message='No hay mensajes en esta conversación'align='center'/>);}return (<Card><CardHeader title='Mensajes' /><CardContent><Boxsx={{display: 'flex',maxHeight: '60dvh',flexDirection: 'column-reverse',overflow: 'auto'}}><div ref={messagesEndRef} />{messages.map((message, index) => {if (index === messages.length - 1) {return (<MessageItemelementRef={elementRef}key={message.uuid}message={message}onReport={handleReport}/>);}return <MessageItem key={message.uuid} message={message} onReport={handleReport} />;})}{loading && (<Boxsx={{display: 'flex',justifyContent: 'center',alignItems: 'center',minHeight: '60px'}}><Spinner size='small' /></Box>)}</Box></CardContent></Card>);};export default MessagesList;