Rev 3610 | Autoría | Ultima modificación | Ver Log |
import React, { useEffect } from 'react';
import { Box } from '@mui/material';
import { Inbox } from '@mui/icons-material';
import { useNearScreen } from '@hooks';
import Message from './messages/Message';
import Spinner from '@components/UI/Spinner';
import EmptySection from '@components/UI/EmptySection';
export default function MessagesList({
messages = [],
onPagination,
onReport,
scrollRef,
loading
}) {
const [isIntercepting, ref] = useNearScreen({
once: false,
rootMargin: '0px'
});
useEffect(() => {
if (isIntercepting) {
onPagination();
}
}, [isIntercepting]);
if (!messages.length) {
return (
<EmptySection
Icon={<Inbox />}
message='No hay mensajes en esta conversación'
align='center'
/>
);
}
return (
<Box
sx={{
gap: ({ spacing }) => spacing(0.5),
display: 'flex',
flexDirection: 'column-reverse',
height: '-webkit-fill-available',
padding: ({ spacing }) => spacing(0.5, 0),
overflow: 'auto'
}}
ref={scrollRef}
>
{messages.map((message) => (
<Message
key={message.id}
message={message}
reportUrl={message.url_abuse_report}
onReport={onReport}
/>
))}
<div ref={ref}>{loading && <Spinner />}</div>
</Box>
);
}