Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3625 | Rev 3631 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3622 stevensc 1
import React from 'react';
3610 stevensc 2
import { Box, Typography } from '@mui/material';
3599 stevensc 3
 
3623 stevensc 4
import { useMessages } from '@inmail/hooks';
3599 stevensc 5
 
3622 stevensc 6
import {
7
  Card,
8
  CardActions,
9
  CardContent,
10
  CardHeader,
11
  List,
12
  Menu,
13
  Spinner
14
} from '@shared/components';
3610 stevensc 15
import { MessageItem } from './MessageItem';
3622 stevensc 16
import { ChatForm } from '../chat';
3610 stevensc 17
 
18
export const MessagesList = ({ conversation, onDelete, onClose }) => {
3628 stevensc 19
  const { messages, loading, messagesEndRef, elementRef, sendMessage, reportMessage } =
20
    useMessages(conversation);
3599 stevensc 21
 
3622 stevensc 22
  if (!conversation) {
23
    return <Typography sx={{ textAlign: 'center' }}>Selecciona una conversación</Typography>;
24
  }
3610 stevensc 25
 
3599 stevensc 26
  if (!messages.length && !loading) {
27
    return (
3610 stevensc 28
      <Typography sx={{ textAlign: 'center' }}>No hay mensajes en esta conversación</Typography>
3599 stevensc 29
    );
30
  }
31
 
32
  return (
3605 stevensc 33
    <Card>
3610 stevensc 34
      <CardHeader
35
        title={conversation.name}
36
        renderAction={() => (
37
          <Menu>
38
            {onDelete && <Menu.Item onClick={onDelete}>Borrar convesación</Menu.Item>}
39
            <Menu.Item onClick={onClose}>Cerrar conversación</Menu.Item>
40
          </Menu>
41
        )}
42
      />
3605 stevensc 43
      <CardContent>
3610 stevensc 44
        <List
45
          items={messages}
46
          keyExtractor={(message) => message.uuid}
47
          emptyMessage='No hay mensajes en esta conversación'
48
          renderItem={(message, index) => (
49
            <Box ref={index === messages.length - 1 ? elementRef : null}>
3628 stevensc 50
              <MessageItem message={message} onReport={(uuid) => reportMessage(uuid)} />
3605 stevensc 51
            </Box>
52
          )}
3610 stevensc 53
          renderHeader={() => <div ref={messagesEndRef} />}
3611 stevensc 54
          renderFooter={() => loading && <Spinner />}
3621 stevensc 55
          style={{ flexDirection: 'column-reverse', maxHeight: '50dvh', overflow: 'auto' }}
3610 stevensc 56
        />
3605 stevensc 57
      </CardContent>
3610 stevensc 58
 
3622 stevensc 59
      <CardActions>
3628 stevensc 60
        <ChatForm onSubmit={sendMessage} />
3622 stevensc 61
      </CardActions>
3605 stevensc 62
    </Card>
3599 stevensc 63
  );
64
};