Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3619 stevensc 1
import React, { useEffect } from 'react';
2
import { Box } from '@mui/material';
3
import { Inbox } from '@mui/icons-material';
3610 stevensc 4
 
3619 stevensc 5
import { useNearScreen } from '@hooks';
3610 stevensc 6
 
3619 stevensc 7
import Message from './messages/Message';
8
import Spinner from '@components/UI/Spinner';
9
import EmptySection from '@components/UI/EmptySection';
3610 stevensc 10
 
11
export default function MessagesList({
12
  messages = [],
13
  onPagination,
14
  onReport,
15
  scrollRef,
16
  loading
17
}) {
18
  const [isIntercepting, ref] = useNearScreen({
19
    once: false,
20
    rootMargin: '0px'
3619 stevensc 21
  });
3610 stevensc 22
 
23
  useEffect(() => {
24
    if (isIntercepting) {
3619 stevensc 25
      onPagination();
3610 stevensc 26
    }
3619 stevensc 27
  }, [isIntercepting]);
3610 stevensc 28
 
29
  if (!messages.length) {
30
    return (
31
      <EmptySection
32
        Icon={<Inbox />}
33
        message='No hay mensajes en esta conversación'
34
        align='center'
35
      />
3619 stevensc 36
    );
3610 stevensc 37
  }
38
 
39
  return (
40
    <Box
41
      sx={{
42
        gap: ({ spacing }) => spacing(0.5),
43
        display: 'flex',
44
        flexDirection: 'column-reverse',
45
        height: '-webkit-fill-available',
46
        padding: ({ spacing }) => spacing(0.5, 0),
47
        overflow: 'auto'
48
      }}
49
      ref={scrollRef}
50
    >
51
      {messages.map((message) => (
52
        <Message
53
          key={message.id}
54
          message={message}
55
          reportUrl={message.url_abuse_report}
56
          onReport={onReport}
57
        />
58
      ))}
59
      <div ref={ref}>{loading && <Spinner />}</div>
60
    </Box>
3619 stevensc 61
  );
3610 stevensc 62
}